Backward Incompatible veranderingen
Het zou dus moeten kunnen werken, maar let toch op!
Nieuwe keywords
Deze keywords mag je dus niet meer gebruiken als constante of whatever ;)
Dit zijn ze:
- exception
- catch
- try
- private
- public
- protected
- interface
- protected
- throw
- implements
- abstract
- clone
- final
- php_user_filter
Functies
Ook met bepaalde functies zijn er veranderingen.
- strrpos() en strripos() gebruiken nu een hele string als een needle:
- array_merge() accepteert nu alleen array's. voed je array_merge() toch met iets anders, dan krijg je een E_WARNING error.
- get_class(), get_parent_class() en get_class_methods() geven nu de namen van de classes terug zoals ze gedeclareert zijn(hoofdlettergevoelig) en dat kan problemen geven in oudere scripts, want daar werd de naam altijd in kleine letters terug gegeven. Heb je hier problemen mee, gebruik dan strtolower().
- ip2long() geeft nu FALSE in plaats van -1 terug als er een ongeldig IP-adres wordt doorgegeven
Andere uitzondering in PHP 5
-Ongeldig gebruik van string offsets veroorzaakt nu een E_ERROR ipv een E_WARNING, voorbeeld:
- de T_ML_COMMENT constante is nu niet meer gebruikt door de tokenizer extensie. dit wordt nu herkent als T_DOC_COMMENT
- een object zonder eigenschappen wordt nu meer als leeg gezien:
- Soms moeten classes eerst worden gedeclareert voordat ze worden gebruikt. Dat is zo als sommige nieuwe dingen van PHP 5 worden gebruikt, gebeurt dat niet, blijft het gedrag van de classe hetzelfde: