objekt vyhazuje „Trying to get property of non-object“
- Neas
- Člen | 43
Ahoj,
v callbacku v acl chci kontrolovat, jestli je uživatel, který se snaží o edit, autorem daného příspěvku (typický problém). narazil jsem ale na zvláštní problém. skript mi vyhazuje chybu „Trying to get property of non-object“. skript v callbacku:
return $permission->queriedResource->author->id === Environment::getUser()->id;
experimentováním s kódem jsem zjistil, že onu chybu vyhazuje následující příkaz:
$permission->queriedResource->author->id;
$permission->queriedResource;
ještě proběhne v pořádku,
$permission->queriedResource->cokoli;
už vyhazuje onu chybu.
zvláštní ale je, že příkazy:
dump($permission->queriedResource->author->id); die;
vrátí opravdu id autora příspěvku, stejně tak:
dump(get_class($permission->queriedResource)); die;
vrátí název třídy. (bez die; opět vyhazuje chybu). hlášku absolutně
nechápu, protože $permission->queriedResource
je evidentně
objekt. nevím, jak při debugu dále postupovat :(
verze nette: 2.0.10
verze php: 5.4.7
- Jan Tvrdík
- Nette guru | 2595
hlášku absolutně nechápu, protože
$permission->queriedResource
je evidentně objekt.
Zvláštní, já tvrdím opak =) Hláška říká, že to není objekt tak to
není objekt. Když vyhodíš volání die
, tak si všimneš, že
se tam časem ten non-object (pravděpodobně null) dostane.
- Neas
- Člen | 43
už jsem na to přišel. bylo to jak tvrdíš, tahle část skriptu se vykonávala 2× a napodruhé se jednalo o null. vím, že kontrola přístupu by se měla provádět za skript jen jednou, tohle bylo nedopatření způsobené tím, že jsem původní skript několik měsíců neviděl. už opraveno, díky.