最初にサーバーでDoctrineを実行できることを確認できます。方法は2つあります:
最初にphpinfo.phpという名前の小さなPHPスクリプトを作り、ウェブサーバーのウェブからアクセスできる場所にアップロードします:
phpinfo();
http://localhost/phpinfo.php にブラウザでアクセスしてスクリプトを実行します。PHPの構成の詳細情報の一覧が表示されます。PHPのバージョンが5.2.3以降でありPDOと必要なドライバがインストールされていることを確認します。
ターミナルからコマンドを実行する方法でもインストールされているPHPが必要な要件を満たしていることを確認できます。次の例で示します。
次のコマンドでPHPのバージョンが5.2.3以降であることを確認してください:
$ php -v
次のコマンドでPDOとお望みのドライバがインストールされていることを確認します:
$ php -i
コマンドラインからphpinfo.phpを実行しても上記と同じ結果を得られます:
$ php phpinfo.php
現在Doctrineをインストールする方法は4通りあり一覧は次の通りです:
SVN (subversion)を通してDoctrineをダウンロードする方法がお勧めです。この場合は更新が楽です。プロジェクトが既にSVNでバージョン管理している場合、SVN externalsを使います。
5分以内でDoctrineを試したいだけなら、サンドボックスのパッケージが推奨されます。次のセクションでサンドボックスパッケージを検討します。
Doctrineは一行もテストを書かずにDoctrineをテストするために設定をまったくしなくてよいDoctrine実装の特別なパッケージも提供します。ダウンロードページから入手できます。
サンドボックスの実装は本番アプリケーションには推奨されません。これはDoctrineの探求と地井さんテストの実行だけを目的としています。
SVNとexternalsオプションを通してDoctrineを使うことを大いにお勧めします。SVNから最新のバグ修正を入手できて最良の経験が保証されるのでこのオプションがベストです。
SVNを通してDoctrineをインストールするのはとても簡単です。SVN サーバー: {{http://svn.doctrine-project.org}}から任意のバージョンのDoctrineをダウンロードできます。
特定のバージョンをチェックアウトするにはターミナルから次のコマンドを使用します:
svn co http://svn.doctrine-project.org/branches/1.1 .
SVNクライアントがなければ、下記のリストから1つ選んでください。チェックアウトのオプションを見つけてパスもしくはリポジトリのURLパラメータに http://svn.doctrine-project.org/1.1 を入力します。Doctrineをチェックアウトするためにユーザー名もしくはパスワードは不要です。
インストール作業と同じようにSVNでDoctrineをアップグレードする作業は簡単です。ターミナルから次のコマンドを実行するだけです:
$ svn update
プロジェクトで既にSVNでバージョン管理されている場合、DoctrineをインストールするためにSVN externalsを使うのがお勧めです。
ターミナルでプロジェクトをチェックアウトすることから始めます:
$ cd /var/www/my_project
プロジェクトをチェックアウトしたので、ターミナルから次のコマンドを実行してDoctrineをSVN externalとしてセットアップします:
$ svn propedit svn:externals lib/vendor
上記のコマンドでエディタを開き次のテキストを押し込んで保存します:
doctrine http://svn.doctrine-project.com/branches/1.1/lib
svn updateを実行することでDoctrineをインストールできます:
$ svn update
このコマンドによってDoctrineは次のパスでインストールされます: /var/www/my_project/lib/vendor/doctrine
SVN externalsへの変更をコミットすることをお忘れなく。
$ svn commit
Doctrineはサーバーでインストールとアップデート用のPEARサーバーも提供します。
次のコマンドでDoctrineを簡単にインストールできます:
$ pear install pear.doctrine-project.org/Doctrine-1.1.x
1.1.xをインストールしたいバージョンに置き換えます。例えば"1.2.1"です。
PEARでインストールしたくないもしくはPEARがインストールされていない場合、公式サイトからパッケージを手動でダウンロードできます。サーバーにパッケージをダウンロードした後でlinuxでは次のコマンドを利用してこれを展開できます。
$ tar xzf Doctrine-1.2.1.tgz
Doctrineを手に入れたので、アプリケーションでDoctrineを実装する準備ができています。
これはDoctrineを始めることに向けた最初のステップです。
最初にdoctrine_testという名前のディレクトリを作ります。ここはすべてのテストコードを設置する場所です:
$ mkdir doctrine_test
$ cd doctrine_test
最初に行わなければならないことはアプリケーションで読み込むことができるようにコアクラスを格納するDoctrine.phpファイルを見つけることです。Doctrine.phpファイルは前のセクションでダウンロードしたDoctrineのlibフォルダに存在します。
Doctrineライブラリをdoctrine_testディレクトリからdoctrine_test/lib/vendor/doctrineフォルダに移動させる必要があります:
$ mkdir lib
$ mkdir lib/vendor
$ mkdir lib/vendor/doctrine
$ mv /path/to/doctrine/lib doctrine
もしくはSVNを利用しているのであれば、externalsを使います:
$ svn co http://svn.doctrine-project.org/branches/1.1/lib lib/vendor/doctrine
svn externalsにパスを追加します:
$ svn propedit svn:externals lib/vendor
テキストエディタを開き次の内容を入力して保存します:
doctrine http://svn.doctrine-project.org/branches/1.1/lib
SVN updateを行うとDoctrineのライブラリは更新されます:
$ svn update lib/vendor
Doctrineとすべての設定をブートストラップするためのPHPコードが必要です。
bootstrap.phpという名前のファイルを作り次のコードをファイルに加えます:
// bootstrap.php
/**
* Bootstrap Doctrine.php, register autoloader specify
* configuration attributes and load models.
*/
require_once(dirname(__FILE__) . '/lib/vendor/doctrine/Doctrine.php');
Doctrineクラスの準備が終わったので、ブートストラップファイルでクラスのオートローダー関数を登録する必要があります:
// bootstrap.php
// ...
spl_autoload_register(array('Doctrine', 'autoload'));
Doctrine_Managerシングルトンインスタンスも作り$managerという名前の変数に割り当てます:
// bootstrap.php
// ...
$manager = Doctrine_Manager::getInstance();
PHPの公式サイトでオートロード機能の使い方がわかります。オートローダーを利用することで予めロードされたすべてのクラスの代わりにリクエストされたクラスを遅延ロードできます。これはパフォーマンスの面で大きな恩恵があります。
Doctrineのオートローダーの動作方法はシンプルです。クラスの名前とパスは相対的なので、名前に基づいてDoctrineクラスへのパスを決定できます。
Doctrine_Some_Classという名前のクラスをインスタンス化することを考えてみましょう:
$class = new Doctrine_Some_Class();
上記のコードはDoctrine::autoload()関数の呼び出しを実行しインスタンス化するクラスの名前を渡します。クラスの名前の文字列は操作されパスに変換され読み込まれます。下記はクラスの発見と読み込み方法を示す疑似コードです:
class Doctrine
{
public function autoload($className)
{
$classPath = str_replace('_', '/', $className) . '.php';
$path = '/path/to/doctrine/' . $classPath;
require_once($path);
return true;
}
}
上記の例ではDoctrine_Some_Classは/path/to/doctrine/Doctrine/Some/Class.phpで見つかります。
もちろん実際のDoctrine::autoload()メソッドはもっと複雑でファイルの存在を確認するエラーチェック機能を持ちますが上記のコードはどのように動作するのかを実演するためにあります。
後の章とセクションでこのブートストラップクラスを使うので作ってください!
作成したブートストラップファイルの内容は次のようになります:
// bootstrap.php
/**
* Bootstrap Doctrine.php, register autoloader specify
* configuration attributes and load models.
*/
require_once(dirname(__FILE__) . '/lib/vendor/doctrine/Doctrine.php');
spl_autoload_register(array('Doctrine', 'autoload'));
$manager = Doctrine_Manager::getInstance();
この新しいブートストラップファイルは実装の変更を行う場所でありまた段階的にDoctrineの使い方を学ぶのでこのファイルはこの本で何度も参照されます。
上記で説明された接続属性はDoctrineの機能です。Configurationの章で属性の詳細とこれらのゲッター/セッターを学びます。
Doctrineの機能に関して学ぶので様々なテストを実行するために利用できるシンプルなテストスクリプトを作りましょう。
doctrine_testディレクトリの中でtest.phpという名前の新しいファイルを作成し内部に次の内容を置きます:
// test.php
require_once('bootstrap.php');
echo Doctrine::getPath();
これでコマンドラインからテストスクリプトを実行できます。これはこの章全体でDoctrineでテストを実行する方法です。動作しているか確認してください!Doctrineがインストールされている場所のパスが出力されます。
$ php test.php
/path/to/doctrine/lib
ふぅ!実際にコードに取り組んだ最初の章でした。ご覧の通り、最初にサーバーがDoctrineを実際に実行できることをチェックできました。それから異なる複数の方法でDoctrineのダウンロードとインストールができることを学びました。最後にこの本の残りの章で練習するために使う小さなテスト環境をセットアップすることでDoctrineを実装する方法を学びました。
Introduction to Connectionsの章に移動してDoctrineの接続を初体験しましょう。