Не используйте расширяет просто, чтобы получить дополнительную функциональность. Это запах кода и подразумевает, что xmlParser
is-aadminItems
который, очевидно, нет. Кроме того, в будущем вы не сможете продолжить расширение, потому что PHP не имеет множественного наследования. Выберите composition over inheritance, как показано на этом примере.
Использование Зависимость от инъекции. Инвертируйте управление своими объектами так, чтобы они не зависели друг от друга: см. Inversion on Control.
class xmlParser
{
/**
* @var adminItems
*/
protected $adminItems;
/**
* @constructor
*
* @param adminItems $adminItems
*/
public function __construct(adminItems $adminItems)
{
$this->adminItems = $adminItems;
}
/**
* Whatever this does...
*/
function someName()
{
$this->adminItems->addAds();
}
}
`
Вам нужно, внешние по отношению к классам создаваемым, свяжите их вместе, как это. Вы передаете adminItems
вxmlParser
, а затем используйте его, как вам нужно. Это называется Dependency Injection и это то, что вы можете делать на всех объектно-ориентированных языках, а не только на php.
Вы могли бы использовать вышеупомянутый объект API, как это:
$adminItems = new adminItems;
$xmlParser = new xmlParser($adminItems);
$xmlParser->somName();
Действительно просто. Ваши объекты (думают о них как повторно используемые библиотеки) не должны зависеть от других объектов, кроме как с помощью конструктора или метода, поэтому вы можете их заменить, что приведет к тестируемому и чистому очищению кода.
Кроме того, я призываю вас, чтобы взглянуть на следующие полезные ссылки:
- PSR-2 для именования:
- Использование
XmlParser
вместо xmlParser
для имен классов
- PSR-4 для автозагрузки:
- Узнать, как использовать composer для создания своих автозагрузки файлов для вас
- Узнайте, как ваши файлы имеют 1: отображение 1 со структурой каталогов
- Узнайте, как вы только когда-либо нужно использовать включаемый раз в проекте
«Инъекция зависимостей» – HamZa
Вам понадобится объект 'class1', предположим' A', а затем в 'classB' использовать его как' $ b = new A(); $ b-> MethodFromClassA(); 'Или использовать наследование. –
Остановите добавление суффикса ".class". Что вы будете делать, когда вам потребуется автозагрузка интерфейса? О, да, кстати. Узнайте, как сделать автозагрузку. –