Andrzej Prażmo

Andrzej Prażmo programista .NET,
właściciel firmy SEE
Software

Temat: Built-in web server

W nowym PHP (5.4): http://php.net/manual/en/features.commandline.webserve...
Nie trzeba będzie instalować LAMPa. Fajny "ficzer" do testowania jakichś algorytmów.

konto usunięte

Temat: Built-in web server

Andrzej Prażmo:
W nowym PHP (5.4): http://php.net/manual/en/features.commandline.webserve...
Nie trzeba będzie instalować LAMPa. Fajny "ficzer" do testowania jakichś algorytmów.

super fajnie, ale narazie mało kto będzie używał 5.4 ze względu na zbytnią nowość i braku na hostingach
Paweł Malisak

Paweł Malisak PHP Developer

Temat: Built-in web server

na iq.pl już jakiś czas temu wprowadzili 5.4 do wyboru ;)

konto usunięte

Temat: Built-in web server

Przemysław R.:
Andrzej Prażmo:
W nowym PHP (5.4): http://php.net/manual/en/features.commandline.webserve...
Nie trzeba będzie instalować LAMPa. Fajny "ficzer" do testowania jakichś algorytmów.

super fajnie, ale narazie mało kto będzie używał 5.4 ze względu na zbytnią nowość i braku na hostingach

Nie zgodzę się. Sam miałem dostępne php6-dev na jednym z hostingów gdzie urzęduję. Wiele firm już tak nie odkłada tego typu rzeczy. Zwłaszcza że sami webdeveloperzy zaczęli się podciągać. Ostatnimi miesiącami jak dostaję propozycję pracy to zawsze pada pytanie o php5.4. Sami używamy 5.3 od samego początku. I pewnie dość szybko przejdziemy na 5.4 bo już mam troszkę planów z tym związanych.

Zresztą wolno nam bo operujemy na dedyku :) Jak większość firm zresztą. Więc robisz co chcesz.

konto usunięte

Temat: Built-in web server

php 5.4 dojrzał już ze stabilnością do rozwiązań komercyjnych?

Temat: Built-in web server

php 5.4 dojrzał już ze stabilnością do rozwiązań komercyjnych?

Używam 5.4 od początku od pierwszego releasa. Jedyny problem jakiego doświadczam to niemożność wkompilowania memcache. Bug ciągle jest na etapie "assigned". Ale poza tym nie zaobserwowałem niepokojących rzeczy. Fakt faktem od początku 5.4 często pojawiają się kolejne podwersje więc coś tam ludzie znajdują.

Osobiście natomiast nie zauważyłem tego mega wzrostu wydajności, który pokazują benchmarki. W benchmarkach może to widać natomiast w żywej aplikacji zmiany są kosmetyczne w jedną lub drugą stronę.
Paweł Lipka

Paweł Lipka Student,
Politechnika
Warszawska

Temat: Built-in web server

Ale trudno oprzeć się inicjalizacji tablicy $arr = [1,2,3] :)

konto usunięte

Temat: Built-in web server

Paweł Lipka:
Ale trudno oprzeć się inicjalizacji tablicy $arr = [1,2,3] :)

Szczerze ? To jest bajka. Dołożenie array() to nie jest coś tak strasznego. Co mi się podoba to:
~ cechy na które już od dawna mam plan zagospodarowania
~ w nowej wersji domknięcia w końcu zaczną być bardziej przydatne bo będą obsługiwały $this.
~ możliwość dobrania się do metody/atrybutu obiektu bez potrzeby przypisania go do zmiennej (czyli (new Foo())->bar )
~ no i nie zapomnijmy o postępie wysyłania pliku http://docs.php.net/manual/en/session.upload-progress.php

Te rzeczy cieszą mnie o wiele bardziej niż wbudowany serwer z którego raczej korzystał nie będę i krótszy zapis tablicy.
Paweł Lipka

Paweł Lipka Student,
Politechnika
Warszawska

Temat: Built-in web server

Owszem Dariuszu masz całkowitą rację. Jednak mnie ta zmiana z tablicami mocno ucieszyła, widać lubię cieszyć się drobnostkami ;)

konto usunięte

Temat: Built-in web server

Dariusz Półtorak:
Paweł Lipka:
Ale trudno oprzeć się inicjalizacji tablicy $arr = [1,2,3] :)

