Из вашего комментария:
По сути, у меня есть класс B, который работает с базой данных, и класс A, который связывает действия пользователей на сайте с классом B. Поэтому пользователь что-то делает -> класс Aначинает работать-> передает информацию в класс B для добавления в базу данных.Казалось, что это не все, что возможно, но я знаю, что есть люди с гораздо большим знанием, чем я, поэтому я хотел узнать, знает ли кто-нибудь еще о том, как это сделать.
Как вы описываете: B
работает с базой данных, A
выполняет действия (запрошенные пользователем).B
звучит как своего рода объект доступа к картам / данным, в то время как A
звучит как служба (я буду ссылаться на BMapper
и AService
, чтобы быть более преднамеренным).
Что вы?В общих чертах указано, что вы не правильно используете наследование PHP.Наследование представляет собой "это" отношения.(Image
- это Media
, PathMover
- это Animator
и т. Д.).Хотя ответ @ Malcolm технически работает, он не для вашего сценария.
В ООП мы бы сказали, что BMapper
- это зависимость AService
.Таким образом, всякий раз, когда мы вызываем метод в AService
, мы ожидаем, что он будет зависеть от экземпляра BMapper
.Это отношение обычно удовлетворяется с помощью внедрения зависимости (см .: Что такое внедрение зависимости? ).
<?php
class AService {
private $bMapper;
public function __construct(BMapper $bMapper)
{
$this->bMapper = $bMapper;
}
public function doAction()
{
return $this->bMapper->performSomethingInDatabase();
}
}
class BMapper {
public function performSomethingInDatabase()
{
/**
* ..whatever
*/
}
}
$service = new AService(new BMapper);
$service->doAction();
Вы можете видеть, что мы определили зависимость нашего зависимого класса в его конструкторе, чтобы его удовлетворил тот, кто / что использует этот класс.