PHP: Forskelle mellem versioner

Content deleted Content added
Linje 80:
 
=== Perl / CGI ===
 
== Versioner ==
==== PHP/FI ====
''Personal Home Page / Forms Interpreter'' (PHP/FI) var den første version af PHP. Det blev udviklet af Rasmus Lerdorf i 1995. I starten var det et simpelt sæt af Perl-kommandoer til at spore adgangen til hans online-CV.
 
Efterhånden som mere funktionalitet var nødvendigt lavede han en stor C-implementering, som gjorde det muligt at kommunikere med databaser og lave simple web-applikationer.
 
Rasmus Lerdorf valgte at offentliggøre kildekoden til PHP/FI, så alle kunne se og bruge den.
 
==== PHP 3 ====
[[Billede:Andi Gutmans 1.jpg|thumb|200px|Andi Gutmans]]
PHP 3.0 blev udviklet af [[Andi Gutmans]] og [[Zeev Suraski]] i 1997.
 
De blev lavet som en komplet omskrivning af PHP/FI, da PHP/FI i følge udviklerne var underdimensioneret til at lave et [[eCommerce]]-program de arbejdede på til et universitetsprojekt.
 
For at bygge på PHP/FI's eksisternede brugerbase samarbejdede Andi og Zeev med Rasmus, og offentliggjorde PHP 3.0 som den officielle efterfølger til PHP/FI.
 
PHP 3.0 blev officielt udgivet i juni 1998, efter omkring 9 måneder i offentlig test.
 
==== PHP 4 ====
I vinteren 1998 gik Andiog Zeev i gang med en omskrivning af PHP's kerne. Målet var at forbedre ydeevnen af komplekse applikationer. Den nye motor, døbt ''Zend Engine'', opfyldte målene. PHP 4.0 blev baseret på denne motor, og kombineret med en bred vifte af nye funktioner blev det udgivet i maj 2000.
 
==== PHP 5 ====
PHP 5 blev udgivet i juli 2004 efter flere års aktiv udvikling og test. Version 5 er drevet af kernen ''Zend Engine 2.0''. I PHP 5 kom der øget fokus på at forbedre [[OOP]]-delen, men der fulgte en lang række rettelser og tilføjelser, samt konventionelle modificeringer.
 
En anden markant ændring var automatisk hensyn til tidszoner, når man anvendte f.eks. <i>date</i>- og <i>strtotime-</i>funktionerne. Fra og med PHP 5 vil parametre og resultater til/fra disse funktioner være påvirket af serverens tidszone. Det betyder, at UNIX-tidspunktet "0" der i [[GMT]] tilsvarer [[1. januar]] [[1970]] kl. 00:00, på danske servere automatisk blev konverteret til kl. 01:00. På trods af denne implementering af mange blev anset som en effektivisering, opstod der mange problemer under migreringen fra PHP 4 til 5, ganske enkelt fordi mange udviklere ikke var opmærksomme på denne ændring. Altså, ville den kode de var skrevet med manuelt hensyn til tidszoner, pludselig være automatisk, og i langt størstedelen af tilfældene derfor returnere ukorrekte resultater.
 
I PHP 5.1 blev der tilføjet understøttelse af [[PDO]] (PHP Data Object), der er et objekt-orienteret, mere sikkert og mere fleksibelt alternativ til den traditionelle MySQL-implementering. Det er ydermere annonceret at grundlæggende MySQL API vil blive fjernet fra PHP. Det vil dog ske ved en langsom udfasning, da man er velvidende omkring, at det stadig er det mest anvendte API til databaseadgang. Udviklere skal derfor begynde at anvende eksempelvis PDO, [[MySQLi]] eller tilsvarende alternativer.
 
=== PHP 5.3 ===
Understøttelse af [[trait]]s i OOP.
 
Tilføjet muligheden for at lave anonyme funktioner.
 
=== PHP 5.4 ===
PHP 5.4 blev resultatet af det der skulle have været PHP 6. En af de kritiske ændringer i PHP version 5.4 har været beskyttelse mod en hacking-metode kaldt ''[[hash inject]]'', hvor data sendt til serveren, er sammensat på en sådan måde, at det vil skabe enorme mængder ekstra beregninger på serveren, når dataene skal sorteres.
 
Der er også tilføjet et ny [[typehint]]ing, ''callable''. Det betyder, at man kan påtvinge at det parameter der videregives til en funktion kan kaldes - dvs. det typisk er en funktion.
 
PHP-teamet har også indført en ny notation for arrays, på formen <i>[1, 2, 3, ...]</i>. Samtidig er det blevet muligt, at gå direkte til en nøgle i et array returneret af en funktion. Eksempler på begge dele demonstreres her:
<source lang="php">
function test() {
return ['Værdi et', 'Værdi to'];
}
echo test()[0]; // Værdi et
</source>
 
Den såkaldte "<i>error supression</i>", @-tegnet, man kan sætte foran funktioner for at de ikke skal udskrive fejlbeskeder, er blevet forbedret i sin hastighed. Oprindeligt var der tale om at udfase denne konstruktion.
 
PHP er også blevet udstyret med en indbygget webserver. Denne er dog ikke beregnet til offentligt brug, men udelukkende til at teste sin kildekode.
 
Den omstridte og infamøse <i>safe_mode</i> er blevet fjernet fuldkomment fra PHP, hvilket blev varslet flere år før annonceringen. I samme ombæring er <i>register_globals</i> og <i>register_long_arrays</i> også fjernet. <i>register_globals</i> har i mange år været til stor bekymring for sikkerheden i PHP-applikationer, da funktionen gør det nemt for uvedkommende at sende variabler med potentielt farligt indhold ind og blande sig i koden. Når <i>register_globals<I> var slået fra, eller som nu fjernet, skal programmøren selv importere udefrakommende variabler, og har derfor bedre kontrol med hvilke der kommer ind, og hvorledes de bliver valideret.
 
== Syntaks ==