Szczerze ? To jest bajka. Dołożenie array() to nie jest coś tak strasznego. Co mi się podoba to:
~ cechy na które już od dawna mam plan zagospodarowania
~ w nowej wersji domknięcia w końcu zaczną być bardziej przydatne bo będą obsługiwały $this.
~ możliwość dobrania się do metody/atrybutu obiektu bez potrzeby przypisania go do zmiennej (czyli (new Foo())->bar )
~ no i nie zapomnijmy o postępie wysyłania pliku http://docs.php.net/manual/en/session.upload-progress.php

Te rzeczy cieszą mnie o wiele bardziej niż wbudowany serwer z którego raczej korzystał nie będę i krótszy zapis tablicy.

Z mojej perspektywy wygląda to ciut inaczej:
- $this i bindTo w closure - oszczędzi masę pieprzenia (choć osobiście wolał bym by bindTo nazywał się bind)
- wywołanie metody z konstruktora ( (new Foo())->bar() ),
- wywołanie elementu z wyniku metody ( $Foo->bar()[0] ),
- traity, ale mam wrażenie, że będą miejscem powstawania wielkiego smrodu w kodzie,
- tak samo jak callable array - mądrze wykorzystane będzie dobre,
- callable jako nowy type hint,
- Class::{'method'} - wreszcie dodali,
- upload progress - HTML5 załatwia to bez potrzeby odpytywania serwera,
- tworzenie tablic przez [] - nie wnosi nic do języka - ułatwi tylko pracę ludziom którzy co chwilę skaczą między JS/Python/PHP itp.

konto usunięte

Temat: Built-in web server

Michał Wachowski:
Z mojej perspektywy wygląda to ciut inaczej:
- $this i bindTo w closure - oszczędzi masę pieprzenia (choć osobiście wolał bym by bindTo nazywał się bind)

Obstawiam że bind chcą do czegoś innego użyć. Do teraz im nie mogę wybaczyć że w PHP używa się -> zamiast ".". Ale mam nadzieje że coś za tym stoi w tym wypadku.
- wywołanie metody z konstruktora ( (new Foo())->bar() ),
- wywołanie elementu z wyniku metody ( $Foo->bar()[0] ),

Z tym ostatnim to racja ale wątpię bym to często używał, poza sytuacjami gdzie funkcja/metoda ZAWSZE zwróci tablicę mającą chociaż jeden element. W innym wypadku była by to wylęgarnia noticów.
- traity, ale mam wrażenie, że będą miejscem powstawania wielkiego smrodu w kodzie,

Jak ze wszystkim innym, w dobrych rękach to będzie świetne narzędzie. Ale obstawiam że będzie sporo takich co jak dostanie tego typu młotek to wszędzie zacznie widzieć gwoździe. Już widzę taki ruch z funkcjami anonimowymi.
- tak samo jak callable array - mądrze wykorzystane będzie dobre,
- callable jako nowy type hint,

True, obawiałem się że w wypadku przekazywania metod będzie trzeba za każdym razem wewnątrz sprawdzać is_callable(). Przy okazji tego tematu warto też przypomnieć że dodali też "default". Więc w wypadku:

function test($name, $mode = 0, array $data = array());


Zamiast robić to w ten sposób:
test('darek', 0, array('age' => 25));


będziesz mógł to zrobić tak:
test('darek', default, array('age' => 25));


Niby malutka zmiana ale z drugiej strony jak się parametr domyślny zmieni to nie będzie trzeba tego przestawiać w kodzie. Świetne na wypadek gdy jednego z parametrów mających wartość domyślną nie chcemy ruszać a kolejne już tak.
- Class::{'method'} - wreszcie dodali,
- upload progress - HTML5 załatwia to bez potrzeby odpytywania serwera,

True... ale IE chyba nadal nie ma wsparcia dla wysyłki plików poprzez Ajax. Więc zostanie chyba stary trik czyli iframe (w wypadku wysyłki prawie że "bez przeładowania").
- tworzenie tablic przez [] - nie wnosi nic do języka - ułatwi tylko pracę ludziom którzy co chwilę skaczą między JS/Python/PHP itp.

Zawsze to parę znaków mnie ale akurat ta zmiana nie wywarła na mnie większego znaczenia jak mówiłem. Teraz tylko poczekać aż troszkę się pobawią z przestrzeniami nazw bo tutaj są nadal spore braki.

konto usunięte

Temat: Built-in web server

Dariusz Półtorak:

Do teraz im nie mogę wybaczyć że w PHP używa się -> zamiast ".". Ale mam nadzieje że coś za tym stoi w tym wypadku.

Raczej nie zmienią, za dużo kombinowania by było. Pomyśl co by się działo przy $foo.$bar ($foo + $bar, czy $foo->$bar) :D
- wywołanie metody z konstruktora ( (new Foo())->bar() ),
- wywołanie elementu z wyniku metody ( $Foo->bar()[0] ),

