PHP 5.4 ist hier; Der nächste große Schritt vorwärts seit Version 5.3 - PHP 6 (vollständige Unicode-Unterstützung) vorerst auf Eis halten. Die neuesten Verbesserungen verbessern die Eleganz erheblich und entfernen gleichzeitig die veralteten Funktionen. Dies führt zu einer drastischen Optimierung der Laufzeit (bis zu 20% mehr Geschwindigkeit und Reduzierung des Speicherverbrauchs)..
Einige der wichtigsten neuen Funktionen sind Merkmal
s, eine verkürzte Array
Syntax, ein eingebauter Webserver für Testzwecke, Verwendung von $ das
In Schließungen Zugriff der Teilnehmer auf Instantiierung, =
ist immer verfügbar und mehr!
PHP 5.4.0 verbessert die Leistung und den Speicherbedarf erheblich und behebt über 100 Fehler. Bemerkenswerte veraltete / entfernte Funktionen umfassen register_globals
, magic_quotes
(über die Zeit) und Sicherheitsmodus
. Erwähnenswert ist auch die Tatsache, dass die Multibyte-Unterstützung standardmäßig aktiviert ist default_charset
wurde von ISO-8859-1 auf UTF-8 geändert.
Inhaltstyp: Text / HTML; Zeichensatz = utf-8
wird immer gesendet; Es ist daher nicht erforderlich, dieses HTML-Meta-Tag festzulegen oder zusätzliche Header für die UTF-8-Kompatibilität zu senden.
Die beste Demonstration von Merkmalen ist, wenn mehrere Klassen dieselbe Funktionalität haben.
Eigenschaften (horizontale Wiederverwendung / Mehrfachvererbung) sind eine Reihe von Methoden, die strukturell a ähnlich sind Klasse
(kann jedoch nicht instanziiert werden), wodurch Entwickler die Möglichkeit haben, Methodensätze in mehreren unabhängigen Klassen frei zu verwenden. Da PHP eine einzige Vererbungssprache ist, kann eine Unterklasse nur von einer Superklasse erben. Hier kommen die Züge zum Spielen.
Die beste Verwendung von Merkmalen zeigt sich, wenn mehrere Klassen dieselbe Funktionalität haben. Stellen Sie sich zum Beispiel vor, wir bauen eine Website und müssen sowohl die Facebook- als auch die Twitter-APIs verwenden. Wir bauen zwei Klassen, die gemeinsam eine cURL-Wrapper-Funktion / -Methode haben. Anstatt das klassische Kopieren und Einfügen dieser Methode durchzuführen, um in zwei Klassen verwendet zu werden, verwenden wir Traits (Kopieren und Einfügen, Compiler-Stil). Auf diese Weise erstellen wir wiederverwendbaren Code und folgen dem DRY-Prinzip (Don't Repeat Yourself).
Hier ist ein Beispiel:
/ ** cURL Wrapper-Eigenschaft * / trait cURL public function curl ($ url) $ ch = curl_init (); curl_setopt ($ ch, CURLOPT_URL, $ url); curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, 1); $ output = curl_exec ($ ch); curl_close ($ ch); return $ output; / ** Twitter API-Klasse * / class Twitter_API use cURL; // benutze das Merkmal hier public Funktion get ($ url) return json_decode ($ this-> curl ('http://api.twitter.com/'.$url)); / ** Facebook API-Klasse * / class Facebook_API use cURL; // und hier die öffentliche Funktion get ($ url) return json_decode ($ this-> curl ('http://graph.facebook.com/'.$url)); $ facebook = new Facebook_API (); echo $ facebook-> get ('500058753') -> name; // Rasmus Lerdorf / ** Nun wird die Großartigkeit der PHP-5.4-Syntax * / echo (neue Facebook_API) -> get ('500058753') -> name demonstriert. // Rasmus Lerdorf $ foo = 'get'; echo (neue Facebook_API) -> $ foo ('500058753') -> Name; // und nochmal Rasmus Lerdorf-Echo (neue Twitter_API) -> get ('1 / users / show.json? screen_name = rasmus') -> name; // und noch einmal Rasmus Lerdorf // P.S. Ich bin nicht besessen von Rasmus :)
Ich habs? Nein? Hier ist das einfachste Beispiel!
trait Net public function net () return 'Net'; Merkmal Tuts öffentliche Funktion Tuts () return 'Tuts'; class NetTuts use Net, Tuts; öffentliche Funktion plus () return '+'; $ o = neue NetTuts; echo $ o-> net (), $ o-> tuts (), $ o-> plus (); echo (neue NetTuts) -> net (), (neue NetTuts) -> tuts (), (neue NetTuts) -> plus ();
Wenn Sie Fragen zu Merkmalen haben, schreiben Sie bitte eine Anmerkung in den Kommentarbereich.
Wichtiger Tipp: Die magische Konstante für Merkmale ist
__MERKMAL__
.
In der Webentwicklung ist PHP der beste Freund von Apache HTTPD Server. Manchmal kann es jedoch übertrieben sein, httpd.conf nur für die Verwendung in einer Entwicklungsumgebung einzurichten, wenn Sie wirklich einen kleinen Webserver benötigen, der mit einer einfachen Befehlszeile gestartet werden kann. Zum Glück verfügt PHP 5,4 über einen integrierten CLI-Webserver.
Der PHP-CLI-Webserver dient ausschließlich Entwicklungszwecken und sollte nicht in der Produktion verwendet werden.
Hinweis: Die folgenden Anweisungen gelten für eine Windows-Umgebung.
Gehen Sie zu Ihrer Festplatte root (vorausgesetzt, C: \
). Erstellen Sie ein Verzeichnis / einen Ordner mit dem Namen public_html
. Erstellen Sie eine neue Datei in diesem Ordner und benennen Sie sie router.php
. Kopieren Sie den folgenden Inhalt und fügen Sie ihn in die neu erstellte Datei ein.
Erstellen Sie nun eine weitere Datei mit dem Namen index.php
. Kopieren Sie den Inhalt unten und speichern Sie die Datei.
Öffne dein php.ini
Datei (sie befindet sich im PHP-Installationsverzeichnis - z. C: \ php
).
Finden Sie das include_path
Einstellungen (es befindet sich in ~ 708. Zeile). Hinzufügen C: \ public_html
bis zum Ende der Zeichenfolge zwischen Anführungszeichen, getrennt durch a Semikolon. Das Endergebnis sollte folgendermaßen aussehen:
include_path = ".; C: \ php \ PEAR; C: \ public_html"
Speichern und schließen Sie die Datei. Weiter zum nächsten Schritt.
Öffnen Sie die Eingabeaufforderung (Windows + R, eintippen cmd
, schlagen Eingeben); Sie sollten je nach Windows-Version so etwas sehen.
Microsoft Windows XP [Version 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. C: \ Documents and Settings \ nettuts>
Ändern Sie Ihr aktuelles Verzeichnis in die PHP-Installation, indem Sie dem folgenden Beispiel folgen:
C: \ Dokumente und Einstellungen \ nettuts> cd C: \ php C: \ php>
Hier kommt der wichtigste Teil - der Betrieb des Webservers. Kopieren…
php -S 0.0.0.0:8080 -t C: \ public_html router.php
… Und fügen Sie es in die Eingabeaufforderung ein (rechte Maustaste, klicken Sie auf) Einfügen
einfügen). Schlagen Eingeben
. Wenn alles gut geht, sollten Sie etwas Ähnliches sehen, wie unten gezeigt. Schließen Sie die Eingabeaufforderung nicht. In diesem Fall verlassen Sie auch den Webserver.
C: \ php> php -S 0.0.0.0:8080 -t C: \ public_html router.php PHP 5.4.0 Der Entwicklungsserver wurde am Fri Mar 02 09:36:40 2012 gestartet : \ public_html Drücken Sie zum Beenden Strg-C.
Aufmachen http: // localhost: 8080 / index.php
in Ihrem Browser und Sie sollten Folgendes sehen:
Hallo Nettuts + Leser!
Voila! Glückwunsch!!
Tipp 1: Mach ein php-server.bat
Datei mit folgendem Inhalt: C: \ php \ php -S 0.0.0.0:8080 -t C: \ public_html router.php
. Doppelklicken Sie darauf und der Server ist jetzt betriebsbereit!
Tipp 2: Benutzen 0,0,0,0
anstatt localhost
wenn Sie davon ausgehen, dass Ihr Server über das Internet erreichbar ist.
PHP 5.4 bietet ein neues Kürzel Array
Syntax:
$ fruits = Array ('Äpfel', 'Orangen', 'Bananen'); // "alter" Weg // Das gleiche wie die wörtliche Array-Notation von Javascript $ fruits = ['Äpfel', 'Orangen', 'Bananen']; // assoziatives Array $ array = ['foo' => 'bar', 'bar' => 'foo'];
Bitte beachten Sie, dass die "alte" Methode immer noch verwendet wird und immer verwendet wird. Dies ist einfach eine Alternative.
Keine temporären Variablen mehr im Umgang mit Array
s!
Stellen wir uns vor, wir wollen den zweiten Vornamen von Alan Mathison Turing abrufen:
Echo explodieren (", 'Alan Mathison Turing') [1]; // Mathison
Süss; aber es war nicht immer so einfach. Vor 5.4 mussten wir tun:
$ tmp = explodieren (", 'Alan Mathison Turing'); echo $ tmp [1]; // Mathison
Nun, was ist, wenn wir den letzten Namen erhalten möchten (letztes Element in Array
):
Echo-Ende (explodieren (", 'Alan Mathison Turing')); // Turing
Das funktioniert gut, aber es wird ein werfen E_STRICT
(Strenge Standards: Nur Variablen sollten als Referenz übergeben werden), da sie Bestandteil von wurden E_ALL
im Fehler melden
.
Hier ist ein etwas fortgeschritteneres Beispiel:
function foobar () return ['foo' => ['bar' => 'Hallo']]; echo foobar () ['foo'] ['bar']; // Hallo
$ das
In anonymen FunktionenSie können jetzt von anonymen Funktionen (auch als Verschlüsse) durch die Nutzung $ das
.
Klasse Foo Funktion Hallo () Echo 'Hallo Nettuts!'; function anonymous () return function () $ this-> hello (); // $ das war vorher nicht möglich; class Bar function __construct (Foo $ o) // Objekt der Klasse Foo typehint $ x = $ o-> anonymous (); // get Foo :: hello () $ x (); // Foo :: hello () ausführen new Bar (new Foo); // Hallo Nettuts!
Beachten Sie, dass dies vor 5.4 erreicht werden konnte, aber es war übertrieben.
Funktion anonymous () $ that = $ this; // $ das ist jetzt $ this return function () use ($ that) $ that-> hello (); ;
=
ist immer an Ungeachted der php.ini
Rahmen, short_open_tag
, =
(offenes PHP-Tag und Echo) ist immer verfügbar. Das bedeutet, dass Sie jetzt sicher verwenden können:
=$title?>
… In Ihren Vorlagen anstelle von…
Es gibt nur 0b10 Arten von Menschen;
diejenigen, die binär verstehen und diejenigen, die dies nicht verstehen.
Ganzzahlen können ab jetzt in Dezimal- (Basis 10), Hexadezimal (Basis 16), Oktal (Basis 8) oder binär (Basis 2) angegeben werden, wobei optional ein Vorzeichen (- oder +) vorangestellt werden kann. Um die oktale Schreibweise zu verwenden, stellen Sie der Zahl eine 0 (Null) voran. Um die Hexadezimal-Notation zu verwenden, stellen Sie vor der Zahl 0x ein. Um die binäre Notation zu verwenden, stellen Sie der Zahl 0b voran.
Beispiel: Darstellung der Nummer 31 (Dezimal).
Echo 0b11111; // binär, eingeführt in PHP 5.4 echo 31; // duh echo 0x1f; // hexadezimales Echo 037; // oktal
Typhinting ist für alle, die PHP zu einer stärker typisierten Sprache machen wollen. Typhinweise können nur vom Typ sein Objekt
und Array
Typ seit PHP 5.1 und abrufbar
seit PHP 5.4. Traditioneller Typ mit Andeutung int
und Schnur
wird noch nicht unterstützt.
function my_function (aufrufbare $ x) return $ x (); function my_callback_function () return 'Hallo Nettuts!'; class Hello statische Funktion hi () return 'Hello Nettuts!'; class Hi Funktion hello () return 'Hello Nettuts!' echo my_function (function () return 'Hallo Nettuts!';); // anonyme Funktion echo my_function ('my_callback_function'); // Rückruffunktion echo my_function (['Hello', 'hi'])); // Klassenname, statische Methode echo my_function ([(neues Hi), 'Hallo']); // Klassenobjekt, Methodenname
$ _SERVER ['REQUEST_TIME_FLOAT']
wurde hinzugefügt, mit einer Genauigkeit im Mikrosekundenbereich (Float). Dies ist nützlich, wenn Sie die Ausführungszeit für ein Skript berechnen müssen.
echo 'Executed in' rund (microtime (wahr)) - $ _SERVER ['REQUEST_TIME_FLOAT'], 2), 's';
__destruct ()
(oder Zusammenfassung)Insgesamt bietet PHP 5.4 zahlreiche Verbesserungen. Nun liegt es an Ihnen, sich eine neue Version von php.net zu besorgen und qualitativ hochwertigen objektorientierten PHP-Code zu erstellen!
?