[PHP-users 35753] zend_applicationをコンソールで使う方法について教えてください

鈴木孝征 (Suzuki Takamasa) takamasa @ thaliana.myhome.cx
2012年 12月 12日 (水) 22:57:56 JST


PHP-usersの皆様へ。鈴木孝征と申します。

Zend Framework 1.11をCentOS上で使っております。

zf.shにてアプリケーションを作成し、それをコンソールからも使いたいと思っていますがうまく動作させることができません。

やったこと

zf.sh create project test としてアプリケーションを作成。

application/configs/application.iniを以下のように作成しました。
[production]
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
includePaths.library = APPLICATION_PATH "/../library"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"

resources.frontController.controllerDirectory = APPLICATION_PATH 
"/controllers"
resources.frontController.params.displayExceptions = 0
--------------ここまで-----------------

application/controllers/TestController.phpを以下のように作成しました。
<?php
class TestController extends Zend_Controller_Action{
     public function testAction(){
         var_dump($this->getRequest());
     }
}
--------------ここまで-----------------

application/views/scripts/test/test.phtmlを以下のように作成しました。
This is a test page.
--------------ここまで-----------------

http://example.com/myapp/test/testにウェブブラウザーでアクセスすると以下の文字列が表示されました。
This is a test page. object(Zend_Controller_Request_Http)#17 (15) ... 
(以下省略)
--------------ここまで-----------------

TestControllerのtestActionメソッドをコンソールからテストしたくてconsole.phpを以下の内容で作成しました。
<?php
define('APPLICATION_PATH', realpath(dirname(__FILE__) . 
'/application'));
define('APPLICATION_ENV', 'production');
set_include_path(implode(PATH_SEPARATOR, array(
     realpath(APPLICATION_PATH . '/../library'),
     get_include_path(),
)));

/** Zend_Application */
require_once 'Zend/Application.php';

// Create application, bootstrap, and run
$application = new Zend_Application(
     APPLICATION_ENV,
     APPLICATION_PATH . '/configs/application.ini'
);
$application->bootstrap();
$bootstrap = $application->getBootstrap();
$front = $bootstrap->getResource('FrontController');
$front->setParam('bootstrap', $bootstrap);
$request = new Zend_Controller_Request_Simple('test', 'test');
$front->setRequest($request);
$response = $front->dispatch();
if ($front->returnResponse()) {
     return $response;
}
--------------ここまで-----------------

php -f 
console.phpと実行するとapplication/views/scripts/error/error.phtmlの内容が出力されます。

TestControllerのtestActionメソッドをコンソールから実行できるようにするにはどうしたらよいでしょうか。



PHP-users メーリングリストの案内