1月 242015
 

Zend FrameworkでWebアプリを作ることになり、久しぶりにZend Frameworkのリファレンスを見ながらコードを書いていたのだが、ものすごく単純なことなはずなのにZend_Db_Selectの仕様(?)のせいでちょいとハマっていた。

Webアプリではお決まりのユーザー管理機能なんだが、話を単純にするためにやりたいことだけに焦点を当てるために、以下のようなrolesテーブルとusersテーブルがあるとしよう。

CREATE TABLE roles (
  id SERIAL PRIMARY KEY,
  name VARCHAR(255) NOT NULL UNIQUE
);

CREATE TABLE users (
  id SERIAL PRIMARY KEY,
  name VARCHAR(255) NOT NULL UNIQUE
  role INT FOREIGN KEY REFERENCE
);

ユーザーにロールを割り当てる典型パターン。
で、やりたいことは、

ロールの一覧表示をする際に、そのロールが割り当てられているユーザー数も出したい!

Continue reading »

1月 072012
 

統一されたページレイアウトのサイトをZend Frameworkで作るのにZend_Layoutをよく使う。最もシンプルなレイアウトスクリプトを書くとこんな感じになる。

<?php echo $this->doctype() ?>
<html>
<head>
<?php echo $this->headMeta() ?>
<?php echo $this->headTitle() ?>
<?php echo $this->headLink() ?>
<?php echo $this->headStyle() ?>
<?php echo $this->headScript() ?>
</head>
<body>
<?php echo $this->layout()->content ?>
</body>
</html>

Continue reading »

1月 032012
 

Zend Frameworkを使って開発を進めていくと、利用するコンポーネントが増えていくにつれて、アプリケーションのINIファイル(一般的に使われているapplication.ini)の内容が膨らんでいく。特にZend Frameworkのバージョンアップに伴って、Zend_Applicationから利用できるリソースプラグインの種類が充実していくので、ソース中にハードコーディングしていたような環境依存パラメータは、どんどんINIファイルに移行するようになっていく。application.iniファイル内では、できるだけリソース毎にまとめて書くようにしているが、INIファイルをリソース毎に分けて管理できないものかと思っていた。

Continue reading »

12月 262011
 

どんなアプリケーションを開発するときでも、簡単にログを出力できる仕組みは早いうちに実装しておきたいものだ。Zend Frameworkでログ出力をするときはZend_Logを利用するのが一般的。サンプルコードを見ると、

$writer = new Zend_Log_Writer_Stream('php://output');
$logger = new Zend_Log($writer);

と、ライターのインスタンスを生成してロガーのインスタンスを生成するコードを書くのか?と思わされるが、幸いZend_Application_Resource_Logというリソースプラグインが用意されているので、

resources.log.stream.writerName = &amp;amp;amp;quot;Stream&amp;amp;amp;quot;
resources.log.stream.writerParams.stream = &amp;amp;amp;quot;php://output&amp;amp;amp;quot;

のような設定ファイルを作れば、ブートストラップからZend_Logのインスタンスを取得できるようになる。`zf create project`コマンドで作られるデフォルトのエラーコントローラには、ブートストラップを利用してログを出力するコードが含まれている。

Continue reading »