Независимо от того, создаете ли вы объект или получаете доступ к статическому классу, они будут загружены.
ваш пример будет работать с файлом, так как класс загружается до оператора разрешения ::
, поэтому он находится в области действия.
Вы должны перейти по следующей ссылке, чтобы помочь вам правильно настроить автозагрузчик.
http://groups.google.com/group/php-standards/web/psr-0-final-proposal
и
http://gist.github.com/221634
Поскольку в предложении о пространстве имен указано, что каждое корневое пространство имен должно быть поставщиком \<Vendor Name>\(<Namespace>\)*<Class Name>
, вы бы сделали следующее (с версией GitHub):
$App = new SplClassLoader('MyApp', '/myapp');
$App->register();
Обновление, чтобы помочь вам снемного больше пространства имен.
Возьмем этот пример
namespace MyApp\Classes;
class SomeClass
{
public function __construct()
{
$Doctrine = Doctrine\Common\EntityManager::Singleton();
}
}
Вызов Doctrine будет искать в пространстве имен MyApp\Classes\Doctrine\Common
для класса EntityManager.
Что вы должны дедобавив к нему \
в качестве пространства имен вне доктрины, вы всегда должны указывать \
, чтобы сказать, что его нет в текущем пространстве имен.
В вашем посте это может быть причиной того, что он не работаетИнж.