Z tym ostatnim to racja ale wątpię bym to często używał, poza sytuacjami gdzie funkcja/metoda ZAWSZE zwróci tablicę mającą chociaż jeden element. W innym wypadku była by to wylęgarnia noticów.
Muszę sprawdzić czy ów wywołanie działa z ArrayAccess'ami (raczej sprawdzić czy nie działa, co było by nie lada wpadką).
Jeżeli nie ma problemów to wystarczy zaimplementować offsetGet() by zwracał dla nieistniejących kluczy null.
Co w sytuacji gdy używasz Foo::&offsetGet() jest niejako wymuszane.
Przykładowo:

if($Container->getComponent('Session')['bar'])) { ... }

True, obawiałem się że w wypadku przekazywania metod będzie trzeba za każdym razem wewnątrz sprawdzać is_callable(). Przy okazji tego tematu warto też przypomnieć że dodali też "default".
Default jest bardzo fajne - nie trzeba przepisywać wartości wpisanych w deklaracje.

konto usunięte

Temat: Built-in web server

Michał Wachowski:
Raczej nie zmienią, za dużo kombinowania by było. Pomyśl co by się działo przy $foo.$bar ($foo + $bar, czy $foo->$bar) :D

Stawiam na to że nie chcieli użyć $foo + $bar bo był by podobny kłopot jak w JavaScript. W zależności od typu albo wartości połączysz... albo dodasz. I trzeba na to uważać. Inna sprawa że pisząc obiektowo wpisuje się -> na tyle dużo że zaczyna to irytować. Przynajmniej mnie.

Inna rzecz którą bym chętnie zobaczył to zachowanie z Javy bodajże gdzie mając klasę

class Foo {
public $bar;
}


w metodzie możesz korzystać po prostu z $bar. W momencie jak metoda ma lokalną zmienną $bar

class Foo {
public $bar;

public function test() { $bar = 1; }
}


po prostu wracasz do korzystania z $this->... Rzecz o tyle przyjemna że w dużej mierze wyeliminowała by wpisywanie $this-> za każdym razem. Wtedy mogę im -> przebaczyć.

Fakt że trzeba by pewnie wrócić do używania var albo czegoś wewnątrz metody by zaakcentować że w wypadku lokalnej $bar nie chcemy korzystać z atrybutu obiektu ale chcemy stworzyć lokalną zmienną.

W sumie kto wie czy z tego nie było by więcej kłopotu jak pożytku. Dariusz Półtorak edytował(a) ten post dnia 20.09.12 o godzinie 12:27

konto usunięte

Temat: Built-in web server

Nah, przesadzasz.
Przecież mogli kazać pisać

class Foo(object):
bar = 0

def yada(self, yada):
return self.__class__.bar + yada


Więc nie jest źle. Są przecież języki gdzie używasz . -> i :: i mają swoje uzasadnione użycie.Michał Wachowski edytował(a) ten post dnia 20.09.12 o godzinie 13:48

konto usunięte

Temat: Built-in web server

Michał Wachowski:
Nah, przesadzasz.
Przecież mogli kazać pisać

class Foo(object):
bar = 0

def yada(self, yada):
return self.__class__.bar + yada


Więc nie jest źle. Są przecież języki gdzie używasz . -> i :: i mają swoje uzasadnione użycie.

Wiem wiem, po prostu po jakimś czasie wpisywanie -> irytuje. Zwłaszcza kiedy wcześniej przez parę godzin klepałeś w JS, wywołania robiłeś po kropce którą zawsze masz pod palcem i składa się na nią tylko jeden klawisz.

konto usunięte

Temat: Built-in web server

Dariusz Półtorak:
~ no i nie zapomnijmy o postępie wysyłania pliku http://docs.php.net/manual/en/session.upload-progress.php

takie rzeczy już były
http://pecl.php.net/package/uploadprogress

konto usunięte

Temat: Built-in web server

Krzysztof D.:
Dariusz Półtorak:
~ no i nie zapomnijmy o postępie wysyłania pliku http://docs.php.net/manual/en/session.upload-progress.php

takie rzeczy już były
http://pecl.php.net/package/uploadprogress

Aj, były, ale teraz masz to w standardzie. Tak samo jak się będę cieszył jeżeli pojawi się type hinting dla typów prostych mimo że można sobie doinstalować rozszerzenie które Ci to da już teraz.

Następna dyskusja:

web security - warsztaty




Wyślij zaproszenie do