Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> Nowy namespace separator w PHP
occulkot
post 24.11.2008, 12:55:11
Post #1





Grupa: Zarejestrowani
Postów: 49
Pomógł: 5
Dołączył: 14.09.2003

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


Temat znany niektórym od przynajmniej miesiąca - a nie widze żeby był tu na forum poruszany.

w skrócie:
Developerzy PHP postanowili zmienić domyślny namespace separator. Po owocnej dyskusji podjęli dość kontrowersyjną decyzje aby nowym namespace separator został backslash - \. Uzasadnienie decyzji znajduje się tutaj - http://wiki.php.net/rfc/namespaceseparator. News informujący tutaj - http://news.php.net/php.internals/41374.

Na wielu blogach zaczęły się pojawiać komentarze np.:
http://loveandtheft.org/2008/10/26/set-sai...php-namespaces/
http://phpimpact.wordpress.com/2008/10/28/...es-controversy/

Jakie są wasze opinie na temat tej decyzji?

Dla mnie jest to poroniony pomysł i wprowadza niepotrzebne zamieszanie. Po raz kolejny próbuje się wymyślać koło na nowo i tworzyć rozwiązania "pod siebie" zamiast pod developerów.
Go to the top of the page
+Quote Post
bregovic
post 24.11.2008, 13:01:54
Post #2





Grupa: Zarejestrowani
Postów: 562
Pomógł: 15
Dołączył: 8.08.2003
Skąd: Denmark/Odense

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


Hmmm, nie wiem czy to temat na Hydepark, ale co tam. Z mojego zrozumienia całej dyskusji to wybór backslasha daje sens. Oczywiście estetycznie rzecz biorąc to Paamayim Nekudotayim (:: ) byłby znacznie lepszy, ale weźmy pod uwagę poniższy przykład:
  1. <?php
  2. Some::Fun::stuff()
  3. ?>

I niech mi ktoś powie czy stuff() jest funkcją statyczną klasy Fun, czyteż zwyczajną funkcją w przestrzeni Fun. Użycie backslasha eliminuje ten problem. A backslash jest i tak lepszy (IMO) od innych proponowanych rozwiązań jak ::: cz :.:

Ten post edytował bregovic 24.11.2008, 13:02:22


--------------------
Prank - for the fun. Mac - for the simplicity. Deviantart - for the kick.
Life is ours, We live it our way -- Metallica
Go to the top of the page
+Quote Post
mike
post 24.11.2008, 13:04:09
Post #3





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Cytat(occulkot @ 24.11.2008, 12:55:11 ) *
Temat znany niektórym od przynajmniej miesiąca - a nie widze żeby był tu na forum poruszany.
A co tu poruszać? Możemy sobie gadać a i tak wiadomo, że developerzy PHP to ludzie, których większośc decyzji jest zła. Więc co to zmieni?

Ja uważam, że :: było najlepszym rozwiązaniem.

Pomimo tego przykład na blogu w pierwszym linku pokazuje raczej złe nawyki niż problem (koleś źle się zabrał za opisanie problemu). Stringi w takich przypadkach powinno się umieszczać w apostrofach.
Go to the top of the page
+Quote Post
occulkot
post 24.11.2008, 13:10:05
Post #4





Grupa: Zarejestrowani
Postów: 49
Pomógł: 5
Dołączył: 14.09.2003

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


Cytat
A co tu poruszać? Możemy sobie gadać a i tak wiadomo, że developerzy PHP to ludzie, których większośc decyzji jest zła. Więc co to zmieni?
Zawsze mozna liczyc ze jak sie odpowidnio duzy szum dookola sprawy zrobi to ktos sie poknie w glowe i zobaczy bezsenownosc tego rozwaizania

Cytat
I niech mi ktoś powie czy stuff() jest funkcją statyczną klasy Fun, czyteż zwyczajną funkcją w przestrzeni Fun

Jak pokazuje drugi podlikowany blog, w javie, C, pythonie nie ma tego typu problemow winksmiley.jpg
Go to the top of the page
+Quote Post
bregovic
post 24.11.2008, 13:19:20
Post #5





