5 nowych funkcji w PHP 7

5 nowych funkcji w PHP 7

Autor Bio

To studium przypadku jest gościnnym postem napisanym przez Kaira Clark Works w XICOM Technologies Ltd - firma zajmująca się tworzeniem aplikacji internetowych CakePhp. Zawsze chętnie dzieli się swoją pasją do marketingu i rozwoju stron internetowych. Jeśli planujesz zatrudnić oddany zespół na genialną obecność online, ona jest dla Ciebie.

5 nowych funkcji w PHP 7

Wszystko, co brane pod uwagę, 2015 było niezbędnym rokiem dla każdego projektantów PHP, a po jedenaście lat adaptacja PHP do 5.0 Wydanie, istnieje inny rozwój, który na dłuższą metę nadchodzi. Rozważ jednak różne najważniejsze informacje o rozwoju, zastanów się, jaka metoda wpłynęłaby twój wariant PHP w bieżącej bazie kodu PHP? Po prostu oceń to, co naprawdę zmieniło się w PHP? Jak bezpiecznie możesz poradzić sobie z przeprojektowaniem PHP? Tutaj, w tym poście, otrzymasz każde rozwiązanie do zapytań i na końcu doświadczycie, co nadejdzie podczas pracy z PHP 7. Przyjdźmy więc do sedna sprawy egzaminu.

Ulepszenia wykonania

Ulepszenia wykonania są najprawdopodobniej jedną z głównych motywacji programistów, dlaczego wszyscy powinni mieć raport na każdym serwerze, gdy pojawi się wariant stabilny PHP. Refaktoryzacja środkowa przedstawiona przez telefon RFC sprawia, że ​​PHP 7 jest szybszy niż HHVM. Oficjalne punkty odniesienia są godne uwagi: większość normalnych aplikacji działających na PHP 5.6 będzie działać w każdym wydarzeniu dwa razy szybciej na PHP 7.

Pułapki do kompatybilności wstecznej

Teraz rozmawiajmy o kilku podstawowych czynnikach PHP, które mogłyby ostatecznie rozbić starszą aplikację działającą w starszych wersjach PHP.

  • Składnia zmiennej jednolitej

Rozwiązuje serię każdej niespójności w momencie oceny wyrażeń zmiennych zmiennych. Rozważ pokazany poniższy kod:

 Firma klasowa public $ emp_name = 'madhur; public $ emp_des = 'inżynier oprogramowania' ';  $ company = nowa firma (); $ właściwości = [„fert” => 'emp_name', 'second' => 'info']; Echo „Nazwa NEMPLEYE to” . $ Company-> $ nieruchomość [„First”] . „nn”; 

W PHP 7 wyrażenie $ company-> $ nieruchomość [„First”] jest oceniana jako $ company-> $ nieruchomość [„First”]. Tłumacz oceni firmę $-> $ nieruchomość.

