Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zasady panujące na forum News

1. Posty w tym forum są poddawane moderacji więc nie dodawaj ich kilka razy.
2. Akceptujemy tylko wartościowe wiadomości o php lub pochodnych
3. Publikacja newsa na wortalu po moderacji oscyluje w granicach 30min
4. Wstawiane grafiki powinny mieć maksymalną szerokość 357px

Zapraszamy do uzupełniania wortalu o ciekawe informacje :)

2 Stron V   1 2 >  
Reply to this topicStart new topic
> PHP 5.6.0 alpha1
tomxx
post 29.01.2014, 13:38:53
Post #1





Grupa: Zarejestrowani
Postów: 172
Pomógł: 27
Dołączył: 5.10.2013

Ostrzeżenie: (0%)
-----


Kilka dni temu PHP udostępniło publicznie wersję testową PHP 5.6.0alpha1.

wersja do pobrania -> kliknij
dokumentacja -> kliknij

Wersja ta na razie jest tylko testowa i nie powinna być używana do celów produkcyjnych.
Poniżej przedstawiono kilka nowych funkcjonalności, jakie zaproponowali twórcy.

Stałe

PHP 5.6 udostępnia dostarczenie wartości stałej z użyciem operatorów, co wcześniej powodowało błąd. Przykład:
  1. <?php
  2. const LICZBA = 3;
  3. const TEKST = LICZBA." tekst";
  4. const WYRAŻENIE = (2*3)." tekst";
  5.  
  6. echo LICZBA, "<br>";
  7. echo TEKST, "<br>";
  8. echo WYRAŻENIE, "<br>";
  9. ?>

Powyższy przykład wyświetli:
3
3 tekst
6 tekst


Zmienna liczba argumentów funkcji

Za pomocą nowego operatora ... funkcje mogą przyjmować więcej argumentów, niż zostało podane przy ich definiowaniu. Operatora ... można użyć tylko przy ostatnim argumencie danej funkcji. W tej sytuacji ostatni argument będzie traktowany jak tablica. Przykład:
  1. <?php
  2. function f($a, ...$b)
  3. {
  4. echo "<br>Pierwszy argument: $a, pozostałe argumenty: ";
  5. foreach($b as $argument)
  6. {
  7. echo "$argument, ";
  8. }
  9. }
  10.  
  11. f(1, 2);
  12. f(1, 2, 3);
  13. f(1, 2, 3, 4, 5);
  14. ?>

Powyższy przykład wyświetli:
Pierwszy argument: 1, pozostałe argumenty: 2
Pierwszy argument: 1, pozostałe argumenty: 2 3
Pierwszy argument: 1, pozostałe argumenty: 2 3 4 5


Przekazywanie argumentów funkcji w tablicy

W PHP 5.6 za pomocą operatora ... będzie także można przekazywać argumenty dla funkcji w formie tablicy. W takim wypadku operator ten należy jednak wstawić przez zmienną z tablicą w momencie wywoływania funkcji. Przykład użycia:
  1. <?php
  2. function suma($a, $b, $c, $d)
  3. {
  4. echo $a+$b+$c+$d;
  5. }
  6.  
  7. $argumenty = [3, 4];
  8.  
  9. suma(1, ...$argumenty, 5); #Wyświetli 13 (1+3+4+5)
  10. ?>

Nowe funkcje

- gmp_root()
- gmp_rootren()
- ldap_escape()
- oci_get_implicit_resultset
- openssl_x509_fingerprint()
- ZipArchive::setPassword()
- ponadto crypt() musi obowiązkowo przyjmować drugi argument

Cała wersja jest oczywiście testowa, nie jest zalecane jej używanie na co dzień. Służy jedynie do przetestowania nowych funkcjonalności, jakie być może pojawią się w oficjalnym wydaniu wersji 5.6.0. Powyższy opis przedstawia tylko najważniejsze nowości, całość można znaleźć w dokumentacji.

Ten post edytował tomxx 29.01.2014, 20:29:19
Go to the top of the page
+Quote Post
!*!
post 30.01.2014, 09:02:34
Post #2





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

Ostrzeżenie: (0%)
-----


