2015-06-02 3 views
0

Хорошо, я могу быть чуть более усложняющим в моей голове, или просто что-то совсем не хватает; но я не уверен.Основное наследование в PHP Ребенок и родительский класс

У меня есть класс под названием Opportunity, а также класс Activity.

В случае с Opportunity у него будет много многих видов деятельности.

Нет никакой причины, по которой для доступа к возможностям или свойствам Возможности необходимо обращаться как к действию, так и к действию. Это одна из многих взаимосвязей между возможностью и является совершенно другим объектом, чем возможность. Но деятельность не может существовать без привязки к Opportunity.

Является ли это дочерним родительским отношением или требуется ли действие для расширения класса возможностей?

Как работает наследование с этим примером?

ответ

1

Вам не обязательно устанавливать отношения между родителями и детьми. В самом деле, если что-нибудь, это звучит, как вам нужно dependency injection вместо

class Activity { 
    /** @var \Opportunity */ 
    protected $opportunity; 

    public function __construct(\Opportunity $opportunity) { 
     $this->opportunity = $opportunity; 
    } 

    public function run() { 
     $this->opportunity->doSomething(); 
    } 
} 
$activity = new \Activity($opportunity); // Pass an instance of Opportunity here 

Таким образом, вы должны иметь свой Opportunity класс и Activity имеет доступ к нему , но он может использовать только методы, необходимые. Не стоит беспокоиться о наследовании.

+0

Вы правы. Инъекционная инъекция - именно то, что я искал. Я делал слишком сложные вещи для себя. Спасибо! –

2

Вы говорите об Composite pattern, ваш класс Opportunity составлен одним или несколькими Activities.

Является ли это дочерним родительским отношением или требуется ли действие для расширения класса возможностей?

не ребенок родитель отношения, потому что нет никакой иерархии между ними, Activities не нужно использовать или переопределить любой Opportunity метод, ни атрибут. Деятельность - это просто часть возможности. Таким образом, нет, Activity не нужно расширять класс возможностей.

Смежные вопросы