TOP書籍連動> Environmentクラス
フレームワークの役割とその構築
フレームワークの役割とその構築

第3回:フレームワークの役割と構築方法 〜 中編

著者:Darryl Patterson   2006/8/7
前のページ  1  2  3
Environmentクラス

   このクラスはフレームワークがセッションとやりとりする時に必要となる、セッション自体を含むすべての情報を保持します。ユーザ固有のID、言語、ユーザがログインしているかどうか、セッション変数の値などのデータをこのクラスで保持します。

   筆者は、このフレームワーク用にセッションハンドラを書きました。セッションハンドリング制御のところを自作することで、よりセキュリティを高められると思ったからです。Environmentクラスの実装例はリスト3を見てください。
リスト3
<?php
⁄**
 *
 *
 * @author Darryl Patterson 
 * @copyright Euro RSCG 4D
 *
 *⁄


require_once('common/session/class-HTTPRequest.php');
require_once('common/util/class-Config.php');

class Environment {
    var $config;
    var $session;
    var $currentModule;
    var $lang;
    var $username;
    var $userId;

         function Environment()

    {         $this->config = Config::instance();

        $this->session =& HTTPRequest::getSession(
      $this->config->sessionDatabaseName);
        $this->lang    =  $this->config->language;

                 $this->currentModule =
      HTTPRequest::getModuleName();

                 if ($this->session->getUserId() > 0){
             require_once(
          'common/session/dataobject/' .
          'class-DO_User.php');
            $do_user = new DO_User(
          $this->config->sessionDatabaseName);
            $do_user->get($this->session->getUserId());
            $this->username = $do_user->getField(
          'username');
            $this->userId   = $do_user->getField(
          'userId');
        } else {
            $this->username = '';
            $this->userId   = 0;
        }
    }

         function setLang($lang)
    {
        $this->lang = $lang;
    }
}
?>

   フレームワークではEnvironmentクラスのインスタンスを作るのにfactoryパターンを使っています。これにより、フレームワークで使える以上に多くの情報をEnvironmentクラスに持たせたい時には、開発者はプロジェクトに応じたEnvironmentクラスのサブクラスを作ることができます。


フロントコントローラ

   フロントコントローラは、大抵10行程度の小さなファイルになります。基本的にはハンドラやレンダラを作成して、ハンドラにリクエストを渡すだけの役割をします。リスト4に例を示します。

リスト4
<?php
require_once('common/util/class-Handler.php');
require_once('class-HTMLRenderer.php');

$handler = new Handler();
$template = new HTMLRenderer();

$template->setContent($handler->getHandledRequest(
$_REQUEST));

$template->render();
?>

前のページ  1  2  3

PHPプログラマーズマガジン 書籍紹介
PHPプログラマーズマガジン

PHPプログラマーズマガジンは、PDF形式で読者の方にお届けするPHP言語(PHP: Hypertext Processor)専門誌です。 カナダMTA出版のphp|architect誌を日本語に翻訳し、独自の記事を加えて月刊でお届けしています。

発行:アシアル株式会社  価格:1,029円

 ご購入はこちら
http://www.phppro.jp/magazine/
Darryl Patterson
著者プロフィール
Darryl Patterson
1992年からWebプログラミングの仕事に従事している。彼はHTMLが使われはじめてから、その後Perl/CGI、Cold Fusion、ASPやPHPが使われるようになっていくWebの歴史とともに歩んできた。PHPでの開発は1998年から手がけており、今はトロントのEuro RSCG 4Dで開発チームのリーダー。また1995年からWebプログラミングをCentennial大学で教えており、そこでトロントのPHPユーザ会であるTorPUGを立ち上げた。


INDEX
第3回:フレームワークの役割と構築方法 〜 中編
  Apacheの設定
  Configクラス
Environmentクラス