Использовать компонент cakephp внутри модели

Как использовать компонент, который я создал в cakePHP, внутри одного из моих классов моделей? Возможно ли это?

Если да, сообщите мне, как я могу это сделать

Ответы

Ответ 1

В MVC возможно, но довольно плохая практика. Вы должны переосмыслить и переорганизовать свой код, если считаете, что вам нужно использовать компонент в модели, потому что тогда что-то не так.

Предполагается, что компонент использует код между контроллерами, только между контроллерами.

Чтобы поделиться повторно используемым кодом между моделями, это будет поведение. Для представления это будет помощником.

Если у вас есть действительно общий код, он должен быть lib или помещен в папку Utilities/namespace или создать новое пространство имен. Проверьте существующие классы там, чтобы получить представление о том, что добавить туда.

Никакой код не был предоставлен, поэтому невозможно дать какую-либо реальную рекомендацию относительно того, как его реорганизовать. Однако способ, которым вы хотите использовать существующий код, не будет работать в контексте MVC, поэтому переосмыслите свой подход к тому, что вы пытаетесь сделать.

Ответ 2

Можно использовать компонент внутри модели (но я не могу комментировать, если это рекомендуется или лучше всего).

Вдохновленный из исходного источника, пример использования компонента под названием" Геокодер в модели:

App::import('Component','GeoCoder');
$gc = new GeoCoderComponent(new ComponentCollection);

Затем вы можете использовать $gc для вызова функций компонента.

-

P.S.: Я не хочу поощрять плохие методы программирования, но иногда давление сроков (в реальных проектах) может заставить разработчика принять такие решения.

Ответ 3

@AD7six

// Use anywhere
AuthComponent::user('id')

// From inside a controller
$this->Auth->user('id');

Из документации PHP для торта они предоставляют AuthComponent::user('id'), чтобы ее можно было использовать в местах, отличных от контроллера.

Может быть, мне нужен больший намек, но почему моя модель не может получить доступ к информации ACL?