#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();
...