guessworkのアーカイブを展開すると、以下のようなファイルおよびディレクトリが生成されます。
examples/ lib/ public_html/ smarty/ LICENSE README
guessworkを利用してアプリケーション開発を始める場合は、libディレクトリを任意の場所にコピーするだけで構いません。あとはスクリプトからlib/Guesswork.phpを require_once で読み込むだけでguessworkが使用可能になります。
examples、public_html、smartyの各ディレクトリはサンプルアプリケーション関連ファイルが格納されています。サンプルアプリケーションの実行方法はREADMEを参照してください。
guessworkは、配布アーカイブのlibディレクトリにあるGuesswork.phpファイルを読み込むことで利用可能になります。サーバ全体でguessworkを利用する場合は、php.iniのinclude_pathにguessworkのlibディレクトリを含めるとよいでしょう。
UNIXの場合
include_path=".:/php/includes:/path/to/guesswork/lib"
Windowsの場合
include_path=".;c:\php\includes;c:\path\to\guesswork\lib"
上記の設定をしておくと、PHPスクリプト中に
require_once 'Guesswork.php';
と記述することでguessworkを読み込むことができます。
特定のWebアプリケーションでのみguessworkを利用する場合やphp.iniを編集できない場合には、配布アーカイブのlibディレクトリを任意のパスにコピーしておき、スクリプトからは Guesswork.php ファイルを読み込むようにします。
$ cp -R guesswork-0.0.1/lib /home/foo/includes/guesswork
上記のようにlibディレクトリをコピーした場合は、PHPスクリプト中に
require_once '/home/foo/includes/guesswork/Guesswork.php';
と記述してguessworkを読み込みます。
標準ではテンプレートエンジンとしてSmartyを利用するので、別途インストールしておく必要があります。guessworkからSmartyを利用するためには、SmartyのSmarty.class.phpのフルパスを憶えておいてください。
Smartyが必要とするディレクトリを作成します。
$ mkdir /home/foo/smarty $ mkdir /home/foo/smarty/templates $ mkdir /home/foo/smarty/templates_c
作成したディレクトリのうち、templates_cディレクトリはWebサーバの動作権限でファイルの書き込みができるようにしておきます。Webサーバの設定によって指定すべき権限は異なりますが、よくわからない場合は777に設定しておきます(この設定は安全なものではありません)。
$ chmod 777 /home/foo/smarty/templates_c
ここまででguessworkを利用する準備が整いましたので、試しにテンプレートファイルを表示するだけのアプリケーションを作成してみます。作成するファイルおよびディレクトリ構成は以下の通りです。ここでは便宜上、/home/fooをホームディレクトリとして説明しますが、自分の環境にあわせて適宜読み替えてください。
/home/foo/public_html/simple.php ブラウザがアクセスするアプリケーションの実体 /home/foo/smarty/templates/simple/default.html Smarty用のテンプレートファイル
simple.phpがアプリケーションの実体、default.htmlがテンプレートファイルとなります。templates_cディレクトリは、Smartyがテンプレートをコンパイルする際に使用されます。
では、まずアプリケーションの実体となるスクリプトを作成します。
/home/foo/public_html/simple.php:
<?php
require_once '/home/foo/includes/guesswork/Guesswork.php';
// コントローラクラスはControllerを継承する
class SimpleController extends Controller
{
// Smarty.class.phpのパス
var $_gw_template_class = "/home/foo/includes/smarty/Smarty.class.php";
// Smartyのテンプレートファイルが置かれるディレクトリパス
var $_gw_template_templates_dir = "/home/foo/smarty/templates";
// Smartyのテンプレートコンパイル用ディレクトリパス
var $_gw_template_compile_dir = "/home/foo/smarty/templates_c";
}
// コントローラの実行
$controller = new SimpleController();
$controller->process();
exit;
?>
上のスクリプトでは、
の2つが同じファイルに記述されています。通常、このような場合にはクラス定義と実行部を別ファイルに分割することが多いですが、guessworkではコントローラクラスを複数のスクリプトで共用することが無いため、このような構造を推奨しています(もちろん、クラス定義を別ファイルに抜き出すスタイルでも実害はありません)。
次にテンプレートファイルを作成します。guessworkでは、テンプレートファイルを配置するディレクトリ名およびテンプレートファイル名はコントローラクラス名によって自動的に決定され、SimpleControllerクラスが参照するデフォルトのテンプレートファイルは simple/default.html のようになります(詳細は「テンプレートあれこれ」を参照)。
/home/foo/smarty/templates/simple/default.html:
<html>
<head>
<title>何もしないアプリケーション</title>
</head>
<body>
<h1>何もしないアプリケーション</h1>
<p>
このアプリケーションは何もしません。
</p>
</body>
</html>
以上でアプリケーションの実装は完了です。ブラウザで simple.php にアクセスしてみると、以下のようにページが表示されます。