Важной новой функцией PHP 5.3 являются пространства имен.
Эта функция была предложена в PHP5.0x, но позже была отменена и ее планируется реализовать в PHP6. И на этот раз PHP5.3 снова вышел «досрочно», что показывает, что разработчики придают ему большое значение и проявляют осторожность.
При официальном выпуске содержимое документа может устареть (возможно, документация устарела), поэтому вот краткое объяснение использования пространства имен: сначала объявите пространство имен и добавьте новое пространство имен ключевых слов, которое должно находиться по адресу начало файла класса
<?phpnamespace Project::Module;class User {const STATUS_OK = true;function Register($data) {...}...} Затем в контроллере (возможно, в других файлах) вы можете вызвать
$ user = новый, как этот Project::Module::User();$user->register($register_info); действительно такой же, как обычно, но мы можем соединить два независимых класса. Например,
Project::Module::User;Project::Module::Blog; Это упрощает описание и понимание взаимосвязи между переменными и классами в самом языке, тем самым избегая «традиционного» длинного метода именования Project_Module_Blog .
Приведенное выше описание может быть трудным для объяснения преимуществ использования пространств имен. Недавно добавленное использование ключевых слов и as может лучше объяснить проблему. Операторы use и as могут ссылаться и объявлять «псевдонимы» пространства имен. Например, код для создания экземпляра класса в приведенном выше контроллере можно написать так:
используйте Project::Module;$user = new Module::User();$user->register($register_info); или дажеиспользуйте Project
::User();$user->register($register_info);
::Module:: Пользователь как ModuleUser;$user = new ModuleUser;$user->register($register_info);Доступ к константам в классе также возможен через пространство имен. Например, доступ к STATUS_OK в приведенном выше классе можно получить через метод. пространство имен
Project::Module::User: :STATUS_OK доступ. Кроме того, вы также можете использовать псевдонимы для упрощения таких длинных «имен переменных»,
используя Project::Module::User::STATUS_OK как STATUS_OK;echo STATUS_OK; Кстати, концепция «Глобального пространства имен». Так называемое «гиперпространство» относится к переменным, классам и функциям, не имеющим назначенного пространства имен. Например
, такую функцию, как function foo() {...}, можно выполнить с помощью foo() или ::foo();.
Наконец, используйте функцию автозагрузки, чтобы загрузить класс в указанное пространство имен. Простая функция выглядит следующим образом:
function __autoload($classname) {$classname = strtolower($classname);$classname = str_replace( '::', DIRECTORY_SEPARATOR, $classname);require_once(dirname( __FILE__). '/'. $ classname . '.class.php' );} Таким образом, например, вызов
__autoload('Project::Module::User'); может автоматически загрузить файл Project_Module_User.class.php (хотя это кажется неудобным).