Если говорить в терминах C, подход наследования будет быстрее на одну операцию разыменования указателя, чем подход агрегации (который требует дополнительного разыменования $this->html
). В PHP это должно быть сопоставимо.
Однако, стоимость разыменования одного указателя практически ничтожна . Вы не должны основывать свою архитектуру на этом чисто теоретическом различии , потому что оно никогда не стоит. Даже если вы уже обслуживаете сотни запросов в секунду и вам нужна дополнительная производительность, это не тот путь. Это классический случай, когда агрегация предпочтительнее наследования.
Наконец, рассмотрите возможность использования в классе Html
только методов static
. Это вполне разумно, так как это вспомогательный класс, поэтому ему не нужно поддерживать какое-либо состояние. Если по какой-то причине вы чувствуете, что ему нужно какое-то состояние, попросите вызывающих абонентов сохранить его и передать его Html
в качестве параметров функции. Это не только улучшит ваш дизайн, но также удалит дополнительное разыменование указателя, о котором мы говорили выше. И в качестве дополнительного бонуса, он полностью сведет на нет затраты на создание экземпляров Html
, даже если вам нужно создавать экземпляры нескольких объектов WebForm
в течение времени жизни одного запроса (оба варианта, которые вы считаете подходящими, имеют этот недостаток).