Jak wiadomo, przestrzenie nazw w PHP nie istnieją. Czasem ich brakuje, czasem nie robi różnicy… Ale jest dość prosty sposób na emulację tego braku.

Definiujemy sobie klasę o nazwie takiej, jak pożądana przestrzeń nazw, na przykład Path. W niej definiujemy sobie jakieś metody, np. join(), split() etc. Metody te definiujemy jako statyczne (static- nie chcemy musieć inicjalizować obiektu i korzystać z jego instancji, tylko chcemy mieć dostęp do samych metod. Klasę warto zdefiniować jako abstrakcyjną (abstract) - wtedy nie będziemy mieć możliwości utworzyć instancji jej obiektu. Efekt końcowy:

abstract class Path {
    public static function join()
    {
        // tresc funkcji
    }
    public static function split()
    {
        //tresc funkcji
    }
}

A korzystamy z niej:

Path::join('a', 'b');
Path::split('a/b/c');

Voila! :)

Jedynym problemem jest tutaj brak możliwości zaimportowania danej funkcji do ‘zwykłej’ przestrzeni nazw, czyli czegoś co w C++ robi dyrektywa using. Ale myślę, że nie po to chcemy stworzyć własną przestrzeń nazw, żeby z niej później wychodzić :)


A Ty? Co o tym myślisz?

Możesz używać w komentarzach następujących znaczników:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Sblam! Antyspam