remove - strip_tags php ejemplo
Llamada a una funciĆ³n miembro en un objeto no (8)
Hay una manera fácil de producir este error:
$joe = null;
$joe->anything();
Presentará el error:
Error grave: llamar a un miembro funciona
anything()
en un no objeto en /Applications/XAMPP/xamppfiles/htdocs/casMail/dao/server.php en la línea 23
Sería mucho mejor si PHP dijera simplemente,
Error fatal: la llamada de Joe no está definida porque (a) joe es nulo o (b) joe no define
anything()
en línea <##>.
Por lo general, tienes que compilar tu clase para que $joe
no esté definido en el constructor o
Esta pregunta ya tiene una respuesta aquí:
- Referencia - ¿Qué significa este error en PHP? 30 respuestas
Así que estoy refacturando mi código para implementar más OOP. Configuré una clase para mantener los atributos de página.
class PageAtrributes
{
private $db_connection;
private $page_title;
public function __construct($db_connection)
{
$this->db_connection = $db_connection;
$this->page_title = '''';
}
public function get_page_title()
{
return $this->page_title;
}
public function set_page_title($page_title)
{
$this->page_title = $page_title;
}
}
Más tarde llamo a la función set_page_title () como tal
function page_properties($objPortal) {
$objPage->set_page_title($myrow[''title'']);
}
Cuando lo hago, recibo el mensaje de error:
Llamada a una función miembro set_page_title () en un objeto no objeto
Entonces, ¿qué me estoy perdiendo?
Me di cuenta de que no estaba pasando $ objPage en page_properties () . Funciona bien ahora.
O $objPage
no es una variable de instancia O está sobrescribiendo $objPage
con algo que no es una instancia de la clase PageAttributes
.
Recomiendo la respuesta aceptada arriba. Sin embargo, si está en apuros, podría declarar el objeto como global dentro de la función page_properties .
$objPage = new PageAtrributes;
function page_properties() {
global $objPage;
$objPage->set_page_title($myrow[''title'']);
}
Significa que $objPage
no es una instancia de un objeto. ¿Podemos ver el código que utilizó para inicializar la variable?
Como espera un tipo de objeto específico, también puede hacer uso de la función de escritura de tipo de documento de PHP para obtener el error cuando se infringe su lógica:
function page_properties(PageAtrributes $objPortal) {
...
$objPage->set_page_title($myrow[''title'']);
}
Esta función solo aceptará PageAtrributes
para el primer parámetro.
También podría significar que cuando inicializó su objeto, puede haber reutilizado el nombre del objeto en otra parte de su código. Por lo tanto, cambiar su aspecto de un objeto a una variable estándar.
ES DECIR
$game = new game;
$game->doGameStuff($gameReturn);
foreach($gameArray as $game)
{
$game[''STUFF'']; // No longer an object and is now a standard variable pointer for $game.
}
$game->doGameStuff($gameReturn); // Wont work because $game is declared as a standard variable. You need to be careful when using common variable names and were they are declared in your code.
puede usar ''usar'' en la función como ejemplo a continuación
function page_properties($objPortal) use($objPage){
$objPage->set_page_title($myrow[''title'']);
}
function page_properties($objPortal) {
$objPage->set_page_title($myrow[''title'']);
}
se ve como diferentes nombres de variables $ objPortal vs $ objPage