Zie dit codevoorbeeld: http://3v4l.org/XcH5I

Waarom komt er geen melding als ik een statische functie op een niet-statische manier aanroep?

Als ik een array-key opvraag die niet bestaat, volgt er een notice dus error reporting staat aan.

Ik zou verwachten dat je een statische functie altijd statisch moet aanroepen??
Omdat PHP nou eenmaal zou werkt...

Iets uitgebreider, statische functies kun je in PHP als instance functies aanroepen, maar instance functies niet als statische functies.
Aha, oké... dat wist ik niet.

Dus om te voorkomen dat ik (per ongeluk) een statische class ga initialiseren, is dus de enige oplossing om een private constructor te maken?
Waarom zou je dat niet willen? Ga niet je hele applicatie dicht bouwen...

"A common mistake that people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools." -Douglas Adams
Ik snap wat je bedoelt. Maar ik maak dus bewust een statische class, met als bedoeling dat die altijd statisch wordt aangeroepen. En dan blijkt dat je 'm gewoon kunt instantiëren en vanuit de instance de statische functies kunt aanroepen. Dat vind ik maar vaag :(
Statische klassen bestaan niet in PHP.
Hoe bedoel je Wouter? Een class met alleen statische methods is toch een statische class (eventueel met private constructor)?
>> Hoe bedoel je Wouter? Een class met alleen statische methods is toch een statische class (eventueel met private constructor)?

Nee, dan heb je alsnog een normale class, maar dan met statische methods. Als PHP wel statische klassen had, dan had ie wel betere gesupport gehad voor bijv. het initializen van de statische klasse.
Ah oké... ik heb een autoloader die "statische" classes kan initialiseren :)
Dan doet jouw autoloader veel meer dan loaden...

Reageren