PHP upgraded regelmatig zijn software. Dit is een belangrijke stap voorwaarts in het efficienter en veiliger laten werken van programmatuur. In de nieuwere versie zijn diverse wijzigingen waardoor code en functies anders werken of reageren.

Wanneer u zelf software heeft ontwikkeld in het verleden voor een bepaalde PHP versie, kan het zijn dat u bepaalde functies gebruikt die in een nieuwere versie van PHP zijn vervallen. 

Onderstaande vindt u een overzicht met de belangrijkste wijzigen in PHP 5.5. ten opzichte van PHP 5.3.

  • Safe mode wordt niet langer ondersteund. Alle applicaties die van deze functie gebruik maken moeten worden aangepast (in termen van beveiliging).
  • Magic quotes zijn vervallen. Applicaties die gebruik maken van deze functie moeten wordengeupdate om beveiligingslekken te voorkomen. get_magic_quotes_gpc() enget_magic_quotes_runtime() geven nu altijd FALSE als antwoord. set_magic_quotes_runtime()veroorzaakt een E_CORE_ERROR level foutmelding wanneer deze Magic quote inschakelt.
  • Register_globals en register_long_arrays zijn vervallen.
  • Mbstring.script_encoding functies zijn vervallen. Gebruik zend.script_encoding in plaats van deze vervallen functies.
  • Call-time pass by reference is vervallen.
  • De break en continue  statements worden niet langer geaccepteerd als variabelen argumenten. (vb:break 1 + foo() * $bar;). Statische argumenten zoals break 2; werken nog wel. Door een bijwerking zijn break 0; en continue 0; niet langer toegestaan.
  • In de date and time extensie, kan de tijdzone niet langer worden ingesteld door gebruik te maken van de TZ variabele. In plaats daarvan dien je een tijdzone te specificeren door gebruik te maken van de date.timezone php.ini instelling of de date_default_timezone_set() functie. PHP zal niet langer de tijdzone proberen te raden en valt in plaats daarvan terug op de UTC tijdzone met een foutmeldingE_WARNING.
  • Niet numerieke strings Offsets - vb$a['foo'] waar $a een string is - geeft nu flase terug op isset(),true op empty(), en genereert een E_WARNING wannneer je de string wilt gebruiken. Offsets van het type double, bool en null produceren een E_NOTICE. Numerieke strings zoals $a['2']) werken hetzelfde als voorheen. Houdt wel rekening met het feit dat offsets zoals '12.3' en '5 foobar'  worden beschouwd als niet numeriek. Deze veroorzaken dan ook een E_WARNING, maar worden veranderd in 12 en 5 in verband met backward compatibility redenen. De volgende code geeft een ander resultaat afhankelijk van de PHP versie:  $str='abc';var_dump(isset($str['x'])); // geeft false in PHP 5.4 en later, maar true bij PHP 5.3 of lager.
  • Een array in een string veranderen resulteert in 5.4. in een E_NOTICE error, maar het resultaat zal nog steeds zijn dat er een string is met de waarde 'array'
  • NULLFALSE, of een lege string veranderen in een object door het toevoegen van een eigenschap veroorzaakt nu een E_WARNING foutmelding, in plaats van een E_strict.
  • Parameternamen die een super global schaduwen veroorzaken een fatal error. Dit voorkomt code zoals foo($_GET, $_POST) {}.
  • Salsa10 en Salsa20 hash algoritmes zijn vervallen.
  • array_combine() geeft nu array() terug in plaats van FALSE wanneer 2 lege arrays worden meegegeven als parameters.
  • Wanneer je htmlentities() gebruikt met een Asiatisch karakterset dan werkt dit als htmlspecialchars()- dit is niet anders dan in vorige versies van PHP, maar bijkomend krijg je nu een E_STRICTfoutmelding.
  • De derde parameter van ob_start() is gewijzigd van boolean erase naar integer flags. Houdt er rekening mee dat erase op FALSE zetten anders reageert in PHP 5.4. Gebruik dit voorbeeld datcompatible is met PHP 5.3 en PHP 5.5
  • PHP voor Windows XP en 2003 zijn niet langer ondersteund. Dit betekent dat je minimaal Windows Vista of nieuwer moet draaien om een webserver met PHP te kunnen hosten.
  • Hoofdlettergebruik voor functies, classes en constanten is niet langer afhankelijk van de land instellingen en wordt bepaald door de ASCII standaarden. Dit zorgt voor een betere support voor talen die gebaseerd zijn op het Latijn. Deze wijziging kan beteken dat code die gebruik maakt van hoofdletters niet langer functioneert, of anders dan bedoeld.
  • Het pack() en unpack() commando is gewijzigd, zodat deze beter aansluit bij Perl (Perl wordt overigens niet ondersteund door InternetToday).
    • pack() ondersteund nu ook "Z" format code, welke zich het zelfde gedraagt als "a".
    • unpack() ondersteund nu ook "Z" format code voor NULL padded strings en gedraagt zich hetzelfde als "a" in vorige versies: het stript gevonden NULL bytes.
    • unpack() behoud gedetecteerde ASCII NULL bytes wanneer het "a" format wordt gebruikt.
    • unpack() stript alle gedetecteerde ASCII whitespace wanneer het "A" format wordt gebruikt.
  • Voor PHP 5.5. bestonden er gevallen waarbij de selfparent en static keywords hoofdlettergevoeligwerden behandeld. Dit probleem bestaat niet langer omdat keywords altijd hoofdletter ongevoelig worden behandeld. Voorbeeld: SELF::CONTSTANT is het zelfde als self::CONSTANT.
  • PHP logo GUIDs  die voorheen resulteerde in diverse logo's zijn verwijderd uit PHP.
  • Programmeurs die extentions schrijven moeten rekening houden met het feit dat de zend_execute() functie niet langer overschreven kan worden en dat er diverse wijzigingen zijn geweest aan deexecute_data structuur en gerelateerde functies en 'method handling opcodes'. De meeste extensies zullen niet geraakt worden door deze wijziging, echter wordt aan auteurs van extensies die gebruik maken van de Zend engine aanbevolen de  release notes te lezen.

 
De volgende woorden zijn vanaf heden gereserveerd en mogen niet meer gebruikt worden als namen van functies, classes, etc.
De volgende functies zijn vervallen:
Was dit antwoord nuttig? 0 gebruikers vonden dit artikel nuttig (3 Stemmen)