Nic szczególnego, można to podsumować krótko:
Cytat
...


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
tomxx
post 30.01.2014, 09:22:40
Post #3





Grupa: Zarejestrowani
Postów: 172
Pomógł: 27
Dołączył: 5.10.2013

Ostrzeżenie: (0%)
-----


Nowa alpha ma być 6 lutego, więc może będą jakieś nowe istotniejsze zmiany, bo na razie rzeczywiście szału nie ma. Z tym, że w oficjalnym wydaniu pojawi się też trochę nowości, więc na razie trzeba czekać.
Go to the top of the page
+Quote Post
buliq
post 30.01.2014, 10:16:43
Post #4





Grupa: Zarejestrowani
Postów: 559
Pomógł: 93
Dołączył: 4.03.2008
Skąd: Olsztyn

Ostrzeżenie: (0%)
-----


Dla niektórych nic szczególnego, ja stwierdzam że całkiem dobre podejście do stałych, z tym wielokropkiem trochę przesada, zrobi się pie*dolnik, zamiast tego można by spokojnie wprowadzić przeciążenia...


--------------------
KTOŚ TU PACZY???

Kompedium wiedzy
Go to the top of the page
+Quote Post
sowiq
post 30.01.2014, 10:28:03
Post #5





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Już sobie wyobrażam to debugowanie i zastanawianie się przez 3 godziny dlaczego parametry się nie zgadzają facepalmxd.gif
  1. function suma($a, $b, $c, $d)
  2. {
  3. echo $a + $b + $c + $d;
  4. }
  5.  
  6. $argumenty = [3, 4];
  7. suma(1, ...$argumenty, 5);


Ciekawe co się stanie w takim przypadku:
  1. $argumenty = [3, 4, 5, 6];
  2. suma(1, ...$argumenty, 7);


Albo w jeszcze ciekawszym:
  1. function suma2($a, $b, $c, ...$d)
  2. {
  3. echo $a + $b + $c + $d;
  4. }
  5. $argumenty = [3, 4, 5, 6];
  6. suma2(1, ...$argumenty, 7);


Ode mnie +1 dla przeciążeń.

Ten post edytował sowiq 30.01.2014, 10:28:48
Go to the top of the page
+Quote Post
Tuminure
post 30.01.2014, 10:48:08
Post #6





Grupa: Zarejestrowani
Postów: 178
Pomógł: 49
Dołączył: 16.04.2012
Skąd: Bytom

Ostrzeżenie: (0%)
-----


  1. suma2(1, ...$argumenty, 7);


Może od razu:
  1. suma2(...$argumenty, ...$argumenty, ...$argumenty);
Go to the top of the page
+Quote Post
Spawnm
post 30.01.2014, 11:28:48
Post #7





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




... to totalna porażka -__-
Go to the top of the page
+Quote Post
!*!
post 30.01.2014, 11:42:01
Post #8





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

Ostrzeżenie: (0%)
-----


Cytat(Spawnm @ 30.01.2014, 11:28:48 ) *
... to totalna porażka -__-

To dopiero alpha. W wersji beta "..." zamienią na ",,," ponieważ komuś z "dev teamu" kropka będzie się kojarzyła z łącznikiem np. zmiennych i nie będzie chciał wywoływać w ten sposób zamieszania. W wersji końcowej przecinki zamienią na coś głupszego np. @@@, *** lub !*! biggrin.gif

  1. suma2(1, !*!$argumenty, 7);


Ten post edytował !*! 30.01.2014, 11:43:07


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
buliq
post 30.01.2014, 11:48:18
Post #9





Grupa: Zarejestrowani
Postów: 559
Pomógł: 93
Dołączył: 4.03.2008
Skąd: Olsztyn

Ostrzeżenie: (0%)
-----


Cytat(sowiq @ 30.01.2014, 10:28:03 ) *
...
Ciekawe co się stanie w takim przypadku:
  1. $argumenty = [3, 4, 5, 6];
  2. suma(1, ...$argumenty, 7);

...


Funkcja weźmie pierwsze 4 parametry?

