命名空间是将相关类分组到包中的一种方法。您描述的内容最好放在单个命名空间下,例如
<?php // people.php
namespace com\example\johnslibrary\people;
abstract class People {
}
然后
<?php // manager.php
namespace com\example\johnslibrary\people;
require_once 'path/to/People.php'; // can better use autoloading though
class Manager extends People {
}
因为 Manager 是 People 的子类,所以没有太多理由将它们放入自己的命名空间中。他们是专门的人。
如果您希望 Managers 位于他们自己的命名空间中,则可以这样做,但在使用关键字时必须使用完全限定的名称,例如extends
<?php // manager.php
namespace com\example\johnslibrary\managers;
require_once 'path/to/People.php';
class Manager extends \com\example\johnslibrary\people\People {
}
或首先导入人员类
<?php // manager.php
namespace com\example\johnslibrary\managers;
use com\example\johnslibrary\People as People;
require_once 'path/to/People.php';
class Manager extends People {
}
请参阅 PHP 命名空间手册以获取大量文档。