Empfohlen (kostenlos): PHP7
So viele gute Funktionen und gute Methoden, warum nicht sie nutzen, und ich hoffe, dass PHP immer besser wird.
Alle neuen Funktionen von PHP 5.1, PHP5.2, PHP5.3, PHP5.4, PHP5.5, PHP5.6, PHP7, PHP7.1 sind hier organisiert und können von jedem erlernt und genutzt werden
Buid- im Web Der Server verfügt über einen integrierten einfachen Webserver
Um das aktuelle Verzeichnis als Root-Dokument zu verwenden, benötigen Sie nur diesen Befehl:
php -S localhost:3300
Sie können auch andere Pfade angeben
php -S localhost:3300 -t /path/to/root
Sie können auch Routing angeben
php -S localhost:3300 router.php
Namespace (php5.3)
Das Trennzeichen des Namespace ist ein Backslash. Obwohl dies nicht für String-Klassennamen gilt
namespace fox\lanmps\Table; class Select {}
Um dieses Problem zu lösen, übernehmen Sie die neue FooBar::class-Syntax, die den vollständigen Klassennamen der Klasse zurückgibt
Der Namespace-Nutzungsoperator beginnt, den Import von Funktionen und Konstanten zu unterstützenuse Some\Deeply\Nested\Namespace\FooBar; // does not work, because this will try to use the global `FooBar` class $reflection = new ReflectionClass('FooBar'); echo FooBar::class;
Ausgabe
42NameSpacef
Gruppenverwendungsdeklarationen
Klassen, Funktionen und Konstanten, die aus demselben Namespace importiert wurden, können jetzt auf einmal mit einer einzigen Verwendungsanweisung importiert werden.
namespace Name\Space { const FOO = 42; function f() { echo __FUNCTION__."\n"; } } namespace { use const Name\Space\FOO; use function Name\Space\f; echo FOO."\n"; f(); }
Unterstützt verzögerte statische Bindung
statisches Schlüsselwort, um auf die aktuelle Klasse zu verweisen, die verzögerte statische Bindung implementiert
//PHP7之前use some\namespace\ClassA;use some\namespace\ClassB;use some\namespace\ClassC as C;use function some\namespace\fn_a;use function some\namespace\fn_b;use function some\namespace\fn_c;use const some\namespace\ConstA;use const some\namespace\ConstB;use const some\namespace\ConstC;// PHP7之后use some\namespace\{ClassA, ClassB, ClassC as C};use function some\namespace\{fn_a, fn_b, fn_c};use const some\namespace\{ConstA, ConstB, ConstC};
Ausgabeergebnisse: B
Unterstützt goto-Anweisungen
in den meisten Computerprogrammiersprachen Alle unterstützen das Unbedingte Sprunganweisung goto Wenn das Programm die goto-Anweisung ausführt, springt es zu der Programmposition, die durch die Beschriftung in der goto-Anweisung angegeben ist, um die Ausführung fortzusetzen. Obwohl die goto-Anweisung zu einem unklaren Programmablauf und einer eingeschränkten Lesbarkeit führen kann, bietet sie in bestimmten Situationen, beispielsweise beim Unterbrechen tief verschachtelter Schleifen und if-Anweisungen, ihre ganz eigene praktische Funktion.
class A { public static function who() { echo __CLASS__; } public static function test() { static::who(); // 这里实现了延迟的静态绑定 } } class B extends A { public static function who() { echo __CLASS__; } } B::test();
Unterstützt Abschlüsse, Lambda-/Anonyme Funktionen
Die Konzepte der Abschlussfunktionen (Closure) und Lambda-Funktionen stammen aus dem Bereich der funktionalen Programmierung. JavaScript ist beispielsweise eine der am häufigsten verwendeten Sprachen, die Abschlüsse und Lambda-Funktionen unterstützt.
In PHP können wir über create_function() auch Funktionen erstellen, während der Code ausgeführt wird. Es gibt jedoch ein Problem: Die erstellte Funktion wird nur zur Laufzeit kompiliert und nicht gleichzeitig mit anderen Codes in ausführbaren Code kompiliert. Daher können wir keine ausführbaren Code-Caches wie APC verwenden, um die Effizienz der Codeausführung zu verbessern. In PHP5.3 können wir Lambda-/anonyme Funktionen verwenden, um einige temporäre (verwenden und wegwerfen) Funktionen als Rückruffunktionen für array_map()/array_walk() und andere Funktionen zu definieren. goto a;
echo 'Foo';
a:
echo 'Bar';
for($i=0,$j=50; $i<100; $i++) {
while($j--) {
if($j==17) goto end;
}
}
echo "i = $i";
end:
echo 'j hit 17';
Ursprünglich gibt es in PHP eine magische Methode __call(). Diese magische Methode wird automatisch aufgerufen, wenn der Code eine nicht vorhandene Methode des Objekts aufruft. Die neue Methode __callStatic() wird nur für statische Klassenmethoden verwendet. Wenn Sie versuchen, eine statische Methode aufzurufen, die in der Klasse nicht vorhanden ist, wird automatisch die magische Methode __callStatic() aufgerufen.
echo preg_replace_callback('~-([a-z])~', function ($match) { return strtoupper($match[1]); }, 'hello-world'); // 输出 helloWorld $greet = function($name) { printf("Hello %s\r\n", $name); }; $greet('World'); $greet('PHP'); //...在某个类中 $callback = function ($quantity, $product) use ($tax, &$total) { $pricePerItem = constant(__CLASS__ . "::PRICE_" . strtoupper($product)); $total += ($pricePerItem * $quantity) * ($tax + 1.0); };
Die Ausgabe nach der Ausführung des obigen Codes lautet wie folgt: Rufen Sie die Objektmethode „runTest“ auf – – Rufen Sie die statische Methode „runTest“ über den Objektaufruf auf – – Statischer Aufruf Wenn das Objekt in der Form aufgerufen wird Wenn Sie eine Funktion verwenden, wird die Methode __invoke() automatisch aufgerufen.
class MethodTest { public function __call($name, $arguments) { // 参数 $name 大小写敏感 echo "调用对象方法 '$name' " . implode(' -- ', $arguments). "\n"; } /** PHP 5.3.0 以上版本中本类方法有效 */ public static function __callStatic($name, $arguments) { // 参数 $name 大小写敏感 echo "调用静态方法 '$name' " . implode(' -- ', $arguments). "\n"; } } $obj = new MethodTest; $obj->runTest('通过对象调用'); MethodTest::runTest('静态调用'); // As of PHP 5.3.0
Die Verwendung ist ähnlich wie bei Heredoc, es werden jedoch einfache Anführungszeichen verwendet. Heredoc muss in doppelten Anführungszeichen deklariert werden.
class MethodTest { public function __call($name, $arguments) { // 参数 $name 大小写敏感 echo "Calling object method '$name' " . implode(', ', $arguments). "\n"; } /** PHP 5.3.0 以上版本中本类方法有效 */ public static function __callStatic($name, $arguments) { // 参数 $name 大小写敏感 echo "Calling static method '$name' " . implode(', ', $arguments). "\n"; } } $obj = new MethodTest; $obj->runTest('in object context'); MethodTest::runTest('in static context'); // As of PHP 5.3.0
// Nowdoc 单引号 PHP 5.3之后支持 $name = 'MyName'; echo <<<'EOT' My name is "$name". EOT; //上面代码输出 My name is "$name". ((其中变量不被解析) // Heredoc不加引号 echo <<<FOOBAR Hello World! FOOBAR; //或者 双引号 PHP 5.3之后支持 echo <<<"FOOBAR" Hello World! FOOBAR;
Sie können const auch verwenden, um Konstanten außerhalb der Klasse zu definieren
// 静态变量 function foo() { static $bar = <<<LABEL Nothing in here... LABEL; } // 类成员、常量 class foo { const BAR = <<<FOOBAR Constant example FOOBAR; public $baz = <<<FOOBAR Property example FOOBAR; }
Das Originalformat ist (expr1) ? (expr2) : (expr3)
Wenn expr1 Wenn das Ergebnis True ist, wird das Ergebnis von expr2 zurückgegeben.Eine neue Schreibweise wurde hinzugefügt. Sie können den Mittelteil weglassen, geschrieben als expr1 ?: expr3 Wenn das Ergebnis von expr1 wahr ist, wird das Ergebnis von expr1 zurückgegeben
//PHP中定义常量通常是用这种方式 define("CONSTANT", "Hello world."); //并且新增了一种常量定义方式 const CONSTANT = 'Hello World';
1
1
Unicode-Codepunkt-Übersetzungssyntax
$expr1=1;$expr2=2;//原格式 $expr=$expr1?$expr1:$expr2 //新格式 $expr=$expr1?:$expr2
Fügen Sie den rechten Verknüpfungsoperator * hinzu, um den Leistungsvorgang auszuführen. Es unterstützt auch den abgekürzten *=-Operator, was bedeutet, dass Potenzierungen durchgeführt und Werte zugewiesen werden.
$param = $_GET['param'] ?? 1;
Ausgabe 2 ** 3 == 8 2
* 3 *2 == 512 a == 8
Raumschiffoperator (Kombinationsvergleichsoperator)
Der Raumschiffoperator wird verwendet, um zwei Ausdrücke zu vergleichen. Wann abig in、. usw. in oder klein in.
Das obige ist der detaillierte Inhalt vonIntegrieren Sie Funktionen von PHP5.X bis PHP7.1.x. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!