Cytat(sowiq @ 30.01.2014, 10:28:03 ) *
...
Albo w jeszcze ciekawszym:
  1. function suma2($a, $b, $c, ...$d)
  2. {
  3. echo $a + $b + $c + $d;
  4. }
  5. $argumenty = [3, 4, 5, 6];
  6. suma2(1, ...$argumenty, 7);

...


Ty wywali błąd bo $d to tablica.

@up dobre!

Ten post edytował buliq 30.01.2014, 11:50:14


--------------------
KTOŚ TU PACZY???

Kompedium wiedzy
Go to the top of the page
+Quote Post
mar1aczi
post 30.01.2014, 11:54:51
Post #10





Grupa: Zarejestrowani
Postów: 731
Pomógł: 141
Dołączył: 9.05.2011
Skąd: śląskie

Ostrzeżenie: (0%)
-----


Ten trzykropek to (jest/będzie) trzy razy naciskany klawisz ze znakiem kropki, czy może klawisz kropki naciskany z przytrzymanym prawym altem (jak w Wordzie) biggrin.gif


--------------------
Szanuj innych czas! Kliknij , gdy pomocną wskazówkę otrzymasz.
Go to the top of the page
+Quote Post
tomxx
post 30.01.2014, 11:55:34
Post #11





Grupa: Zarejestrowani
Postów: 172
Pomógł: 27
Dołączył: 5.10.2013

Ostrzeżenie: (0%)
-----


Cytat(sowiq @ 30.01.2014, 10:28:03 ) *
Ciekawe co się stanie w takim przypadku:
  1. $argumenty = [3, 4, 5, 6];
  2. suma(1, ...$argumenty, 7);
W takim przypadku do funkcji zostaną przyjęte argumenty: 1, 3, 4, 5.
Cytat(sowiq @ 30.01.2014, 10:28:03 ) *
Albo w jeszcze ciekawszym:
  1. function suma2($a, $b, $c, ...$d)
  2. {
  3. echo $a + $b + $c + $d;
  4. }
  5. $argumenty = [3, 4, 5, 6];
  6. suma2(1, ...$argumenty, 7);
A tutaj to chyba już nie przeczytałeś do końca mojego pierwszego postu, bo napisałem, że w takim wypadku $d będzie tablicą. Ewentualnie zamiast $d można użyć array_sum($d).
Cytat
To dopiero alpha. W wersji beta "..." zamienią na ",,," ponieważ komuś z "dev teamu" kropka będzie się kojarzyła z łącznikiem np. zmiennych i nie będzie chciał wywoływać w ten sposób zamieszania. W wersji końcowej przecinki zamienią na coś głupszego np. @@@, *** lub !*!
Już nie nabijaj się z tych mądrych deweloperów, którzy po nocach siedzą nad nowymi, bardzo dobrymi wersjami tego języka...
Go to the top of the page
+Quote Post
buliq
post 30.01.2014, 12:06:52
Post #12





Grupa: Zarejestrowani
Postów: 559
Pomógł: 93
Dołączył: 4.03.2008
Skąd: Olsztyn

Ostrzeżenie: (0%)
-----


Każdy ma prawo do własnej oceny czy zmiany są okej czy nie, a wielokropek w tym wypadku w opinii wielu developerów okaże się błędem ze strony Zend'a


--------------------
KTOŚ TU PACZY???

Kompedium wiedzy
Go to the top of the page
+Quote Post
!*!
post 30.01.2014, 12:14:17
Post #13





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

Ostrzeżenie: (0%)
-----


Cytat(buliq @ 30.01.2014, 12:06:52 ) *
Każdy ma prawo do własnej oceny czy zmiany są okej czy nie, a wielokropek w tym wypadku w opinii wielu developerów okaże się błędem ze strony Zend'a

Tylko, że niewiele to zmieni. To idealnie pasuje do dyskusji o przestrzeni nazw, wtedy też był raban jaki znak użyć i dlaczego "\" jako łącznik jest złe.


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
sowiq
post 30.01.2014, 12:25:18
Post #14





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


No tak, logiczne. Biorąc pod uwagę, że:
  1. $argumenty = [3, 4, 5, 6];
  2. suma2(1, ...$argumenty, 7);


