hell0w0rd
@hell0w0rd
Просто разработчик

Как в php подменить родителя класса?

Как кроме подмены кода подменить родителя класса/изменить поведение класса? Причем класса встроенного?

В конкретно моем случае — PDO, PDOStatement. Написал небольшую обертку, которая удобно работает с плейсхолдерами, хочется написать тесты, но совершенно не понимаю как это сделать.

Обертка дополняет существующие методы, почти не испольузет свои. Можно конечно вынести свой код в свои методы, но это как минимум лишний вызов функций, и будет сделано только ради тестирования.

github.com/hell0w0rd/dbal/tree/master/src/Fountain/Dbal — вот ссылка на репозиторий, чтобы говорить детально

Хотелось бы подменить таким классом, который имел бы метод getLastParams(), а требуемые методы записывали все аргументы, с которыми вызываются функции.
  • Вопрос задан
  • 4223 просмотра
Решения вопроса 1
nazarpc
@nazarpc
Open Source enthusiast
А что если наследовать не от стандартного, а от своего, который в свою очередь наследует стандартный

class custom_PDOStatement extends \PDOStatement {}

Тогда custom_PDOStatement можно будет подменить для теста.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
EugeneOZ
@EugeneOZ
Предпочитайте композицию вместо наследования, и не будет таких проблем.
но это как минимум лишний вызов функций, и будет сделано только ради тестирования

и ничего в этом плохого нет.
наследование не такая дешевая процедура, или все ок?

не там Вы производительность измеряете, совсем не там. Всё это в опкод-кэшере будет мизерным временем. Большая часть времени уйдёт на работу с БД, диском и сетью.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы