Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [namespace] Przestrzenie nazw w PHP, Czy jest w ogóle sens używać ich?
starach
post
Post #1





Grupa: Zarejestrowani
Postów: 999
Pomógł: 30
Dołączył: 14.01.2007
Skąd: wiesz ?

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


Naszła mnie taka myśl przed chwilą. Przestrzenie nazw zostały wymyślone jako kategorie obiektów, ale tak na prawdę co przemawia za używaniem ich. Jeszcze chwilę temu chciałem przebudować swój framework wprowadzając przestrzenie nazw bazując na Symfony 2.0, które podobno jest x razy szybsze właśnie głównie ze względu na ich wykorzystanie. Tak na prawdę jednak zamiast nazwy typu sysCoreApplication dostajemy \sys\Core::Application. Jeśli wprowadzić keszowanie załadowanych plików klas powiedzmy na konkretny url to cały wspaniały czar wydajności pryska jak bańka mydlana, a mnie osobiście bardziej się podoba pierwszy zapis niż drugi.

Jestem ciekaw waszego zdania na temat.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
Zyx
post
Post #2





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

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


Przestrzenie nazw zostały wprowadzone przede wszystkim dla wygody. Nie wiem, jak Tobie, ale mi się np. niezbyt podoba w wielu sytuacjach pisanie tasiemców w stylu Foo_Controller_Action_Extra_Management_Hook_Bar, np.:

  1. $foo->initialize(
  2. new Foo_Controller_Action_Extra_Management_Hook_Bar('foo'),
  3. new Foo_Controller_Action_Extra_Management_Hook_Bar('bar'),
  4. new Foo_Controller_Action_Extra_Management_Hook_Bar('joe')
  5. );


W przestrzeniach nazw pełna kwalifikowana nazwa oczywiście też może być długa, ale możemy za to zrobić import:

  1. use \Foo\Controller\Action\Extra\Management\Hook as ControlHook;
  2.  
  3. $foo->initialize(
  4. new ControlHook\Bar('foo'),
  5. new ControlHook\Bar('bar'),
  6. new ControlHook\Bar('joe')
  7. );


Ponadto tu jest jeszcze jeden powód:

http://www.zyxist.com/pokaz.php/standaryzacja_php


--------------------
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
batman
post
Post #3





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Przestrzenie nazw są stosowane przede wszystkim po to, by stworzyć "pojemnik" na klasy. Dzięki takiemu podejściu nie musisz pilnować nazw klas, ponieważ nie muszą być unikatowe w skali całego projektu, a jedynie przestrzeni nazw. Nie ma to nic wspólnego z długością nazwy klasy.

Dobry przykład znajdziesz u mnie na blogu - Modułowe aplikacje PHP z wykorzystaniem phar i namespace


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post
starach
post
Post #4





Grupa: Zarejestrowani
Postów: 999
Pomógł: 30
Dołączył: 14.01.2007
Skąd: wiesz ?

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


Ehh powinienem częściej wasze blogi czytać. No dobra w takim razie jakie są konwencje nazywania przestrzeni nazw. To znaczy jak na przykład nadać im unikalność.
Go to the top of the page
+Quote Post
wookieb
post
Post #5





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




No przecież zyxist podał ci fajny art na ten temat.


--------------------
Go to the top of the page
+Quote Post
starach
post
Post #6





Grupa: Zarejestrowani
Postów: 999
Pomógł: 30
Dołączył: 14.01.2007
Skąd: wiesz ?

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


No i przeczytałem go jak i wcześniejszy wpis o domknięciach. Blog batmana też. Ale ani tutaj ani tutaj nie ma podanych konwencji jakich należy się trzymać tworząc nową przestrzeń nazw.
Go to the top of the page
+Quote Post
Crozin
post
Post #7





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Bo wśród społeczności PHP jeszcze się takie konwencje nie utworzyły (z tego co kojarzę), jednakże na start masz dwie możliwości:
1) Względem nazwy projektu (\Symfony\...)
2) Względem adresu strony projektu (\org\symfony-project\...) - ten model jest stosowany np. w Javie.

A to jakie będą kolejne elementy nazwy to już tylko i wyłącznie Twoja sprawa.
Go to the top of the page
+Quote Post
Zyx
post
Post #8





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

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


starach -> nie wiem, jak ty go czytałeś smile.gif. Cały wpis jest poświęcony właśnie tematowi standaryzacji nazewnictwa i omawia m.in. konwencję proponowaną jako standard:

* Pierwszy człon jest zawsze nazwą dostawcy (projektu) i musi być przestrzenią nazw.
* Człony mogą być albo przestrzeniami nazw, albo separowane przez _, jak w Zend Frameworku.
* Ostatni człon jest tożsamy z nazwą pliku z klasą/interfejsem.

Natomiast to, co jest w środku, zależy już od Ciebie. Dopóki pierwszy człon masz unikalny/charakterystyczny, masz spokój z tym, co będzie dalej, pod warunkiem że we własnych plikach będziesz jako tako pilnować porządku.

Konwencji javowej z odwróconą nazwą domeny nie polecam, gdyż uniemożliwi to działanie poprawne rozszerzeniu SplClassLoader, które ma szansę pojawić się niebawem w bibliotece SPL wbudowanej w PHP.


--------------------
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

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 Aktualny czas: 19.08.2025 - 16:30