Пространства имен - это способ группировки связанных классов в пакеты. То, что вы описываете, лучше всего поместить в одно пространство имен, например
<?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 {
}
потому что Менеджер - это подкласс людей, поэтому нет особой причины помещать их в свое собственное пространство имен. Они специализированные люди.
Если вы хотите, чтобы менеджеры находились в их собственном пространстве имен, вы можете сделать это, но при использовании ключевого слова extends
необходимо использовать полное имя, например,
<?php // manager.php
namespace com\example\johnslibrary\managers;
require_once 'path/to/People.php';
class Manager extends \com\example\johnslibrary\people\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 по пространствам имен.