Cannot write to an undeclared property Nette\Reflection\Method::$class

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
igor.pocta
Člen | 100
+
+2
-

Ahoj,

Nette mi začalo zničehonic na všech aplikacích vyhazovat tuto chybu. Stalo se mi to již nekolikrát a vždy pomohl až restart Apache serveru. Zkoušel jsem promazat cache i tmp adresář pro celý Apachea nepomohlo to.

Jedu na XAMPP / Windows.

Odkaz na Trasy soubor: http://files.uloziste.com/…$class..html

David Grudl
Nette Core | 8218
+
+2
-

Zažil jsem to taky a pomohl restart Apache. Tohle bude nějaká těžko odhalitelná chyba v PHP.

uestla
Backer | 799
+
0
-

Také se mi to stává a je to dost nepříjemné, děje se mi to od upgradu na PHP7 (Windows 7).

Myslel jsem, že byl nějaký segfault v nativním PHP reflection (měl jsem dojem, že jsem to četl v Release notes, ale teď už jsem to nenašel).

Nicméně děje se mi to i v PHP 7.0.13 :-(


EDIT: Jelikož se to objevuje tak nějak nevyzpytatelně, je těžké to zkoumat.

Hlavní indicie je ale myslím to, že Nette\Reflection\Method dědí od \ReflectionMethod.

Ta v konstruktoru přiřazuje do property $class, která evidentně není definovaná a SmartObject ho seřve. Možná by pomohlo přidat k Nette třídě anotaci @property string $class …


EDIT 2: Bohužel přímo v kódu PHP se nevyznám, ale našel jsem tohle, což volá “základní” zapsání property třídy – což tedy v normálním PHP chybu nevyvolá.


EDIT 3: Zvláštností ale zůstává, proč se tohle děje jen někdy, a jakto, že restart Apache pomůže…

uestla
Backer | 799
+
0
-

Zkoušel jsem přidat anotace $class a $name na potřebné třídy nette/reflection, to bohužel nepomohlo – fungovalo až odebrání SmartObject traity :-/

filsedla
Člen | 101
+
0
-

Pozoroval jsem taky podobnou chybu najednou bez příčiny na PHP 7.0.15 (XAMPP) ve formě
Nette\MemberAccessException
Cannot write to a read-only property Nette\Reflection\Property::$name

Restart Apache pomůže.