Static keyword (vanaf PHP 5.3?)
Bekijk dit stukje script:
Code (php)
In PHP 5 krijg je nu te zien: foobar
In PHP 6 krijg je nu te zien:
Code (php)
1
Strict Standards: Non-static method Foo::foobar() should not be called statically in C:\server\www6\testje.php on line 10
Je probeert hier namelijk de method foobar() statisch aan te roepen met ::. Dat mag niet, want het is geen statische functie.
Zoals je ziet is PHP 6 in alles stricter geworden, dat is postief!
__callStatic()
Dit wordt de nieuwe magic method die hetzelfde werkt als __call alleen dan voor static methods.
Late static binding
In PHP 5.2 en lager heb je het volgende vervelende probleem. Bekijk dit script:
Code (php)
Je zou nu willen dat B het antwoord is, want self::wiebenik() zou de function in B moeten aanroepen, want die overschrijft A. Maar dit script geeft echter A als output.
Vanaf PHP 5.3 heb je hier een oplossing voor, namelijk static::wiebenik().
Code (php)
Zo kun je dus ook bij een static function de echte class krijgen. Normaal is dat een probleem omdat static bij het compileren anders werkt.
Bedankt Jelmer voor de hint
Al deze wijzigingen worden mogelijk in PHP 5.3 al geintroduceerd.
Inhoudsopgave
- Installatie PHP 6 naast PHP 5
- Inleiding
- Bye@ Register_globals, magic_quotes, mysql_query()
- Namespaces (vanaf PHP 5.3)
- Label en goto
- Verkorte ifsetor() (vanaf PHP 5.3)
- Static keyword (vanaf PHP 5.3?)