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

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

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

Solutions Collecting From Web of "использовать компонент cakephp внутри модели"

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

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

  • Компоненты в CakePHP 1.3
  • Компоненты в CakePHP 2.x
  • Компоненты в CakePHP 3.x

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

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

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

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

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

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

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

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

@ AD7six

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

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

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