Добавление (или переопределение) метода базового класса в cakeStack Overflow

Мы используем cakePHP 2.7.x.

Вопрос, который у меня возникает, заключается в переопределении базового класса — или, в частности, добавлении функциональности в метод без изменения основного кода.

Мне нужно добавить некоторые функции в метод:
cake/lib/Cake/Model/Datasource/DboSource->BuildColumn()

В документах говорится, что весь класс должен находиться в одном и том же месте приложения, а затем загрузчик приложения загрузит его. Поэтому я скопировал класс в
marketplace/Model/Datasource/DboSource
и добавил мой фрагмент кода. К сожалению, ничего не изменилось.

Если я добавлю свое изменение непосредственно в исходный метод, все будет работать нормально.

Контекст:
Внутри этого метода все значения по умолчанию заключаются в кавычки без разбора. Поэтому что-то вроде DEFAULT CURRENT_TIMESTAMP интерпретируется и работает как DEFAULT 'CURRENT_TIMESTAMP' что, очевидно, не работает, как задумано.
В частности, это дает мне ошибку "Syntax error or access violation: 1067 Invalid default value for 'created'" при попытке испечь пирог.

Я был направлен на причину проблемы и предлагаем исправление для cakePHP 1.2.6 здесь:
http://mamchenkov.net/wordpress/2010/04/21/unit-tests-with-cakephp/

1

Решение

Согласно документы:

Вы можете переопределить почти каждый класс в рамках, исключения
Приложение и Настроить классы. Всякий раз, когда вам нравится выполнять такие
переопределить, просто добавьте свой класс в папку app / lib, имитируя
внутренняя структура каркаса

Так что путь должен быть marketplace/Lib/Model/Datasource/DboSourceне marketplace/Model/Datasource/DboSource

1

Другие решения

Так что, видимо, что-то произошло с моей бродячей машиной. После того, как я перезапустил это, работа, как Бруно Ферриера обрисовал в общих чертах, работает отлично!

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector