cake 導入検討時から考えてたけど、不要だったので使わなかった zf のライブ
ラリをやっと使ってみようと動き出しました。
cake 1.2.3.8166
zend framework 1.9
php 5.2.8
試しに json を使ってみましょう。
(1) まずは book を確認してみる。
- 4.4.4.5 Loading Vendor Files
http://book.cakephp.org/view/538/Loading-Vendor-Files
???
App::import() を何処に書けと?
ライブラリなんだから、使いたい処で呼び出して生成せよ、と解釈。
(2) zf をダウンロード。
- Zend Framework 1.9.0 Minimal
http://framework.zend.com/download/current/
(3) vendors に展開。
$ pwd
/home/custar/htdocs/sandbox/zend_framework/vendors
$ tar xfz ZendFramework-1.9.0-minimal.tar.gz
$ ls -lF
drwxr-xr-x+ ZendFramework-1.9.0-minimal/
drwxr-xr-x+ shells/
人によっては ZendFramework-1.9.0-minimal/library/Zend/ の Zend 部分だけ
や、必要なクラスファイルのみを抜き出すかもしれないけど、今は練習なので、
このままに。
(4) users_controller.php で呼び出す。
// controllers/users_controller.php
<?php
App::import('Vendor', 'Zend_Json', false, array(),
'Zend'.DS.'Json.php', false);
class UsersController extends AppController
{
public $name = 'Users';
public $scaffold;
public function hello()
{
$attributes = array(
'language' => 'php',
'framework' => 'cakephp'
);
$json = Zend_Json::encode($attributes);
$this->set(compact('json'));
}
}
?>
// views/users/hello.ctp
<?php echo $json; ?>
この状態で /users/hello にアクセスすると、
| Warning (2):
| require_once(Zend/Json/Expr.php)
| [
| function.require-once]:
| failed to open stream:
| No such file or directory [APP\vendors\Zend\Json.php,
| line 27
| ]
|
| Fatal error:
| require_once() [function.require]:
| Failed opening required 'Zend/Json/Expr.php'
| (include_path='C:\xampp\htdocs\sandbox\zend_framework\;.;C:\xampp\php
\pear\')
| in C:\xampp\htdocs\sandbox\zend_framework\vendors\Zend\Json.php
| on line 27
当然エラーが発生する。
- Zend Framework Quick Start
http://framework.zend.com/docs/quickstart/create-your-project
によると、
| Optionally,
| you can add the path to the library/ subdirectory of the archive
| to your php.ini's include_path setting.
だそうで、それをやってくれるのが、"zf Command Line Tool" だと。
その実処理は bin/zf.php の zf_setup_tool_runtime() がやっている。
他の人が書いているように、
ini_set('include_path', ...)
と同じことを zf_setup_tool_runtime() でやっている。
人と同じことをやるのは面白くないので、今回は、このままやり通す。
(5) zf_setup_tool_runtime() を実行。
// config/bootstrap.php
require_once('../vendors/ZendFramework-1.9.0-minimal/bin/zf.php');
zf_setup_tool_runtime();
zf.php 内部では強制的に zf_main() が実行されるので、それをコメントアウト。
// vendors/ZendFramework-1.9.0-minimal/bin/zf.php
//zf_main();
(6) /users/hello にアクセス
{"language":"php","framework":"cakephp"}
と表示された。
以上