Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Do czego służą przestrzenie nazw
daniel1302
post
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
Go to the top of the page
+Quote Post
Exek
post
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"
Go to the top of the page
+Quote Post
daniel1302
post
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ę?
Go to the top of the page
+Quote Post
Exek
post
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")
Go to the top of the page
+Quote Post
webdice
post
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ć.
Go to the top of the page
+Quote Post
daniel1302
post
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
Go to the top of the page
+Quote Post
Exek
post
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
Go to the top of the page
+Quote Post
daniel1302
post
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';
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 23.08.2025 - 11:53