Nachdem Sie diesen Artikel gelesen haben, werden Sie verstehen, warum die inländische PHP-Umgebung und ThinkPHP PHP5.3 oder höher verwenden.
Derzeit (2014.2) ist die neueste stabile Version von PHP PHP5.5,
Aber fast die Hälfte der Benutzer verwendet immer noch PHP5.2, das nicht mehr gepflegt wird [Anmerkung], und die verbleibende Hälfte der Benutzer verwendet PHP5.3 [Anmerkung]
Weil PHP es ist „Die beste unter Hunderten von Denkschulen“ „Lange“ Syntax ist schmerzhaft und die Community-Atmosphäre ist nicht gut. Viele Leute haben kein Interesse an der neuen Version und den neuen Funktionen. In diesem Artikel werden die neuen Funktionen vorgestellt, die in PHP5.2 bis PHP5.6 hinzugefügt wurden. PHP5.2 Vorher: Autoload, PDO und MySQLi, Typbeschränkungen
PHP5.2: JSON-Unterstützung
PHP5.3: veraltete Funktionen, anonyme Funktionen, neue magische Methoden, Namespaces, späte statische Bindung, Heredoc und Nowdoc, const, ternärer Operator, Phar
PHP5.4: Short Open Tag, Array-Abkürzung, Eigenschaften, integrierter Webserver, detaillierte Änderungen PHP5.5: yield, list() wird für foreach, detaillierte Änderungen verwendet
PHP5.6: Konstante Erweiterung, variable Funktionsparameter, Namespace-Erweiterung
Hinweis: Gestoppt Support im Januar 2011: http://www.php.net/eol.phpHinweis: http://w3techs .com/technologies/details/pl-php /5/alle
Vor PHP5.2(vor 2006)Lassen Sie mich übrigens die Funktionen von PHP5.2 vorstellen, die bereits erschienen sind, aber eine Einführung wert sind. autoloadJeder kennt vielleicht die Funktion __autoload(). Wenn diese Funktion definiert ist, wird die Funktion aufgerufen, wenn eine undefinierte Klasse im Code verwendet wird Laden Sie die entsprechende Klassenimplementierungsdatei in diese Funktion, z. B.:
-
function __autoload($ Klassenname) {
-
require_once("{$ Klassenname}.php")
-
}
Code kopieren
Aber diese Funktion wird nicht mehr empfohlen, da es in einem Projekt nur eine solche __autoload()-Funktion geben kann, da PHP keine Funktionen mit doppelten Namen zulässt. Wenn Sie jedoch einige Klassenbibliotheken verwenden, benötigen Sie zwangsläufig mehrere Autoload-Funktionen. Daher ersetzt spl_autoload_register() diese durch:
-
spl_autoload_register(Funktion($classname)
-
{
-
require_once("{$classname}.php")
-
});
Code kopieren
spl_autoload_register() registriert eine Funktion in der Autoload-Funktionsliste, wenn eine undefinierte Klasse auftritt , SPL [Hinweis] ruft die registrierten Autoload-Funktionen einzeln in umgekehrter Reihenfolge der Registrierung auf, was bedeutet, dass Sie spl_autoload_register() verwenden können, um mehrere Autoloads zu registrieren
Funktion.Hinweis: SPL: Standard-PHP-Bibliothek, Standard-PHP-Bibliothek, wurde entwickelt, um einige klassische Probleme (z. B. Datenstruktur) zu lösen.PDO und MySQLiDas heißt, PHP Data Object, PHP-Datenobjekt, die neue Datenbankzugriffsschnittstelle von PHP. Nach dem traditionellen Stil sollte der Zugriff auf die MySQL-Datenbank wie folgt aussehen:
- // Stellen Sie eine Verbindung zum Server her und wählen Sie die Datenbank aus
-
$conn = mysql_connect("localhost", "Benutzer", "Passwort");
- mysql_select_db("database");
-
// SQL-Abfrage ausführen
-
$type = $_POST['type'];
-
$sql = " SELECT * FROM `table` WHERE `type` = {$type}";
-
$result = mysql_query($sql);
-
//Ergebnisse drucken
-
while($row = mysql_fetch_array($result, MYSQL_ASSOC))
-
{
-
foreach($row as $k => $v)
-
drucken "{$k}: {$v}n";
- }
- // Geben Sie die Ergebnismenge frei und schließen Sie die Verbindung
- mysql_free_result($result);
- mysql_close ($conn);
Code kopierenUm die Codedatenbank unabhängig zu machen, d. h. ein Teil des Codes ist auf mehrere Datenbanken gleichzeitig anwendbar (der obige Code ist beispielsweise nur auf MySQL anwendbar), hat PHP offiziell PDO entwickelt Darüber hinaus bietet PDO auch weitere Funktionen, wie zum Beispiel: ?Objektorientierte Stilschnittstelle?SQL-Vorkompilierung (Vorbereitung), Platzhalter Syntax?Höhere Ausführungseffizienz, als offizielle Empfehlung, mit spezieller Leistungsoptimierung?Unterstützt die meisten SQL-Datenbanken, beim Ändern der Datenbank muss der Code nicht geändert werdenDer oben mit PDO implementierte Code sieht folgendermaßen aus:
- // Mit der Datenbank verbinden
- $conn = new PDO("mysql:host=localhost ;dbname=database" , "user", "password");
- // Vorkompiliertes SQL, Bindungsparameter
- $query = $conn->prepare("SELECT * FROM `table` WHERE `type` = :type");
- $query-> bindParam("type", $_POST['type']);
- // Führen Sie die Abfrage aus und drucken Sie sie aus die Ergebnisse
- foreach($query->ausführen() als $row)
- {
- foreach($row as $k => $v)
- >"{$k}: { $v}n"; }
-
Code kopierenPDO wird offiziell empfohlen und ist eine allgemeinere Datenbankzugriffsmethode. Wenn Sie keine besonderen Anforderungen haben, sollten Sie PDO besser erlernen und verwenden.
Aber wenn Sie Wenn Sie erweiterte, für MySQL einzigartige Funktionen verwenden müssen, sollten Sie MySQLi ausprobieren, da PDO diese einzigartigen Funktionen von MySQL nicht enthält, um auf mehreren Datenbanken gleichzeitig verwendet werden zu können.
MySQLi ist eine erweiterte Schnittstelle für MySQL, die sowohl prozessorientierte als auch objektorientierte Schnittstellen bietet. Es ist auch der derzeit empfohlene MySQL-Treiber. Die alte MySQL-Schnittstelle im C-Stil wird geschlossen standardmäßig in der Zukunft. Im Vergleich zu den beiden oben genannten Codeteilen gibt es bei der Verwendung von MySQLi nicht viele neue Konzepte. Sie können sich hier auf die offizielle PHP-Website-Dokumentation beziehen. Hinweis: http://www.php.net/manual/en/mysqli.quickstart.php
TypbeschränkungenDer Typ der Parameter kann durch Typeinschränkungen eingeschränkt werden, aber dieser Mechanismus ist derzeit nicht perfekt für Klassen, aufrufbare (ausführbare Typen) und Arrays (Arrays) und gilt nicht für String und Int.
- // Beschränken Sie den ersten Parameter auf MyClass, den zweiten Parameter auf den ausführbaren Typ und den dritten Parameter auf das Array
-
Funktion MyFunction(MyClass $a, Callable $b, Array $c)
-
{
-
// ...
-
}
Code kopieren
PHP5.2
(2006-2011)JSON unterstützt einschließlich json_encode(), json_decode() und anderen Funktionen ist JSON ein sehr häufig verwendetes Datenaustauschformat im Webbereich und kann direkt von JS unterstützt werden. JSON ist tatsächlich Teil der JS-Syntax. Funktionen der JSON-Serie können Array-Strukturen in PHP in JSON-Strings konvertieren:
-
$array = array ("key" => "value", "array" => array( 1, 2, 3 , 4));
-
$json = json_encode($array);
-
echo "{ $json}n" ;
-
$object =json_decode ($json);
-
print_r($object);
Code kopieren
Ausgabe:
-
{ "key":"value","array": [1,2,3,4 ]}
-
stdClass Object
-
(
-
[Schlüssel] => Wert
-
[Array] => Array
-
[0
]-
=> 1 [1
]-
=> 2 [2
]-
= > 3 > =>
- 4 > )Code kopierenEs ist erwähnenswert, dass json_decode() standardmäßig ein Objekt und kein Array zurückgibt Array müssen Sie den zweiten Parameter auf true setzen.
- PHP5.3(2009-2012)PHP5.3 ist ein sehr großes Update, das viele neue Funktionen hinzufügt und auch einige Änderungen vorgenommen hat, die nicht abwärtskompatibel sind. Veraltete FunktionenDie folgenden Funktionen sind veraltet, wenn sie in der Konfigurationsdatei aktiviert sind. Globale Variablen registrierenDies ist eine Option in php.ini (register_globals). Wenn diese Option aktiviert ist, werden alle Formularvariablen ($_GET und $_POST) als globale Variablen registriert. Sehen Sie sich das folgende Beispiel an:
-
if(isAuth())
-
$authorized = true;
-
if($authorized)
-
include( "page.php");
Code kopieren
Dieser Code wird übergeben Überprüfen Sie, ob $authorized auf true gesetzt ist. Entscheiden Sie dann, ob die Seite basierend auf dem Wert von $authorized angezeigt werden soll. Da $authorized jedoch nicht im Voraus auf false initialisiert wird, ist dies bei register_globals der Fall Wenn es aktiviert ist, kann es /auth.php?authorized=1 besuchen, um den Wert dieser Variablen zu definieren und die Authentifizierung zu umgehen. Diese Funktion ist ein historisches Problem und wurde in PHP4.2 standardmäßig deaktiviert und in PHP5.4 entfernt. Magic Quotes entspricht der Option magic_quotes_gpc in php.ini. Diese Funktion ist ebenfalls ein historisches Problem und wurde in PHP5.4 entfernt. Diese Funktion maskiert alle Benutzereingaben, was gut aussieht. Wir haben das Maskieren von Benutzereingaben in Kapitel 1 erwähnt. Aber PHP weiß nicht, welche Eingaben in SQL gehen, welche Eingaben in Shell gehen und welche Eingaben als HTML angezeigt werden, daher führt dieses Escape oft zu Verwirrung. Abgesicherter ModusViele Webhosting-Anbieter verwenden den abgesicherten Modus, um mehrere Benutzer zu isolieren, aber der abgesicherte Modus weist viele Probleme auf. Beispielsweise steuern einige Erweiterungen die Berechtigungen nicht gemäß dem abgesicherten Modus. PHP empfiehlt offiziell die Verwendung des Betriebssystemmechanismus zur Berechtigungsisolierung, damit der Webserver den PHP-Interpreter mit unterschiedlichen Benutzerberechtigungen ausführen kann. Bitte beachten Sie das Prinzip der geringsten Rechte in Kapitel 1. Anonyme Funktion Auch Abschlüsse genannt, werden sie häufig verwendet, um vorübergehend eine unbenannte Funktion für Rückruffunktionen und andere Zwecke zu erstellen.
-
$func = function($arg)
-
{
-
$arg;
};-
- $func
(-
"Hello World");Code kopieren
Der obige Code definiert eine anonyme Funktion und weist es $func zu.
Sie können sehen, dass das Funktionsschlüsselwort weiterhin zum Definieren anonymer Funktionen verwendet wird, der Funktionsname jedoch weggelassen wird und direkt die Parameterliste ist. Dann rufen wir die in $func gespeicherte anonyme Funktion auf. Anonyme Funktionen können auch das Schlüsselwort use verwenden, um externe Variablen zu erfassen: function arrayPlus-
($array, $num)
{-
array_walk
(-
$array, Funktion(&$v) use($num ){ $v
+=-
$num;
});-
}-
Kopieren Sie den Code
Der obige Code definiert eine arrayPlus()-Funktion (dies ist keine anonyme Funktion), die eine bestimmte Zahl ( $num) hinzufügt.
In der Implementierung von arrayPlus() verwenden wir die Funktion array_walk(), die eine Rückruffunktion für jedes Element eines Arrays ausführt, was wir als anonyme Funktion definiert haben. Nach der Parameterliste der anonymen Funktion verwenden wir das Schlüsselwort use, um $num außerhalb der anonymen Funktion in der Funktion zu erfassen, damit wir wissen, wie viel hinzugefügt werden soll. Magische Methoden: __invoke(), __callStatic()Das objektorientierte System von PHP bietet mehrere „magische Methoden“, um ein „Überladen“ ähnlich dem in anderen Sprachen zu implementieren, z. B. das Auslösen einer magischen Methode beim Zugriff auf nicht vorhandene Eigenschaften oder Methoden. Mit der Hinzufügung anonymer Funktionen führt PHP eine neue magische Methode __invoke() ein.Diese magische Methode verwendet ein Objekt als Aufruf, wenn die Funktion ausgeführt wird heißt:
-
KlasseA
-
{
-
public function __invoke($str)
-
{
-
drucken "A::__invoke(): {$str}";
-
}
-
}
-
$a = neuA;
-
$a("Hallo Welt");
Code kopieren
Die Ausgabe lautet zweifellos: - A::__invoke(): Hallo Welt
Code kopieren
__callStatic() wird aufgerufen, wenn eine nicht vorhandene statische Methode aufgerufen wird. NamespaceDer Namespace von PHP hat eine äußerst schmerzhafte Syntax, die beispiellos und beispiellos ist:
- php
- // Das Trennzeichen des Namespace ist ein Backslash und die Deklarationsanweisung muss in der ersten Zeile der Datei stehen.
- // Der Namespace kann beliebigen Code enthalten, aber nur **Klassen, Funktionen und Konstanten** sind vom Namespace betroffen.
- Namespace XXOOTest;
- // Der vollständig qualifizierte Name dieser Klasse ist XXOOTestA, wobei der erste Backslash den globalen Namespace darstellt.
- KlasseA{}
- // Sie können auch einen zweiten Namespace in der vorhandenen Datei definieren, und der nächste Code befindet sich in OtherTest2.
- Namespace AndereTest2;
-
- // Objekte aus anderen Namespaces instanziieren:
- $a = neu XXOOTestA;
- Klasse B {}
- // Sie können auch geschweifte Klammern verwenden, um den dritten Namespace zu definieren
- Namespace Andere
- // Objekte aus Sub-Namespaces instanziieren: $b
- = new Test2B;
-
- // Namen aus anderen Namespaces importieren und umbenennen,
- // Beachten Sie, dass nur Klassen importiert werden können, keine Funktionen und Konstanten.
- verwenden XXOOTestA als KlasseA
- }
Code kopieren
Weitere Syntaxeinführungen zu Namespaces finden Sie auf der offiziellen Website [Hinweis].Namespaces werden oft zusammen mit Autoload verwendet, um Klassenimplementierungsdateien automatisch zu laden: - spl_autoload_register(
- >$class) { spl_autoload(str_replace
- ("\", "/", $class)); 🎜>);
Code kopieren- Wenn Sie eine Klasse XXOOTestA instanziieren, lautet der vollständig qualifizierte Name der Klasse Wird die Datei an die Autoload-Funktion übergeben, ersetzt die Autoload-Funktion das Namespace-Trennzeichen (Backslash) im Klassennamen durch einen Schrägstrich und schließt die entsprechende Datei ein.
Dies ermöglicht die hierarchische Speicherung von Klassendefinitionsdateien und das automatische Laden bei Bedarf. - Hinweis: http://www.php.net/manual/zh/sprache.namespaces.php
Späte statische Bindung
Der OPP-Mechanismus von PHP verfügt über Vererbung und virtuelle funktionsähnliche Funktionen, wie zum Beispiel den folgenden Code:
Klasse A {
- öffentlich Funktion
- callFuncXXOO()
- 🎜>print $this-> ;funcXXOO();
- }
- >function funcXXOO() >return
- "A::funcXXOO()";
-
- } }
- KlasseB
- erweitertA {
- öffentlich
- Funktion funcXXOO()
-
- { zurück "B::funcXXOO"
- ;
- } >$b =
- neuB;
- $b->callFuncXXOO ();
- Code kopierenDie Ausgabe ist:
-
B::
- funcXXOO
-
Code kopierenWie Sie sehen können, spiegelt sich bei der Verwendung von $this->funcXXOO() in A der Mechanismus der „virtuellen Funktion“ wider, und was tatsächlich aufgerufen wird, ist B::funcXXOO(). Wenn jedoch alle Funktionen in statische Funktionen geändert werden:
-
Klasse A
-
{
-
statisch öffentlich Funktion callFuncXXOO()
-
🎜> self
- ::funcXXOO(); }
-
statisch
- öffentlich
- Funktion funcXXOO () {
- zurück "A::funcXXOO()"
- ; }
- }
-
Klasse
- B erweitert
- A {
- statisch public
- function funcXXOO() 🎜> "B::funcXXOO";
-
}
- }
$b -
=
neu-
B;
- $b
->-
callFuncXXOO ();Code kopierenDie Situation ist nicht so optimistisch, die Ausgabe lautet:
-
A::funcXXOO()
Code kopieren
Das liegt daran, dass die Semantik von self ursprünglich „aktuelle Klasse“ ist, daher gibt PHP5.3 dem Schlüsselwort static eine neue Funktion: späte statische Bindung:
- KlasseA
{
statisch -
public
function-
callFuncXXOO()
-
{ 🎜>funcXXOO(); }
-
- // ... }
- // ...
- Kopieren Sie den Code
- so. Es wird wie erwartet ausgegeben: B
- :: funcXXOO
- Code kopieren
- Heredoc und NowdocPHP5.3 hat einige Verbesserungen an Heredoc und Nowdoc vorgenommen , die beide zum Einbetten großer Zeichenfolgen in PHP-Code verwendet werden.
Heredoc verhält sich wie eine Zeichenfolge in doppelten Anführungszeichen:
$name =- "MyName";
echo <<<
TEXT MeinName - ist "{$name}" .TEXT
- ;Code kopieren
Heredoc beginnt mit drei linken spitzen Klammern, gefolgt von einem Bezeichner (TEXT) und endet mit einem Bezeichner desselben oberen Leerzeichens (kann nicht eingerückt werden). ist wie eine Zeichenfolge in doppelten Anführungszeichen, in die Variablen eingebettet werden können. Heredoc kann auch für Funktionsparameter und die Initialisierung von Klassenmitgliedern verwendet werden: - var_dump(<<< ;EOD
- Hallo Welt
- EOD
- );
- KlasseA
- {
- const xx = <<< EOD
- Hallo Welt
- EOD;
- öffentlich $oo = < << EOD
- Hallo Welt
- EOD;
- }
Code kopieren
Nowdoc verhält sich wie eine Zeichenfolge in einfachen Anführungszeichen und kann keine Variablen darin einbetten. Der einzige Unterschied zu Heredoc besteht darin, dass der Bezeichner nach den drei linken spitzen Klammern in einfache Anführungszeichen gesetzt werden muss: - $name = "MyName";
- echo <<< 'TEXT'
- Mein Name ist "{$name}".
- TEXT;
Code kopieren
Ausgabe: - Mein Name ist "{$name}".
Code kopieren
Verwenden Sie const, um Konstanten zu definierenPHP5.3 unterstützt die Verwendung von const, um Konstanten sowohl im globalen Namespace als auch in Klassen zu definieren. Alter Stil: - define("XOOO" , "Wert");
Code kopieren
Neuer Stil: - const XXOO = "Wert";
Code kopieren
Die const-Form gilt nur für Konstanten, nicht für Ausdrücke, die nur zur Laufzeit ausgewertet werden können: - // Richtig
- const XXOO = 1234;
- // Fehler
- const XXOO = 2 * 617;
Code kopieren
Abkürzung für ternäre Operatoren Alter Stil: - echo $a ? $a : "Kein Wert";
Code kopieren
kann abgekürzt werden als: - echo $a ?: "Kein Wert" ;
Code kopieren
Das heißt, wenn der zweite Teil des ternären Operators weggelassen wird, wird der erste Teil ersetzt standardmäßig. PharPhar ist ein PHP-Archiv. Es war ursprünglich nur eine Bibliothek in Pear und wurde später als C-Erweiterung in PHP 5.3 umgeschrieben. Phar wird verwendet, um mehrere .php-Skripte (kann auch andere Dateien packen) in eine .phar-komprimierte Datei (normalerweise im ZIP-Format) zu packen. Der Zweck besteht darin, Javas .jar zu imitieren, nein, der Zweck besteht darin, die Veröffentlichung von PHP-Anwendungen komfortabler zu gestalten. Es bietet auch Funktionen wie die Überprüfung digitaler Signaturen. .phar-Dateien können von der PHP-Engine genau wie .php-Dateien interpretiert und ausgeführt werden. Gleichzeitig können Sie auch Code wie diesen schreiben, um den Code einzubinden (anzufordern). .phar: - require("xxoo.phar");
- require("phar://xxoo.phar/xo/ox.php");
Code kopieren
Weitere Informationen finden Sie auf der offiziellen Website [Hinweis].Hinweis: http://www .php.net/manual/en/phar.using.intro.php
PHP5.4(2012-2013)Short Open TagShort Open Tag ist seit PHP5.4 immer verfügbar. Hier konzentrieren wir uns auf die Probleme im Zusammenhang mit PHP-Start- und End-Tags. Das heißt: - php
- // Code...
- ?>
Code kopieren
Normalerweise ist er drin das Formular oben, zusätzlich gibt es eine Kurzform: - /* Code... */ ?>
Kopieren Sie den Code
Sie können auch - php echo $xxoo;?>
Code kopieren
Abgekürzt als:
- = $xxoo;?>
Code kopierenDiese Abkürzung heißt Short Open Tag und ist in PHP5.3 standardmäßig aktiviert und in PHP5.4 immer verfügbar. Die Verwendung dieser Kurzform ist sehr praktisch zum Einbetten von PHP-Variablen in HTML. Für reine PHP-Dateien (z. B. Klassenimplementierungsdateien) empfiehlt PHP offiziell, das Start-Tag in das obere Feld zu schreiben und das End-Tag wegzulassen. Dadurch wird sichergestellt, dass es sich bei der gesamten PHP-Datei um PHP-Code ohne Ausgabe handelt. Andernfalls treten beim Festlegen des Headers und des Cookies nach dem Einbinden der Datei Probleme auf [Hinweis].Hinweis: Header und Cookie müssen gesendet werden, bevor Inhalte ausgegeben werden. Array-Abkürzung
Dies ist eine sehr praktische Funktion!
- //Original-Array-Schreiben
-
$arr = Array("key" => "value", "key2" => "value2" ; >
[-
"key"
=>-
"value" , "key2" => "value2"];Code kopierenTraitsDie sogenannten Traits sind „Komponenten“, die verwendet werden, um einen Mechanismus zum Ersetzen der Vererbung zu verwenden. Mehrfachvererbung ist in PHP nicht möglich, aber eine Klasse kann mehrere Traits enthalten.// Traits können nicht einzeln instanziiert werden, sondern können nur in einer Klasse enthalten sein
Merkmal SayWorld
{ öffentlich-
Funktion
sayHello-
()
-
{ echo 'World!';
-
}
-
}
-
Klasse
-
MyHelloWorld
- {
-
// Will-Mitglieder in SayWorld sind enthalten
verwenden-
SayWorld
;-
}-
$xxoo =
- neu
MyHelloWorld- ();
-
// Das sayHello() Funktion stammt aus der SayWorld-Komponente $xxoo->sayHello();
-
Code kopieren
Merkmale haben auch viele magische Funktionen, z. B. das Einschließen mehrerer Merkmale, das Lösen von Konflikten, das Ändern von Zugriffsberechtigungen und das Festlegen von Funktionen für Funktionsaliase usw . -
Zu den Merkmalen können auch Merkmale gehören. Aus Platzgründen können wir keine Beispiele einzeln angeben. Weitere Informationen finden Sie auf der offiziellen Website [Hinweis]. Hinweis: http://www.php.net/manual/zh/sprache.oop5.traits.php
Eingebauter Webserver
PHP verfügt ab 5.4 über einen integrierten, leichtgewichtigen Webserver, der keine Parallelität unterstützt und für Entwicklungs- und Debugging-Umgebungen geeignet ist. Es ist in der Tat sehr praktisch, es in der Entwicklungsumgebung zu verwenden. -
php -S localhost:8000
Kopieren Sie den Code
Dadurch wird ein Webserver im aktuellen Verzeichnis eingerichtet, auf den Sie über http://localhost:8000/ zugreifen können. Wobei localhost die Abhör-IP ist, ist 8000 der Abhör-Port, der von Ihnen selbst geändert werden kann. In vielen Anwendungen wird URL-Rewriting durchgeführt, daher bietet PHP eine Funktion zum Festlegen von Routing-Skripten:
-
php -S localhost:8000 index.php
Kopieren Sie den Code
Auf diese Weise werden alle Anfragen von index.php bearbeitet. Sie können XDebug auch zum Debuggen von Haltepunkten verwenden. Geänderte DetailsPHP5.4 fügt eine neue Möglichkeit für den dynamischen Zugriff auf statische Methoden hinzu:
-
$func = }();
- Code kopierenFunktion zum Zugriff auf Klassenmitglieder während der Instanziierung hinzufügen: (
neu
MyClass
)->xxoo -
();Code kopierenUnterstützung für die Mitgliederzugriffsanalyse von Funktionsrückgabearrays hinzugefügt (diese Schreibmethode war vorher verwendet Die Version meldet einen Fehler): print
func
()[0
] ;
-
Code kopierenPHP5.5(ab 2013)Ertrag
Das Schlüsselwort yield wird verwendet, um Werte einzeln zurückzugeben, wenn die Funktion einen Iterator zurückgeben muss.
Funktion
Zahl10() {- für
(-
$i =
-
1; $i <= 10; $i += 1) Rendite $i;
-
}Kopieren Code
Der Rückgabewert dieser Funktion ist ein Array: -
list() wird für foreach verwendetSie können list() verwenden, um verschachtelte Arrays in foreach zu analysieren:
-
$array = [
-
[1, 2 , 3],
-
[ 4 , 5, 6],
-
];
-
foreach ($array as list($a , $b, $c))
-
echo "{$a} {$b} {$c}n";
Code kopieren
Ergebnis:
-
1 2 3
-
4 5 6
Code kopieren
Details ändernEs wird nicht empfohlen, die MySQL-Funktion zu verwenden. Es wird empfohlen, PDO oder MySQLi zu verwenden, siehe vorherigen Artikel. Unterstützt Windows XP nicht mehr Sie können MyClass::class verwenden, um den vollständig qualifizierten Namen einer Klasse (einschließlich Namespace) abzurufen. empty() unterstützt Ausdrücke als Parameter. Der Try-Catch-Struktur wird ein „finally“-Block hinzugefügt. PHP5.6Bessere KonstantenErlauben Sie beim Definieren von Konstanten Berechnungen mit zuvor definierten Konstanten:
-
const A = 2;
-
const B =A + 1 ;
-
KlasseC
-
{
-
const STR = „Hallo“;
-
const STR2 = self::STR + ", world" ;
-
}
Code kopieren
Konstanten als Funktion zulassen Parameter-Standardwerte: -
function func($arg = C::STR2)
Code kopieren
Bessere variable Funktionsparameter wird anstelle von func_get_args()
-
function add(...$args )
- {
- $result = 0;
- >as $arg) $result += $arg
;-
zurück $result
;-
}
- Kopieren Sie den CodeGleichzeitig können Sie beim Aufruf der Funktion das Array in Funktionsparameter erweitern:
$arr =
[-
2, 3] ;add(1
,-
🎜>//Das Ergebnis ist 6Code kopierenNamespaceNamespace unterstützt Konstanten und Funktionen: Namespace
-
NameLeerzeichen
{
const FOO =-
42;
Funktion -
f() { echo __FUNCTION__." n"
;-
} } Namespace {
-
use
- const
-
NameSpaceFOO ;
-
verwenden Funktion NameSpacef;
-
echo FOO."n"; f();
-
}-
Das Obige stellt eine detaillierte Erklärung der neuen Funktionen von PHP52 bis 56 vor, einschließlich der relevanten Inhalte. Ich hoffe, dass es für Freunde hilfreich ist, die sich für PHP-Tutorials interessieren.