5 nowych funkcji w PHP 7
- 4670
- 871
- Ignacy Modzelewski
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
- « Jak dodać i usunąć użytkowników w Centos, Rhel i Fedora
- Jak zainstalować Docker na Centos 7 i Rhel 7 »