Grupa: Zarejestrowani
Postów: 562
Pomógł: 15
Dołączył: 8.08.2003
Skąd: Denmark/Odense

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


Dyskusja o namespace'ach toczy się bodajże od pięciu lat. Ja tam się cieszę że będą, a takie detale jak ten separator to fistaszki. Znacznie bardziej interesująca jest IMO tematyka namespace resolution, która jest jeszcze nie rozstrzygnięta. A co do szumu, occulkot, to bym na to nie liczył. Ludzie na @internals próbowali, ale większość devów jest definitywnie zmęczona tą tematyką, i czują że podjęli wybór.
Cytat
w javie, C, pythonie nie ma tego typu problemow

Jasne, i wszystko fajnie, ale Java, C i Python to diametralnie inne języki z innym designem. Ich rozwiązanie nie sprawdziłyby się w PHP (niestety).

Ten post edytował bregovic 24.11.2008, 13:20:31


--------------------
Prank - for the fun. Mac - for the simplicity. Deviantart - for the kick.
Life is ours, We live it our way -- Metallica
Go to the top of the page
+Quote Post
mike
post 24.11.2008, 13:32:38
Post #6





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Cytat(bregovic @ 24.11.2008, 13:19:20 ) *
Jasne, i wszystko fajnie, ale Java, C i Python to diametralnie inne języki z innym designem. Ich rozwiązanie nie sprawdziłyby się w PHP (niestety).
Ale z drugiej strony pogłądbianie smietnika jakim jest PHP to też zle wyjście.
To, że PHP taki a nie inny "design" i taką specyfikę to często efekt tego, że nikt nie patrzył w przyszłość. Pewnie chłopaki kierują się mottem "Zróbmy graciarnie, będzie fajnie". Na wprowadzanie jednolitych rozwiązań nie jest nigdy za późno.
Go to the top of the page
+Quote Post
bregovic
post 24.11.2008, 13:57:26
Post #7





Grupa: Zarejestrowani
Postów: 562
Pomógł: 15
Dołączył: 8.08.2003
Skąd: Denmark/Odense

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


mike, zgadzam się z tobą, i w idealnym świecie, ktoś wziąłby się do kupy i napisał OOP w PHP od nowa, jednolicie i czysto. Jednak developerzy PHP są zawieszeni w jakimś ekstremistycznym podejściu do utrzymania BC. Dopóki od tego nie odejdą raczej nic się nie zmieni. Nie bronię ich podejścia, jeno konstatuję.


--------------------
Prank - for the fun. Mac - for the simplicity. Deviantart - for the kick.
Life is ours, We live it our way -- Metallica
Go to the top of the page
+Quote Post
Cysiaczek
post 24.11.2008, 14:14:18
Post #8





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Parodia biggrin.gif łoo matko backslash ahahahah
Niech ktoś tym panom zabawki zabierze.


--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
Go to the top of the page
+Quote Post
dr_bonzo
post 24.11.2008, 14:18:49
Post #9





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


Cytat
w idealnym świecie, ktoś wziąłby się do kupy i napisał OOP w PHP od nowa, jednolicie i czysto. Jednak developerzy PHP są zawieszeni w jakimś ekstremistycznym podejściu do utrzymania BC. Dopóki od tego nie odejdą raczej nic się nie zmieni.

Sa inne jezyki z lepszym OOP, skoro PHP ma miec nowe OOP (i zakladam ze obiektowe bilbioteki) i trzeba sie uczyc wszystkiego od nowa i nikt tego nie bedzie mial na serwerach to po co czekac, jak mozna juz teraz przesiasc sie na Ruby, Python.


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
tiraeth
post 24.11.2008, 14:22:31
Post #10





Grupa: Przyjaciele php.pl
Postów: 1 789
Pomógł: 41
Dołączył: 30.10.2003
Skąd: Wrocław

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


Hmm... Wydaje mi się, że to dobre posunięcie.

Sam przykład:
Kod
echo Foo::Bar::doe();


