Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: PHP 7.0.0 Alpha 1 Released
Forum PHP.pl > Wortal > Newsy
com
Jakiś czas temu pojawiła się maszyna do vagranta z zainstalowanym jednym z pierwszych wydań php7, jednakże dziś światło dzienne ujrzała pierwsza oficjalna Alpha.

Jeśli kogoś interesuje lista zmian to można znaleźć ją tutaj: https://github.com/php/php-src/blob/php-7.0.0alpha1/NEWS oraz https://github.com/php/php-src/blob/php-7.0...lpha1/UPGRADING

Można go oczywiście pobrać i przetestować już dziś, linki do downloadu: https://downloads.php.net/~ab/ oraz wersja dla Windows: http://windows.php.net/qa/, tam jednak żeby zaczęło działać trzeba mieć apache kompilowane VC14, czyli najnowszą jego wersje najlepiej. Oraz pobrać brakujący dll ponieważ nie został on umieszczony w paczce php: http://windows.php.net/downloads/snaps/ostc/69801/vc14/


Co nowego, skrócona lista:

  • Zwiększona wydajność: PHP 7 jest nawet dwa razy szybciej niż PHP 5.6
  • Spójne wsparcie 64-bit
  • Wiele fatal errors stało się teraz wyjątki
  • Usunięcie starych i nieobsługiwanych SAPI i rozszerzeń
  • Operator null coalescing (? ?)
  • Combined comparison Operator (<=>)
  • Zwracanie zadeklarowanych typów
  • Skalarne deklaracje typów
  • Klasy anonimowe


Wersja ta na razie jest tylko testowa i nie powinna być używana do celów produkcyjnych.

http://www.dmiller.io/blog/2015/4/26/compa...ck-type-systems
Kilka przykładów:

Zwracanie zadeklarowanych typów i skalarne deklaracje typów
  1. <?php
  2.  
  3. function add(int $a, int $b): float {
  4. return $a + $b;
  5. }
  6.  
  7. var_dump(add(1,2)); //float(3)
  8.  


  1. <?php
  2.  
  3. function add(int $a, int $b): int {
  4. return (string) $a + $b;
  5. }
  6.  
  7. var_dump(add(1,2)); //int(3)
  8.  

  1. <?php
  2.  
  3. function add(int $a, int $b): string {
  4. return (string) $a + $b;
  5. }
  6.  
  7. var_dump(add(1,2)); //string(1) "3"
  8.  


Ale:
  1. <?php
  2.  
  3. function add(int $a, int $b): array {
  4. return (array) $a + $b;
  5. }
  6.  
  7. var_dump(add(1,2)); // Fatal error: Uncaught EngineException: Unsupported operand types


Podobnie jeśli podamy zły typ php rozpozna, że coś jest nie tak i odpowiednio nas o tym poinformuje

Klasy anonimowe
  1. $i = 1;
  2. var_dump(new class($i) {
  3. public function __construct($i) {
  4. $this->i = $i;
  5. }
  6. }); //object(class@anonymous)#1 (1) { ["i"]=> int(1) }

null coalescing operator (? ?)
  1. $x = NULL;
  2. $y = NULL;
  3. $z = 3;
  4. var_dump($x questionmark.gif $y questionmark.gif $z); //int(3)
  5.  
  6. var_dump(2 questionmark.gif 3 ? 4 : 5); //int(4)
  7.  
  8. var_dump(0 || 2 questionmark.gif 3 ? 4 : 5); //int(4)

Combined comparison Operator (<=>)
  1. echo 1 <=> 1; // 0
  2. echo 1 <=> 2; // -1
  3. echo 2 <=> 1; // 1
  4.  
  5. echo [] <=> []; // 0
  6. echo [1, 2, 3] <=> [1, 2, 3]; // 0
  7. echo [1, 2, 3] <=> []; // wdg dokumentacji oczekiwane 1 a otrzymujemy 3
  8. echo [1, 2, 3] <=> [1, 2, 1]; // 1
  9. echo [1, 2, 3] <=> [1, 2, 4]; // -1
!*!
Wygląda nieźle, ciekawe jak z planem wdrożenia. Na niektórych hostingach nadal króluje 5.3
Turson
Szkoda, że strict mode nie jest obowiązkowy, a jedynie opcjonalny
com
nie jest obowiązkowy, by zachować kompatybilność wstecz w miarę możliwości, ale nie wymaga dodatkowe aktywowania, jak było w propozycji, co ma swoje plusy i minusy bo czasem może powstać spaghetti jak to bd mieszać wink.gif

Swoją drogą trzeba bd zaktualizować skrypt forum by nie zamieniał null coalescing operator na emotikon, bo zapomniałem wyłączyć emotikony a nie da się edytować wink.gif

https://github.com/tpunt/PHP7-Reference

Wiecej w temacie biggrin.gif
Dejmien_85
Cytat(!*! @ 19.06.2015, 09:35:43 ) *
Wygląda nieźle, ciekawe jak z planem wdrożenia. Na niektórych hostingach nadal króluje 5.3


Ci sprytniejsci pewnie po kilku miesiącach już umożliwią odpalenie 7-demki, a tak globalnie to... pewnie poczekamy z 2 lata, zanim 7-dekma będzie standardem.

Jednak serwery współdzielone to tak naprawdę szczegół - w dzisiejszych czasach za cenę współdzielonego możesz wykupić VPS-a i samemu zainstalować to co chcesz.
Pyton_000
Cytat(Dejmien_85 @ 28.06.2015, 14:24:09 ) *
pewnie poczekamy z 2 lata, zanim 7-dekma będzie standardem

