Из комментария:
Я надеялся на способ каскадного использования, не дублируя эту строку среди 20 или около того дочерних классов
Это одна из самых больших проблем, с которыми я сталкиваюсь с пространством имен PHP, которую вы должны вызывать use
для каждого файла, к которому необходим текущий скрипт. Это та же самая ситуация, с которой мы сталкивались при необходимости вызвать require_once 20 раз для некоторых сценариев, чтобы добавить необходимые библиотеки.
Что я предпочитаю делать, так это пространство имен моих файлов (поскольку они находятся в файловой системе, как это делает Zend Framework) и использование автозагрузчика, чтобы избежать всего беспорядка. В настоящее время я использую автозагрузчик ZF , который можно использовать вне фреймворка, или вы также можете использовать реализацию vanilla PHP, используя SplAutoload .
- Обновление -
У меня есть библиотека, которую я написал за последние несколько лет, которая называется Hobis_Api и расположена в файловой системе с тем же соглашением; ~ / Проекты / проекты / дп / HOBIS / Библиотека / HOBIS / Api / *. Чтобы зарегистрировать пространство имен в Zend_Loader, я делаю следующее:
// Be sure to set the include path to include the Zend and Hobis_Api files
// Not sure how your setup is, but would look something like:
set_include_path(get_include_path() . ':' . DIRNAME(__FILE__));
require_once 'Zend/Loader/Autoloader.php';
$autoloader = Zend_Loader_Autoloader::getInstance();
$autoloader->registerNamespace(
array(
'Hobis_Api_'
)
);
Обычно приведенный выше код помещается в некоторый файл начальной загрузки, который вы можете вызвать из централизованного скрипта, чтобы зарегистрировать автозагрузчик, один раз.
Теперь, если ваш путь включения задан правильно, каждый раз, когда вы ссылаетесь на Hobis_Api_*
, он будет автоматически загружен для вас, поэтому вам не нужно вызывать use
или require_once
, пример использования:
// SomeScript.php
// Notice no requires
// I can make a call to Hobis_Api_Image without error
$image = Hobis_Api_Image;
$image->setHeight(400);