Co miałby wykonywać? Statyczną metodę w obiekcie Bar na przestrzeni Foo, czy funkcję doe z przestrzeni Foo? A co, jak mielibyśmy i funkcję doe na przestrzeni, i statyczną metodę doe na obiekcie Bar? Zastosowanie Foo\Bar::doe(); jeszcze da się znieść.

Co do argumentu "Foo\tBar", to powiem, że przyjętym standardem jest rozpoczynanie nazwy klasy z dużej litery. A kolejny argument, że niby ogranicza to wolność wyboru nazwy, to może zezwolić na nazwy zaczynające się od $, :, :: oraz &... ? W końcu powinna być wolność.
Go to the top of the page
+Quote Post
Cysiaczek
post 24.11.2008, 14:43:59
Post #11





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Nie jestem pewien, bo jeszcze się nie bawiłem na tyle, by sprawdzić jaki jest poziom zagnieżdżeń, ale logiczne się wydaje, że Foo::Bar::oops() to metoda oops() klasy Bar w przestrzeni Foo i taka interpretacja wydaje mi się naturalna.

Pozdrawiam


--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
Go to the top of the page
+Quote Post
dr_bonzo
post 24.11.2008, 16:14:13
Post #12





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


Cytat
Co miałby wykonywać? Statyczną metodę w obiekcie Bar na przestrzeni Foo, czy funkcję doe z przestrzeni Foo? A co, jak mielibyśmy i funkcję doe na przestrzeni, i statyczną metodę doe na obiekcie Bar?

Jednoznaczne ale, hmm, runtime-dependent czyli nie wiesz co uruchomi dopoki skrypt nie zostanie uruchomiony (bo np nie zaladowales 1 pliku itp)
http://pl.php.net/manual/en/language.namespaces.rules.php


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
Zyx
post 24.11.2008, 16:45:59
Post #13





Grupa: Zarejestrowani
Postów: 952
Pomógł: 154
Dołączył: 20.01.2007
Skąd: /dev/oracle

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


Odnośnie zagnieżdżeń. W zapisie:

Foo::Bar::Joe

elementy "Foo" i "Bar" muszą być przestrzeniami nazw, jeśli nie dopuszczamy zagnieżdżania klas.

Foo::Bar::Joe()

Ten zapis jest wieloznaczny - może oznaczać funkcję w przestrzeni "Foo::Bar", albo metodę statyczną klasy "Bar" w przestrzeni nazw "Foo".

Moim zdaniem rozwiązania problemu należałoby poszukać w innym miejscu, mianowicie przyjrzeć się obsłudze klas statycznych, w która w PHP może być w 100% jednoznacznie zrobiona jednym operatorem (według poniższych wzorów dokonuję parsowania obsługi OOP w OPT):

Kod
$obiekt->pole
$obiekt->metoda()
Klasa->poleStatyczne
Klasa->metodaStatyczna()
Klasa->metodaStatyczna()->metodaObiektu() // od drugiego "->" jedynym wyjściem są już normalne obiekty


Wtedy :: mógłby być swobodnie stosowany do przestrzeni nazw. Natomiast sam wybór backslasha to dla mnie już dyskusja w stylu "co jest lepsze: kolor zielony czy czerwony". Z przepisywaniem PHP życzę ogólnie powodzenia. Może i sam bym się za to kiedyś wziął, ale na razie to podejście polskich programistów do open-source skutecznie mnie do tego zniechęca.


--------------------
Specjalista ds. głupich i beznadziejnych, Zyx
Nowości wydawnicze: Open Power Collector 3.0.1.0 | Open Power Autoloader 3.0.3.0
Go to the top of the page
+Quote Post
NuLL
post 24.11.2008, 18:40:48
Post #14





Grupa: Zarejestrowani
Postów: 2 262
Pomógł: 21
Dołączył: 3.05.2004
Skąd: Sopot, Krakow, W-wa

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


Ja dlugo o tym myslalem - wydaje mi sie byc poronionym pomyslem. BC - niech sobie robie co chca. Ja sie zgadzam z @dr_bonzo nt jezykow z lepszym OOP - i osobiscie zaczynam sie sklaniac w ta strone. Zreszta moja randka z PHPem powoli sie konczy smile.gif Propagandy nie mam zamiaru szerzyc tak wiec dziekuje za uwage winksmiley.jpg

