SOY App開発の説明 SOY2DAOでデータベースを利用する1
データベースを利用するために下記をダウンロードしてください。

データベースを利用できるように、
admin.phpの57行目付近にある
if(!file_exists(CMS_COMMON . "db/" . APPLICATION_ID . ".db")){
$logic = SOY2Logic::createInstance("logic.InitLogic");
$logic->init();
}
データベースの初期化に関するコードがコメントアウトされていたら、
コメントアウトを外してください。
ここで使われているSOY2Logic::createInstanceは、
用意したロジックをコンストラクトする関数で、
config.phpで設定したSOY2::RootDirからドット区切りでロジックのファイルのパスを指定します。
SOY2::RootDirはsrcディレクトリに指定しているので、
引数でlogic.InitLogicを入れているということは、
/CMSインストールディレクトリ/app/webapp/mock/src/logic/InitLogic.class.php
を読み込むことになる。
InitLogic.class.phpのコードにありますが、
SOY Appで利用するデータベースは定数のSOYCMS_DB_TYPEで指定しており、
これはSOY CMSのデータベース設定をそのまま利用します。
データベースの初期化はSOY2DAOを使ってインサートすることで、
SQLiteとMySQLの文法の違いをフォローします。
(詳しくは後日の記事で記載します。)
最初にSOY Mockのサンプル用のSQLのスキーマは下記になります。
(SQLite版 : /src/logic/table_sqlite.sql)
CREATE TABLE soymock_sample( id INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR(512), description TEXT, create_date INTEGER, update_date INTEGER );
SOY2DAOを使うためにテーブルに対応したオブジェクトのファイルと、
対になるDAOのファイルを作成します。

config.phpでSOY2DAOの設定のディレクトリの設定で、
src以下のdomainディレクトリにSOY2DAO関連のファイルを配置します。
今回は/src/logic/table_sqlite.sqlでsoymock_sampleというテーブルを作成したので、
SOYMock_Sample.class.php
SOYMock_SampleDAO.class.php
この二つのファイルを作成します。
SOYMock_Sample.class.phpには、
カラム名に紐づいたプロパティと
そのプロパティに紐づいたgetterとsetterを用意します。
<?php
/**
* @table soymock_sample
*/
class SOYMock_Sample {
private $name;
function getName(){
return $this->name;
}
function setName($name){
$this->name = $name;
}
}
?>
プロパティ、getterとsetterが揃っていないとエラーになります。
ここで大事な点は
classの上に@tableの形でどのテーブルを読むかを指示します。
ちなみに、コメント+@で指示するときは、
/** * @ */
*の数は上記の記述のように守りましょう。
*の数を間違うと読み込まれません。
他にプロパティの指定で注意すべき点として、
/** * @id */ private $id;
CREATE TABLEの記述でPRIMARY KEYを指定した時には、
プロパティの上に@idを付けます。
プロパティとカラム名が異なる場合は、
/**
* @column create_date
*/
private $createDate;
function getCreateDate(){
return $this->createDate;
}
function setCreateDate($createDate){
$this->createDate = $createDate;
}
とする。
Tableのカラムにはないが、プロパティ、getterとsetterを用意したい場合は、
/**
* @no_persistent
*/
private $memo;
function getMemo(){
//なんかの処理を書く
}
とする。
以上の内容がテーブルに対応したオブジェクトの作り方です。
DAO側の記述の説明は次回にします。
2014.02.04 | Comments(0) | Trackback(0)
トラックバック -