Переопределить базовый класс Cakephp 3

Я хотел бы переопределить функцию, которая существует в ядре CakePHP 3 (чтобы быть более конкретным Cake\Database\ValueBinder).

Как мне этого добиться? Я пытался скопировать класс в src/Database/ и изменил пространство имен с Cake на App. Я использовал бы класс в AppController, но не повезло.

заранее спасибо

Адриан

1 ответ

ndm очень помог мне в этом (см. комментарии к моему вопросу), но так как он не опубликовал ответ, я делаю это сейчас.


Можно использовать собственный ValueBinder установив его на мой запрос: $this->Table->find()->valueBinder(myOwnValueBinder),

Чтобы сделать это ValueBinder по умолчанию в моем собственном коде (в большинстве случаев достаточно), можно использовать, например, AppTable как известно из CakePHP 2, который распространяется на Table и сделать все остальное *Table классы расширяются AppTable, Теперь нужно только создать следующий метод:

public function query() {
    return parent::query()->valueBinder(myOwnValueBinder);
}

В случае, если необходимо, чтобы весь код использовал ValueBinder, расширенный класс Соединения источника данных должен быть создан (и использован). В этом классе Connection::newQuery() должен быть переопределен.

Другие вопросы по тегам