Ten post edytował NuLL 24.11.2008, 18:41:57


--------------------
Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
Go to the top of the page
+Quote Post
erix
post 24.11.2008, 18:50:14
Post #15





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Heh, jak znam życie, to trzeba poczekać do edycji stabilnej, dopiero wtedy wyjdzie, kiedy zdecydują się na coś konkretnego. tongue.gif


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Cysiaczek
post 24.11.2008, 22:36:02
Post #16





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




@Zyx - rzeczywiście pomysł z -> jest przedni - podsunąłeś go devom php? smile.gif
@NuLL - marudzisz, a podobno to ja jestem marudny happy.gif

Pozdrawiam


--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
Go to the top of the page
+Quote Post
konys
post 24.11.2008, 23:37:53
Post #17





Grupa: Zarejestrowani
Postów: 100
Pomógł: 7
Dołączył: 5.11.2005

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


W sobotę miałem okazję uczestniczyć w konferencji, na której poruszany był temat PHP 5.3 oraz oczywiście namespace. Generalnie widać było, że zespół jest mocno zmęczony wałkowaniem tego tematu. Steph Fox przyznała, że mieli wybór między opcjami złymi a gorszymi. Rozpatrywano paamayim nekudotayim jako separator ale ze względów na konstrukcję enginu ta opcja odpadła. Na propozycję poprawy enginu Scott MacVicar odparł, że patche są mile widziane smile.gif. Co do namespaców to jeszcze niczego nie wiadomo na pewno - ta część ma być jeszcze poddana gruntownym modyfikacjom.
A tak swoją drogą to nie miałem pojęcia, że core team PHP ma wielkie kłopoty z wolontariuszami. Widać, że bardzo im zależy na osobach chcących się zaangażować w rozwój języka - potrzebują właściwie ludzi do wszystkiego - od pisania modułów, poprzez testy aż po tworzenie dokumentacji. Tak więc do dzieła...
Go to the top of the page
+Quote Post
Morkai
post 25.11.2008, 22:22:59
Post #18





Grupa: Zarejestrowani
Postów: 24
Pomógł: 3
Dołączył: 25.08.2005

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


W C# jak mamy klasę Bar w przestrzeni nazw Foo oraz przestrzeń nazw Foo.Bar dostajemy błąd:
Cytat
The namespace 'Foo' already contains a definition for 'Bar'


Dlaczego by nie zrobić takich ograniczeń w PHP?

  1. <?php
  2.  
  3. namespace Foo;
  4.  
  5. class Bar
  6. {
  7.  
  8. }
  9.  
  10. function baz()
  11. {
  12.  
  13. }
  14.  
  15. namespace Foo::Bar; // Fatal error
  16.  
  17. namespace Foo::baz; // Fatal error
  18. ?>
Go to the top of the page
+Quote Post
erix
post 25.11.2008, 22:30:51
Post #19





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Tak się zastanawiam, co by to było, gdyby społeczność programistów zbojkotowała 6. wersję procesora po wypuszczeniu...

Może wreszcie developerzy poszliby po rozum do głów... :/


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Zyx
post 26.11.2008, 15:35:37
Post #20





Grupa: Zarejestrowani
Postów: 952
Pomógł: 154
Dołączył: 20.01.2007
Skąd: /dev/oracle

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


A nie lepiej zorganizować akcję, zebrać ileśtam tysięcy podpisów i pokazać, ile osób pragnie bardziej odważnych zmian? Póki "szóstka" ma status "dev", wszystko jest możliwe; gdy wejdzie w stan bety, już nie bardzo.

Cysiaczek -> wyobraź sobie, że tak.


--------------------
Specjalista ds. głupich i beznadziejnych, Zyx
Nowości wydawnicze: Open Power Collector 3.0.1.0 | Open Power Autoloader 3.0.3.0
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: 20.07.2025 - 10:38