![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 602 Pomógł: 30 Dołączył: 1.08.2007 Skąd: Nowy Sącz Ostrzeżenie: (0%) ![]() ![]() |
Witam do czego służą w php 5.3 przestrzenie nazw.
Przeczytałem to i 2 częśc lecz tu są same przykłady http://wortal.php.pl/wortal/artykuly/php/p...php_5_3_czesc_1 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 120 Pomógł: 10 Dołączył: 16.08.2007 Ostrzeżenie: (0%) ![]() ![]() |
przeczytaj jeszcze raz, tym razem wszystkie słowa w tekście, nie tylko przykłady.
hint: W ten sposób umożliwiliśmy sobie użycie dwóch klas "MyCompany::Blog::User" i "MyCompany::CMS::User" |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 602 Pomógł: 30 Dołączył: 1.08.2007 Skąd: Nowy Sącz Ostrzeżenie: (0%) ![]() ![]() |
Ok więc posłużę się tym artem
Mam plik CMS.php Kod <?php namespace MyCompany::CMS; class User { public function set( $attribute, $value ) { $this->$attribute = $value; } public function save() { echo '<p>CMS user ' . $this->fullname . ' saved</p>'; } } ?> Tutaj mam BLOG.php Kod <?php namespace MyCompany::Blog; class User { public function set( $attribute, $value ) { $this->$attribute = $value; } public function save() { echo '<p>Blog user ' . $this->fullname . ' saved</p>'; } } ?> I klasy odpalam za pomoca $cms = new MyCompany::CMS::User; $blog = new MyCompany::Blog::User; I to pozwala na użycie takiej samej nazwy klasy w kilku elementach? Ale gdzie to zawierać na początku pliku czy gdzie? Ale jeśli nie będzie mi potrzebne użycie takiej samej nazwy klasy to co jakie to ma więcej zadań bo już 3 razy przeczytałem i tylko to jedno widzę? |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 120 Pomógł: 10 Dołączył: 16.08.2007 Ostrzeżenie: (0%) ![]() ![]() |
Wiesz, aż mnie zaciekawiłeś (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Ale znalazłem bardzo ciekawą rzecz: http://pt.php.net/manual/pl/language.namespaces.using.php obejrzyj przykład 2, w szczególności linijkę z $z. Popatrz się też na pozostałe rozdziały (w szczególności "Global space") |
|
|
![]()
Post
#5
|
|
Developer Grupa: Moderatorzy Postów: 3 045 Pomógł: 290 Dołączył: 20.01.2007 ![]() |
Zamykam, proszę o przesłanie popranego tytuły tematu, to otworzę.
Otwieram. EDIT: ~daniel1302 to nie o to chodzi że my zmienimy, regulamin jest po to aby go przestrzegać. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 602 Pomógł: 30 Dołączył: 1.08.2007 Skąd: Nowy Sącz Ostrzeżenie: (0%) ![]() ![]() |
Dzięki ale na przyszłość proszę moderatorów o zmiany nazwy wg gustu.
O tym wiedziałem o USE ale to trzeba przetestować bo co mi to da? Kod use Rody::Wyszukaj::Imie; $rod = new Imie('Daniel'); Jak moge dać Kod $rod = new Imie('Daniel'); Bo aliansy wiem po co bo: Cytat Prędzej czy później konieczne będzie wykorzystanie dwóch klas o identycznych nazwach (ale innych przestrzeniach) w obrębie jednego skryptu. W takiej sytuacji moglibyśmy importować przestrzenie lub same klasy z wykorzystaniem aliasów, tak jak w poniższym przykładzie: To musi mieć "głębsze" zastosowanie BO jeśli mam tylko grupować pliki/klasy np w Forum i Game to co mi to daje tylko nadrabiam kod Ten post edytował daniel1302 11.09.2008, 17:34:24 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 120 Pomógł: 10 Dołączył: 16.08.2007 Ostrzeżenie: (0%) ![]() ![]() |
No ale popatrz na kod:
Kod <?php require 'MyProject/Db/Connection.php'; use MyProject::DB; use MyProject::DB::Connection as DbConnection; // tutaj $x = new MyProject::DB::Connection(); $y = new DB::connection(); $z = new DbConnection(); // i tutaj DB::connect(); ?> Dzięki temu możesz o wiele łatwiej zmienić nazwę klasy do obsługi bazy danych. Nie muszisz szukać po plikach (a jeśli musisz jest to wesz dokładnie gdzie i czego). Chcesz używać klasy MyConnection to robisz tylko: Kod use MyProject::DB::MyConnection as DbConnection
Ten post edytował Exek 11.09.2008, 17:56:02 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 602 Pomógł: 30 Dołączył: 1.08.2007 Skąd: Nowy Sącz Ostrzeżenie: (0%) ![]() ![]() |
Muszę szukać bo
require 'MyProject/Db/Connection.php'; |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 11:53 |