我有PHP命名空间文件
namespace A\B\C
$cls = new foo();
foo 类存储在哪里?
OR如果存在 __ autoload()如何控制目录映射到命名空间?
感谢您的帮助。我试图更仔细地了解目录和命名空间之间的关系。 PHP和/或谷歌没有给我任何答案。
答案 0 :(得分:1)
目录和名称空间之间没有直接关系,除非您使用自动加载器。
如果您希望此代码有效:
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的顶部,然后像这样得到一个dir arch:
A
+ B
| + C
| | + foo.php
然后你必须这样做:
$cls = new \A\B\C\foo();
甚至:
use \A\B\C\foo;
$cls = new foo();
但无论如何,你必须阅读手册:Link here