SOY App開発の解説 公開側の表示1
2014.01.31
公開側のページへの表示の際、page.phpがはじめに読み込まれます。
詳細は下記URLで配布しているSOY Appのモックのpage.phpのコードないにコメントで記載されていますが、
処理は主に下記のようになっています。
最初に読まれるmain関数を見ると、
//SOY2::RootDir()の書き換え $oldRooDir = SOY2::RootDir(); $oldPagDir = SOY2HTMLConfig::PageDir(); $oldCacheDir = SOY2HTMLConfig::CacheDir(); $oldDaoDir = SOY2DAOConfig::DaoDir(); $oldEntityDir = SOY2DAOConfig::EntityDir(); $oldDsn = SOY2DAOConfig::Dsn(); $oldUser = SOY2DAOConfig::user(); $oldPass = SOY2DAOConfig::pass();
データベースのDSNの切り替えとその周辺の設定変更
具体的にはSOY CMSのDSNからSOY AppのDSNに切り替える処理と、
SOY CMSやSOY AppはDAOでデータベースに接続しているので、
DAO周りの切り替えを行っています。
SOY2DAOについての詳細は下記の記事をご覧ください。
SOY2フレームワークの解説 1回目 SOY2DAO(1/2)
SOY2フレームワークの解説 1回目 SOY2DAO(2/2)
続いて、
app:id="soymock"の作成を行います。
$this->page->createAdd("soymock","SOYMock_ItemComponent",array( "application" => $this, "page" => $page, "soy2prefix" => "app" ));
createAdd関数によりapp:id="soymock"が使用できるようになります。
createAdd関数の第一引数に入る値は、soy:id="***"の***に当たる箇所の指定となり、
第二引数にはsoy:id="***"で囲った箇所の処理が記載されたクラスの指定となり、
第三引数には第二引数で指定したクラスのオブジェクトに送る配列を入れます。
第三引数の配列には自由に値を入れることができ、
渡したクラスで該当するsetter関数を用意すれば良いです。
soy2prefixはsoy:id="***"のsoyの箇所の変更で、
今回はappを入れているのでapp:id="soymock"となります。
第二引数に入れたクラスの説明を前に、
main関数の残りの説明を続けると、
//元に戻す SOY2::RootDir($oldRooDir); SOY2HTMLConfig::PageDir($oldPagDir); SOY2HTMLConfig::CacheDir($oldCacheDir); SOY2DAOConfig::DaoDir($oldDaoDir); SOY2DAOConfig::EntityDir($oldEntityDir); SOY2DAOConfig::Dsn($oldDsn); SOY2DAOConfig::user($oldUser); SOY2DAOConfig::pass($oldPass);
最初に行ったDSNの切り替えを戻すという処理で終わります。
次にapp:id="soymock"を作成した時の第二引数に入れたSOYMock_ItemComponentクラスの説明をします。
SOYMock_ItemComponentクラスはapp:id="soymock"で囲った箇所のHTMLはそのまま表示しつつ、他のsoy:idを追加できるクラスであるSOYBodyComponentBaseクラスを継承しており、実際の処理はexecute関数で行われます。
上のSOYMock_PageApplicationのmain関数でのcreateAdd関数の第三引数に放り込んだ配列のkeyをprivateプロパティとして、各プロパティに対応したsetter関数を用意する必要があります。
private $page; private $application; function setPage($page){ $this->page = $page; } function setApplication($application){ $this->application = $application; }
後はexecute関数に行いたい処理をphpで記載していけばSOY Appの完成です。
次回は処理の詳細についてを記載します。