Между каталогами и пространствами имен нет прямой связи, за исключением случаев, когда вы используете автозагрузчик.
Если вы хотите, чтобы этот код работал:
namespace A\B\C;
$cls = new foo();
Вы должны сделать это:
namespace A\B\C;
class foo {}
$cls = new foo();
Или сделайте следующее:
foo.php
namespace \A\B\C;
class foo {}
index.php
require 'foo.php';
$cls = new \A\B\C\foo();
// or
namespace A\B\C;
$cls = new foo();
Теперь, если вы хотите использовать автозагрузчик, вы можете использовать что-то вроде этого:
function autoload($class)
{
$class = str_replace('\\', '/', $class);
require_once __DIR__ . '/' . $class . '.php';
}
spl_autoload_register('autoload');
Поместите этот код в начало вашего index.php и получите такую директорную арку:
A
+ B
| + C
| | + foo.php
Тогда вам просто нужно сделать:
$cls = new \A\B\C\foo();
или даже :
use \A\B\C\foo;
$cls = new foo();
Но в любом случае, ВЫ ДОЛЖНЫ ПРОЧИТАТЬ РУКОВОДСТВО: ссылка здесь
person
Bobot
schedule
03.05.2015