В последних версиях PHP появились namespace'ы — пространства имен.
У них есть очевидные преимущества:
— помогают сократить названия классов;
— позволяют избежать конфликтов имен;
— помогают лучше структурировать классы.
Но, помимо этого, есть еще преимущество, на которое не так часто обращают внимание: namespace'ы помогают разработчику видеть зависимости того или иного класс, причем это не приводит к какому-либо оверхеду. Поясню.
Помните, как в PHP4 мы писали перед объявлением класса:
Потом пришел PHP5, появился __autoload() и spl_autoload_register() — мы убрали безусловные подключения файлов и вместе с ними оверхед. Все хорошо, да вот только теперь не так очевидно стало, какие же другие классы/файлы нужны для нашего класса, чтобы он нормально функционировал.
И тут — появляетсябатут php-5.3. Теперь, без лишнего оверхеда мы можем, и даже не только можем, но и в определенных случаях должны — указывать зависимости нашего класса:
Отметим, что при использовании use не происходит подключения файлов с классами.
Теперь, как говорится, ипрограммисты волки сыты, и харды овцы целы.
У них есть очевидные преимущества:
— помогают сократить названия классов;
— позволяют избежать конфликтов имен;
— помогают лучше структурировать классы.
Но, помимо этого, есть еще преимущество, на которое не так часто обращают внимание: namespace'ы помогают разработчику видеть зависимости того или иного класс, причем это не приводит к какому-либо оверхеду. Поясню.
Помните, как в PHP4 мы писали перед объявлением класса:
require_once "MyClassParent.php";
require_once "MyClassDependency.php";
Потом пришел PHP5, появился __autoload() и spl_autoload_register() — мы убрали безусловные подключения файлов и вместе с ними оверхед. Все хорошо, да вот только теперь не так очевидно стало, какие же другие классы/файлы нужны для нашего класса, чтобы он нормально функционировал.
И тут — появляется
use myns::MyClassParent;
use anotherns::MyClassDependency;
Отметим, что при использовании use не происходит подключения файлов с классами.
Теперь, как говорится, и