今回のアプリケーションのファイル構成を示します。htdocs/zdb1/application/controllers/IndexController.phpmodels/Bookmarks.phpviews/index/edit.phtmlindex.phtmlindex.php.htaccesszdb1.dbcreate_table.sql今回のファイル一式は、こちらからダウンロードできます。あとがきえー、本当に久しぶりの更新になってしまいましたが、いかがでしたでしょうか?コードそのものはたいした量ではないのですが、説明することが結構増えてきたので、そろそろ全コードを掲載するのがちょっとしんどくなってきました。次回はZend_Db関連をもう少し突っ込んでみようかと思います。Zend_Db_Tableのリレーション機能か、Zend_Select・Zend_Statementか、といったあたりでしょうか。思いつきで変更するかもしれませんが、その場合はご容赦ください。(^^;それでは、次回はなるべく早く更新したいと思いますので、よろしくお願いいたします。15時09分51秒はじめにまたも1週間のご無沙汰になりましたが、前回の予告どおり、データベース機能の説明に入ります。DBMSに関しては、前回に予告したとおりSQLiteを対象としますので、先にこちらの番外編を参考にして、コンソールアプリケーションを導入しておくとよいでしょう。Framework入門ですので、SQLに関する細かい説明などはあまりしない予定です(まぁ、シンプルな使い方しかしない予定ですが)。データベースになれていない方は、他のSQL入門記事なども参考にされるとよいと思います。それでは本文へまいりましょう。Frameworkのデータベース機能はZend_Db名前空間に集約されていて、以下のようなクラス群で構成されています。データベースへの接続やZend_Db_Statement・Zend_Db_Selectのファクトリとして機能する、Zend_Dbの主要クラス。DBMSへの問い合わせを行うステートメントオブジェクト。Zend_Db_Adapterと同様に、基本の抽象クラスから派生した固有のクラスがDBMS間の違いを吸収する。データベースの表(Table)を表現する抽象クラスで、Zend_DbにおけるO/Rマッピングを実現する。基本的にはDBMS上のテーブルと対になるクラスをZend_Db_Tableから派生させる。データベースの行(Row)を表現する抽象クラス。Zend_Db_Tableの操作により生成される。行を更新することができる。複数のZend_Db_Rowを扱うためのIteratorクラスで、Zend_Db_Tableによる問い合わせの結果として取得する。これらのクラスを使い分けてデータベース操作を行っていきますが、今回はまずZend_Db_Adapterによる接続と問い合わせのサンプルを作成します。今回は「zdb1」という名前のアプリケーションを作成しましょう。構成はシンプルに、以下のようにします。htdocs/zdb1/application/controllers/IndexController.phpviews/index/index.phtmlindex.php.htaccesszdb1.dbcreate_table.sqlzdb1直下にある「zdb1.db」は、SQLiteのデータベースファイルで、「create_table.sql」はこのアプリケーションで扱うテーブルを作成するためのSQLファイルです。これらについては次の項で説明します。その他のファイル構成は特に説明の必要はないかと思います。肝心のアプリケーションですが、ものすごくシンプルなブックマークにしてみます。以下の情報を扱うことにします。タイトルURL登録日時コメントテーブルは1テーブルで、以下の構成にします。テーブル名は「bookmarks」とします。valueにしてもいいのですが、挿入される日付にロケールが考慮されないようなので、コードで挿入することにします。データベースを作成するまずはテーブルを作成する「create_table.sql」です。テーブル作成とインデックスの作成、初期データの挿入をしています。),'dara-jのtumblr。');create_table.sqlこのファイルを、今回のアプリケーションディレクトリに「create_table.sql」という名前で保存してください。作成したcreate_table.sqlをsqlite3で以下の要領で実行する手順です。今回のアプリケーションディレクトリからコマンドプロンプトを起動します。そこからsqlite3を実行します。次に、「.read」コマンドで、先ほど作成したcreate_table.sqlを実行します。.readコマンドはエラーがなければなにも表示しないので、sqlite_master(メタデータテーブル)を確認してみます。テーブル・2つのインデックスとも定義されていればOKです。ついでに同時に実行したinsertが正常にできているかを、以下のように確認します。05:01:25|dara-jのtumblr。確認できたらsqlite3を終了しましょう。.quitデータベースへ接続の接続と基本的な問い合わせ今度はPHP側のコードを作成していきましょう。アクションメソッドの追加とリンクの扱い方」で決定したものをそのまま流用できます(つまり、zf2のもの)。IndexControllerは次のようになります。