Ta, nadal 5.6 nie jest standardem, nawet 5.5.
7 będzie tylko u tych lepszych lub na własnych vps, dedykach.
q.michal
Orientujecie sie jakie typy danych sa/beda dozwolone w strict mode?
Tylko int, float, bool i string? Co z pozostalymi? char? resourcami? tablicami?
Skie
Cytat(Pyton_000 @ 28.06.2015, 14:34:34 ) *
Ta, nadal 5.6 nie jest standardem, nawet 5.5.
7 będzie tylko u tych lepszych lub na własnych vps, dedykach.


Aczkolwiek wersje 5.6 czy 5.5 niewiele wnosiły by być standardem, nie mówiąc już o tym, że najpopularniejsze frameworki wymagały zazwyczaj PHP w wersji 5.2 / 5.3. Nie było po prostu takiej potrzeby by się bawić w rekonfiguracje.
Nawet teraz sam korzystam z PHP 5.4 u siebie na maszynie lokalnej i dedyku, bo jak myślę ile by mi zajęło niepotrzebnie czasu zabawa w rekonfigurację, rekompilację modułów i zewnętrznych programów, to mi się odechciewa tongue.gif

PHP 7.0, głównie z powodu strict mode, to jednak "big deal" i potrafię sobie wyobrazić, że ta wersja będzie przejmowała rynek dość szybko i za 2, 3 lata będzie miała większy udział niż wszystkie 5.* razem wzięte. Ja się przesiądę w nowych projektach, w której mam moc decyzyjną by coś takiego ustalić, na PHP 7.0 jak tylko skończą się testy, sprawdzę że najbardziej potrzebne mi moduły działają, czyli pewnie za ok rok.

Co do samej "siódemki" jestem bardzo pozytywnie nastawiony od czasu pierwszych testów Dmitriego (nie jestem pewien, czy tak zapisuje się jego nick) na buildzie oznaczonym jako PHPNG. Jest ona czymś, co może rozbudzić rynek PHP i znacznie pomóc nowym projektom, aczkolwiek nie widzę zbytniej rewolucji, która jest niesamowicie potrzebna. Uważam, że ta wersja pozwoli zastopować spadek udziału PHP w rynku i odchodzenie programistów, ale by wskrzesić sam język i podbudować jego renomę to za mało. Na sam koniec dodam, że cieszy mnie "pobudka" rozwoju tego języka, która po udanej wersji PHP 5.4 była śmiechu warta i mam nadzieję, że "siódemka" to początek dobrej passy, która zowocuje w dobracowanej, przepisanej, odważnej "ósemce".
prz3kus
https://wiki.php.net/todo/php70#timetable

Dzisiaj rospisali daty końcowych wersji RC smile.gif

Jeszcze tylko brakuje daty wydania docelowego php 7.1 smile.gif
KsaR
http://php.net/manual/en/migration70.php
Polecam przejrzeć, według mnie czytelniej opisane niż wszelkie ich Changelogi/Todo które udostępnili zanim dokumentację zrobili.

Jednak jeszcze nie da się wejść używając polskiej wersji językowej bo 404 zwraca ale to chyba nie problem :-)
redeemer
Dodam tylko, że skok wydajnościowy jest relatywnie spory (PHP7 kompilowałem w lipcu), dla przykładu:

  1. $limit = 20;
  2.  
  3. $A = [2.7, 3.2, 2.7];
  4. $B = [3.238, 2.788, 3.007];
  5.  
  6. for($i=0; $i<$limit; $i++)
  7. for($k=0; $k<$limit; $k++)
  8. for($j=0; $j<$limit; $j++)
  9.  
  10. for($x=0; $x<$limit; $x++)
  11. for($y=0; $y<$limit; $y++)
  12. for($z=0; $z<$limit; $z++) {
  13. $b = $i+$k+$j+$x+$y+$z;
  14.  
  15. $w = [];
  16. $w[] = $i*$A[0] + $x*$B[0];
  17. $w[] = $k*$A[1] + $y*$B[1];
  18. $w[] = $j*$A[2] + $z*$B[2];
  19.  
  20. if (min($w)>$b) {
  21. echo $i.' '.$k.' '.$j.' '.$x.' '.$y.' '.$z.' = '.$b.', w = '.min($w).PHP_EOL;
  22. if (min($w)-$b>$win) {
  23. $win = min($w)-$b;
  24. $s = [$i,$k,$j,$x,$y,$z];
  25. }
  26. }
  27. }
Kod
PHP 5.6.4-4ubuntu6.2 (cli) (built: Jul  2 2015 15:29:28)
Intel(R) Core(TM) i5-4570 CPU @ 3.20GHz

real    1m8.849s
user    1m7.772s
sys    0m0.084s
Kod
PHP 7.0.0-dev (cli) (built: Jul  9 2015 11:14:31)
Intel(R) Core(TM) i5-4570 CPU @ 3.20GHz

real    0m15.360s
user    0m15.192s
sys    0m0.048s


Pyton_000
Faktyczne bardzo duży skok. Nic tylko przesiadać się smile.gif
com
03 Dec 2015
PHP 7.0.0 Released

biggrin.gif

https://secure.php.net/archive/2015.php#id2015-12-03-1
redeemer
W końcu guitar.gif
Forti
W końcu! smile.gif Teraz migrować smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2018 Invision Power Services, Inc.