Zostanie rozwinięte do:
  1. $argumenty = [3, 4, 5, 6];
  2. suma2(1, 3, 4, 5, 6, 7);


To wszystko staje się proste wink.gif
Go to the top of the page
+Quote Post
buliq
post 30.01.2014, 12:56:25
Post #15





Grupa: Zarejestrowani
Postów: 559
Pomógł: 93
Dołączył: 4.03.2008
Skąd: Olsztyn

Ostrzeżenie: (0%)
-----


Cytat(!*! @ 30.01.2014, 12:14:17 ) *
Tylko, że niewiele to zmieni. To idealnie pasuje do dyskusji o przestrzeni nazw, wtedy też był raban jaki znak użyć i dlaczego "\" jako łącznik jest złe.

Po co kłócić się o operator ... skoro to funkcjonalność jest lekko upośledzona? biggrin.gif


--------------------
KTOŚ TU PACZY???

Kompedium wiedzy
Go to the top of the page
+Quote Post
tomxx
post 30.01.2014, 14:50:59
Post #16





Grupa: Zarejestrowani
Postów: 172
Pomógł: 27
Dołączył: 5.10.2013

Ostrzeżenie: (0%)
-----


Cytat
No tak, logiczne. Biorąc pod uwagę, że:
  1. $argumenty = [3, 4, 5, 6];
  2. suma2(1, ...$argumenty, 7);


Zostanie rozwinięte do:
  1. $argumenty = [3, 4, 5, 6];
  2. suma2(1, 3, 4, 5, 6, 7);
Zostanie rozwinięte do suma2(1, 3, 4, 5), ponieważ funkcja ta przyjmuje tylko cztery argumenty.

Ten post edytował tomxx 30.01.2014, 14:51:35
Go to the top of the page
+Quote Post
Spawnm
post 30.01.2014, 15:00:04
Post #17





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




Cytat
Zostanie rozwinięte do suma2(1, 3, 4, 5), ponieważ funkcja ta przyjmuje tylko cztery argumenty.

Funkcja zawsze przyjmuje wszystkie argumenty, nawet jeśli tego nie widać func_get_args wink.gif
Go to the top of the page
+Quote Post
freemp3
post 30.01.2014, 15:26:49
Post #18





Grupa: Zarejestrowani
Postów: 467
Pomógł: 77
Dołączył: 6.09.2008
Skąd: Miechów / Kraków

Ostrzeżenie: (0%)
-----


Cytat
Funkcja zawsze przyjmuje wszystkie argumenty, nawet jeśli tego nie widać func_get_args

Otóż to wink.gif Fajnie, że poprawili stałe, ale co do tych trzech kropeczek mam złe przeczucia tongue.gif Dodawanie ich na końcu listy parametrów jak najbardziej może się przydać, ale wstawianie tablicy w środku listy parametrów jakoś do mnie nie przemawia. Czas pokaże co z tego wyjdzie smile.gif


--------------------
Niemożliwym jest stworzenie czegokolwiek idiotoodpornego, ponieważ idioci są wyjątkowo pomysłowi.

https://www.aroch.pl
https://themeforest.net/user/aroch
https://www.astroblog.aroch.pl
https://www.4geeks.pl
Go to the top of the page
+Quote Post
tomxx
post 30.01.2014, 16:02:17
Post #19





Grupa: Zarejestrowani
Postów: 172
Pomógł: 27
Dołączył: 5.10.2013

Ostrzeżenie: (0%)
-----


Czytałem też, że być może pojawi się zmienna kolejność argumentów w tablicy (np. foo("arg4"=>1, "arg1"=>2, "arg2"=>1, "arg3"=>3);.
Go to the top of the page
+Quote Post
abjk
post 2.02.2014, 01:28:15
Post #20





Grupa: Zarejestrowani
Postów: 29
Pomógł: 6
Dołączył: 5.04.2013
Skąd: W

Ostrzeżenie: (0%)
-----


Składnia variadic functions daje czytelność. Samo zastosowanie func_get_args() nie jest przejrzyste.
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.03.2024 - 11:28