Cakephp как импортировать CakeEmail в оболочку

#shell #cakephp #cakephp-2.4

#оболочка #cakephp #cakephp-2.4

Вопрос:

Я использую Cakephp 2.4.5, как мне использовать / импортировать функции CakeEmail, чтобы я мог использовать их в своем сценарии оболочки? Я искал везде, но не могу найти ответ. В большинстве примеров говорится об отправке электронной почты с контроллера, но не с оболочки.

Эта оболочка выполняется заданием Cron.

Я пробовал следующее:

 class EmailShell extends AppShell {

    //App::uses('CakeEmail', 'Network/Email'); ///Results in Error: Parse error: syntax error, unexpected 'App' (T_STRING),
    //App::import('Component', 'Email');  //Results in Error: Parse error: syntax error, unexpected 'App' (T_STRING),
    $tasks = array('Email'); //Results in Error: [0m Task class EmailTask could not be found.

    public function main () {
             //email sending logic here
    }
  

Комментарии:

1. Очевидно: по какой-то причине ваш класс приложения не может быть найден. Думаю, ваше ядро CakePHP не найдено. Запустите оболочку, которая включена в ваше приложение: . Console электронная почта cake

2. @burzum Почему ошибка синтаксического анализатора может быть связана с отсутствующими файлами классов? Приведенный здесь пример — это просто неправильный синтаксис PHP, App::uses() вызов может существовать только вне конструкции класса или внутри функции / метода, а в $tasks переменной отсутствует ключевое слово visibility, что также должно привести к ошибке синтаксического анализатора.

3. Я не понимал, что это выходит за рамки метода.

Ответ №1:

Инструкции App::uses должны быть выше начала класса:

 App::uses('CakeEmail', 'Network/Email');

class EmailShell ...
  

Затем вы можете использовать его в любом месте этого класса файлов:

 $Email = new CakeEmail();
...