Heim > Backend-Entwicklung > PHP7 > Hauptteil

Integrieren Sie Funktionen von PHP5.X bis PHP7.1.x

coldplay.xixi
Freigeben: 2023-02-17 19:04:01
nach vorne
1665 Leute haben es durchsucht

Integrieren Sie Funktionen von PHP5.X bis PHP7.1.x

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
Nach dem Login kopieren

Sie können auch andere Pfade angeben

php -S localhost:3300 -t /path/to/root
Nach dem Login kopieren

Sie können auch Routing angeben

php -S localhost:3300 router.php
Nach dem Login kopieren

Namespace (php5.3)

Das Trennzeichen des Namespace ist ein Backslash. Obwohl dies nicht für String-Klassennamen gilt

namespace fox\lanmps\Table;    
class Select {}
Nach dem Login kopieren

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ützen

use 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;
Nach dem Login kopieren

Ausgabe

42

NameSpacef

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();  
}
Nach dem Login kopieren

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};
Nach dem Login kopieren

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();
Nach dem Login kopieren

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 &#39;j hit 17&#39;;
Nach dem Login kopieren

Magische Methoden __callStatic() und __invoke()



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(&#39;~-([a-z])~&#39;, function ($match) {    
    return strtoupper($match[1]);    
}, &#39;hello-world&#39;);    
// 输出 helloWorld    $greet = function($name)    {    
    printf("Hello %s\r\n", $name);    
};    
$greet(&#39;World&#39;);    
$greet(&#39;PHP&#39;);    
//...在某个类中    $callback =      function ($quantity, $product) use ($tax, &$total)         {    
   $pricePerItem = constant(__CLASS__ . "::PRICE_" .  strtoupper($product));    
   $total += ($pricePerItem * $quantity) * ($tax + 1.0);    
 };
Nach dem Login kopieren

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 "调用对象方法 &#39;$name&#39; "    
             . implode(&#39; -- &#39;, $arguments). "\n";    
    }    
    /**  PHP 5.3.0 以上版本中本类方法有效  */    
    public static function __callStatic($name, $arguments) {    
        // 参数 $name 大小写敏感    
        echo "调用静态方法 &#39;$name&#39; "    
             . implode(&#39; -- &#39;, $arguments). "\n";    
    }    
}    

$obj = new MethodTest;    
$obj->runTest(&#39;通过对象调用&#39;);    
MethodTest::runTest(&#39;静态调用&#39;);  // As of PHP 5.3.0
Nach dem Login kopieren

Nowdoc-Syntax



Die Verwendung ist ähnlich wie bei Heredoc, es werden jedoch einfache Anführungszeichen verwendet. Heredoc muss in doppelten Anführungszeichen deklariert werden.

Nowdoc führt keine Variablenanalyse durch, was sich sehr gut zum Übergeben eines Teils PHP-Codes eignet.

class MethodTest {    
    public function __call($name, $arguments) {    
        // 参数 $name 大小写敏感    
        echo "Calling object method &#39;$name&#39; "    
             . implode(&#39;, &#39;, $arguments). "\n";    
    }    

    /**  PHP 5.3.0 以上版本中本类方法有效  */    
    public static function __callStatic($name, $arguments) {    
        // 参数 $name 大小写敏感    
        echo "Calling static method &#39;$name&#39; "    
             . implode(&#39;, &#39;, $arguments). "\n";    
    }    
}    
$obj = new MethodTest;    
$obj->runTest(&#39;in object context&#39;);    
MethodTest::runTest(&#39;in static context&#39;);  // As of PHP 5.3.0
Nach dem Login kopieren
Unterstützt die Initialisierung statischer Variablen, Klassenmitglieder und Klassenkonstanten über Heredoc.
// Nowdoc 单引号 PHP 5.3之后支持    $name = &#39;MyName&#39;;    
echo <<<&#39;EOT&#39;    My name is "$name".    
EOT;    
//上面代码输出 My name is "$name". ((其中变量不被解析)    // Heredoc不加引号    echo <<<FOOBAR    
Hello World!    
FOOBAR;    
//或者 双引号 PHP 5.3之后支持    echo <<<"FOOBAR"    Hello World!    
FOOBAR;
Nach dem Login kopieren

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;    
}
Nach dem Login kopieren

Der ternäre Operator fügt eine Abkürzung zum Schreiben hinzu

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 = &#39;Hello World&#39;;
Nach dem Login kopieren

Ausgabeergebnis:

1
1

Null Zusammenführungsoperator (??)

Unicode-Codepunkt-Übersetzungssyntax

Dies akzeptiert ein Hex formatiert den Unicode-Codepunkt und gibt eine UTF-8-codierte Zeichenfolge aus, die von doppelten Anführungszeichen oder Heredoc umgeben ist. Jeder gültige Codepunkt wird akzeptiert und die führende 0 kann weggelassen werden.

$expr1=1;$expr2=2;//原格式  $expr=$expr1?$expr1:$expr2  //新格式  $expr=$expr1?:$expr2
Nach dem Login kopieren
Ausgabe der alten Version: u{9876} Eingabe der neuen Version: Top

Verwenden Sie **, um den Leistungsvorgang auszuführen.

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[&#39;param&#39;] ?? 1;
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:csdn.net
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage