Symfony: попытка переписать метод класса Symfony - PullRequest
4 голосов
/ 04 июня 2010

Я хочу переписать метод symfony / lib / plugins / sfDoctrinePlugin / lib / form / sfFormDoctrine.class.php.

Я думаю, что хорошим способом было бы написать сноваметод в классе формы, где мне нужен этот метод.

В этом случае, если мне нужен этот метод в другом классе формы, я должен написать снова новый метод, поэтому я бы нарушил правило СУХОЙ ...

Так есть ли лучший способ?

С уважением

Хави

Ответы [ 3 ]

4 голосов
/ 07 июня 2010

Вы должны использовать BaseFormDoctrine, если это специфический для Доктрины метод, или BaseForm, если вы хотите, чтобы метод применялся ко всем формам. Эти классы форм предоставляются специально для этой цели.

2 голосов
/ 04 июня 2010

Пользуясь ответом полковника Спонца, я делал это много раз, расширяя класс, который хочу переопределить. Расширяя класс, вам не нужно ничего дублировать. В метод (ы), который вы хотите настроить, просто добавьте свой настроенный код и затем вызовите parent::method_name(), чтобы выполнить тот же метод суперкласса. Вы получаете все преимущества обоих. Вызовы методов, которые не существуют в подклассе, будут выполняться для суперкласса.

Следует отметить, что эта стратегия является базовым ООП и не ограничивается Symfony или даже PHP.

1 голос
/ 04 июня 2010

Вы можете создать новый класс, который наследует от sfFormDoctrine, который повторно объявляет нужные вам методы, а затем использовать новый класс вместо sfFormDoctrine везде, где вам нужен этот метод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...