Dzięki naszej nowej jednolitej zmiennej składni od lewej do prawej, która czyni każde wyrażenie ważne, co nie było możliwe we wczesnej wersji PHP. Rozważ następującą klasę w celu lepszego zrozumienia:

 Firma klasowa public static $ location = 'ncr'; funkcja publiczna getBranches () return ['jaipur' => function () return "East and West;, 'chandigarh' => function () return 'North and South';]; funkcja publiczna getBranchesof ($ $ ktoś) return $ this-> getBranches () [$ ktoś]; public static funkcja getNewCompany () return new Company (); 

PHP 7 umożliwia tworzenie zagnieżdżonych powiązań z różnymi kombinacjami między operatorami:

$ company = nowa firma (); echo „n” . $ company-> getBranches () ['jaipur'] () . „nn”; echo „n” . $ company-> getBranchesof („chandigarh”) () . „nn”; 

Ten fragment kodu wygenerowałby błąd parse na PHP 5, ale dobrze pasuje do PHP 7.

Praca ze śmiertelnym błędem z wieloma „domyślnymi” klauzulami

Jest to ponownie kontrowersyjny przypadek, który odnosi się do bardziej logicznych błędów. Nie korzysta z wielu domyślnych klauzul w przełączniku tylko dlatego, że nigdy nie wystąpiło ostrzeżenia o błędach. W PHP 7 natkniesz się na śmiertelny błąd: „Instrukcje przełączników zawierają tylko jedną domyślną klauzulę”.

Wyjątki silnika w PHP

Wyjątki silnika działają jako procedura obsługi błędów w aplikacji. Tak więc wszystkie istniejące śmiertelne i odzyskane błędy śmiertelne są skutecznie zastępowane wyjątkami, aby łatwo złapać wszystkie wspomniane błędy i podejmować działania przeciwko takim błędom.

Powiedźmy się do poniższego kodu o tym, jak obsługiwać implementację wyjątków silnika, aby zapewnić kompatybilność wsteczną:

 set_error_handler (funkcja ($ code, $ message) echo "error $ kod:" . $ wiadomość . „nn”; ); funkcja a (arrayObject $ b) return $ b;  Badanie"); Echo „Hello World”; 

Ten kod skutecznie odzyskuje błąd spowodowany niedopasowaniem typu, gdy wywołujesz funkcję a () za pomocą łańcucha jako parametru.

Witaj świecie

To wykonanie będzie kontynuowane, ponieważ błąd był obsługiwany skutecznie. W PHP 7 wygeneruje wyjątek typeerror, który nie jest błędem. Tak więc w tym przypadku niestandardowy obsługi błędów nie zostanie wywołany, a jest to dane wyjściowe poniżej:


Błąd fatalny: Typeerror Askution: Argument 1 przekazany do () musi być instancją ArrayObject, podaną ciąg, nazywaną w/vagrant/tests/test04.PHP on wiersz 12 i zdefiniowane w/Vagrant/Tests/Test04.PHP: 7
Ślad stosu:
#0/Vagrant/Tests/Test04.PHP (12): A („Test”)
#1 main
wrzucone/Vagrant/Tests/Test04.PHP On line 7

Tutaj wykonanie zatrzyma się, ponieważ wyjątek nie zostanie złapany. Aby przezwyciężyć ten problem, należy znaleźć wyjątki, używając bloków prób/catch. Zauważ, że hierarchia wyjątków zmieni się, aby pomieścić nowe wyjątki silnika z minimalnym kodem starszym. Patrz następujący wzór poniżej:

  • Rzucalny interfejs
    • Wyjątki wdrażają rzucalne
      • ErroRexception rozszerza wyjątek
      • RuntimeException rozszerza wyjątek
    • Błąd implementuje wyrzucenie
      • TypeError rozszerza błąd
      • ParseeRror rozszerza błąd
      • AssertionError rozszerza błąd

Powyższy wzór oznacza, że ​​nowy wyjątek Catch-All jest teraz rzucalny zamiast wyjątku.

Nowo dodane funkcje językowe

Zobaczmy, co obejmuje?
Nowi operatorzy

1. -> Operator statku kosmicznego/ porównawczego
Operator statku kosmicznego jest oznaczony jako, znany również pod dowództwem operatora porównawczego, który jest używany do włączenia porównania łączenia.

Ma następujące wyrażenie:
$ A $ B

1. Wyrażenie ocenia -1, czy $ a jest mniejsze niż $ b
2. 0 Jeśli $ a równe $ b
3. 1, jeśli $ a jest większe niż $ b.

Ogólnie rzecz biorąc, można go użyć jako następujące wyrażenie:

($ a $ b) ? 1: 0)

2 -> Null Coalesce Operator jest oznaczony jako ?? To zachowuje sprawdzenie, czy wartość jest ustawiona na jej użycie.

Wskazówki typu skalarnego

Wskazówki typu skalarnego są jednym z najbardziej znanych atrybutów, które są zawarte w języku PHP, które wykorzystują liczby całkowite, pływaki, ciągi i symbole boolowskie jako wskazówki typu do pracy z funkcjami i metodami. Wskazówki typu skalarnego są domyślnie nieograniczone, co oznacza, że ​​po przekazaniu wartości zmiennoprzecinkowej do liczby całkowitej, parametru, po prostu stłumuje go, aby zapalić format bez żadnych ostrzeżeń o błędach.

Tak więc, aby przezwyciężyć ten problem, konieczne jest włączenie trybu ścisłego, który wyrzuci błędy, gdy jakikolwiek nielegalny typ skalarny zostanie przekazany jako argument. Patrzmy poniżej wygenerowany kod:

 funkcja double (int $ wartość) return 2 * $ wartość;  $ a = double („5”); var_dump ($ a); 

Aby upewnić się, że liczby całkowite mogą być przekazywane do podwójnej funkcji, a następnie włącz tryb ścisłego, włączając wzorce deklaracji dyrektywy (strict_types = 1) jako pierwszy wiersz w skrypcie:

 DECLALE (strict_types = 1); funkcja double (int $ wartość) return 2 * $ wartość;  $ a = double („5”); var_dump ($ a); 

Ten kod wygeneruje Błąd fatalny: Nieprawidłowy typeerror: Argument 1 przekazany do Double () powinien być typu liczbą całkowitą, podano ciąg.

Wskazówki typu powrotu

Kolejną znaczącą nową funkcją, która jest dodawana do PHP 7, jest jego ekstremalna zdolność do umożliwienia typu powrotu metod, a także funkcji; To zachowuje się jako wskazówki typu skalarnego. Uważaj poniżej wygenerowanego kodu:

 funkcja a (): bool return 1;  var_dump (a ()); 

Ten fragment kodu działa wydajnie bez ostrzeżeń, a zwrócona wartość jest automatycznie konwertowana na format BOOL. Aktywając tryb ścisłego, generowany jest błąd śmiertelny:

Błąd fatalny: Nieprzestrzenna typeerror: Wartość zwracana () musi być typu boolean, powrócona liczba całkowita

Te błędy są rodzajem wyjątków, które są złapane i obsługiwane przy użyciu bloków TRY/CATH.

Wniosek

Mam nadzieję, że spodoba ci się praca z wszystkimi nową wersją PHP 7. Czytaj więcej