Да, вы можете легко выполнять сценарии оболочки вручную из вашего приложения.
в 2.x это даже проще, чем в 1.3 и т. д .:
App::uses('MyShell', 'Console/Command');
$this->My = new MyShell();
$this->My->myMethod();
Я использую его для проверки оболочек, которые я пишу внутри тестовых случаев. Но это также будет работать в приложении:)
Похоже на задачи.
Я использую это в своем TranslatePlugin для выполнения ExtractTask ядра с некоторыми конкретными настройками непосредственно с уровня контроллера / модели.
Имейте в виду, что вам, возможно, придется добавить / передать некоторый ручной класс ConsoleOutput, если у вас есть какой-то определенный сценарий оболочки.
Было бы лучше перенести ваш код в задачу (а не в оболочку!), Если это возможно.
Более того, поместите его в библиотеку Lib или другой общий файл, который вы можете отправить как из своей оболочки, так и из обычного кода приложения. Это был бы самый чистый подход на эту тему.