Trying to get property of non-object in file.php:169

Salutare,

La un moment dat probabil mulți v-ați întâlnit cu eroarea asta, dar mă întreb dacă există vreo metodă prin care să identific cu ușurință care este acel non-object, ținând cont că pe linia respectivă am mai multe variabile care (teoretic) sunt obiecte.

if (property-exists($object, ‘prop’) && $object->prop) ?

Pui fiecare condiție pe linia sa?

What’s the point of the question?

@RedGuard excluzând varianta în care verific fiecare variabilă în parte.

Mi se pare util ca în error_log să apară și variabila care nu este de tip obiect și generează eroarea respectivă.

Multe chestii în PHP ar fi utile dacă ar fi implementate. Dar nu sunt, așa că stop bitchin’ and write robust and fast apps.

Jeezăs! Și eu lucrez la niște chestii atât de banale că-mi pică ochii în gură de plictiseală (și îmi ocup timpul scriind pe devforum), dar chiar atât de leneși am ajuns? Să ne trebuiească să ni se zică totul mură-n-gură?

@RedGuard multumesc pentru deranj.

Poate că nu am fost foarte explicit când am pus întrebarea și am uitat să menținez faptul că cititnd în error_log am găsit eroarea respecpectivă. Sub linia cu eroarea apare un stack trace de 50 linii care nu-mi folosesc la mare lucru pentru a identifica rapid care este variabila care a generat eroarea, lucrul pe care eu îl consider mai important.

PS: mi se pare că ești malițios fără motiv. Am pus o întrebare dacă există sau nu o soluție pentru un lucru pe care nu l-am aflat singur, nu am cerut nimănui să facă debug-ing în locul meu.

Spor!

@stl vezi discuția de aici, s-ar putea să fie chiar ce ai tu nevoie (deși nu înțeleg dacă asta e o problemă generică sau fix în file.php-ul tău - orice ar fi în el).

Fără un exemplu concret, întrebarea ta nu poate primi un răspuns altfel decât vag.


@RedGuard îți înțeleg supărarea, dar hai să nu plecăm de la premisa că toți suntem la nivelul tău sau mai sus.

1 Like

Like I said, I’m bored. Plus că întrebarea era destul de nostimă: Am 3 variabile, una nu e setată, toate sunt pe aceeași linie, cum aflu care e din alea 3?

Aș fi mers pe idea: Have you tried turning it off and on? Lol. Asta m-ar fi amuzat.

Cum am mai zis, am pus greșit întrebarea. Speram să pot face ceva astfel încât în error_log să-mi scrie și variabila care a generat eroarea, ceva de genul:

ErrorException: Trying to get property of non-object (*Dummy_variable*) in generic_file.php:line

Înțeleg că nu se poate. Mulțumesc!

Trebuie să modifici cu try catch fiecare variabilă în parte (vezi ceva tool pentru testare)

Cam fortat, insa ai putea incerca cu debug backtrace, in combinatie cu try/catch sau custom error handler.

Am facut un mic test cu php 5.6, si vedeam variabilele in cauza prin backtrace.

După cum a zis și @msd debug backtrace ajută.
Eu am ocolit problema prin modul în care scriu cod. Mai apelez și eu metode pe obiecte inexistente dar e destul de evident când arunc o privire peste cod de unde a venit (cred că ajută și experiența).

2 Likes
  1. este property_exists , sa zicem ca este un typo, dar in PHP nu poti avea - in numele unei functii PHP: User-defined functions - Manual
  2. titlul este trying to get property of non-object… ceea ce inseamna ca poate $object ala este string, si acum sa vedem ce primeste property_exists ca prim parametru “The class name or an object of the class to test for”
<?php
class A {
    public $x = 'a';
}
$a = 'A';
if (property_exists($a, 'x') && $a->x) { }

Ghici ce Notice: Trying to get property of non-object este eroarea data la codul asta. Nu inteleg de unde atata aroganta in raspunsurile tale.

3 Likes

Cum naiba ai reușit să folosești „_”?

property_exists();

La mine dispărea fiindcă „_” e folosit ca semn pentru italic.

Totodată, știm cu toții de lipsurile pe care le-am lăsat dinadins.