Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Do czego służą przestrzenie nazw
Forum PHP.pl > Forum > PHP
daniel1302
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
Exek
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"
daniel1302
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ę?
Exek
Wiesz, aż mnie zaciekawiłeś 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")
webdice
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ć.
daniel1302
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
Exek
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
daniel1302
Muszę szukać bo
require 'MyProject/Db/Connection.php';
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.