| ユーザフォーラムで議論/質問 | マニュアル検索 | ハイライト | ハイライトオフ | ポータル | php spot |
自動生成とデータベーススキーマ自動生成とデータベーススキーマ –
基底クラスの生成とデータベーススキーマ
自動生成 (createTables.php) が行うことSQL 構築ツールの本質的特長の一つは、 整数をチェックし文字列をエスケープする事ができるよう、 データベース構造のある程度の情報を持っていることです。 データベースのテーブル構造に問い合わせるためには、 いくつかの方法があります。
DB_DataObjectのもう一つの主要なコンセプトは、 DB_DataObjectを継承したクラスをあなたが使用する ということです。 このクラスは、全ての表に関連する処理を行います。 大規模なデータベース向けにこれらのクラスをセットアップすることは、 時間の浪費になる可能性があります。そのため、 createTables.php ファイルが全てのクラスファイルの雛形を自動的に作成します。 自動生成を始めるために、pear/DB/DataObject/ ディレクトリに移動し、 c:\php4\php.exe createTables.php myconfig.ini と打ち込んでください。これで設定ファイルを読み込み、 データ定義ファイルに沿って全ての基底クラスを生成します。 バージョン1.5からオプション "proxy = full" が利用可能になりました。これにより、ini ファイルや事前に生成されたクラスを利用しなくとも DataObjects がオンザフライでクラスやスキーマを生成するようになります。 デフォルトのクラス定義デフォルトで生成されるクラスは、このような感じです。 生成された継承クラス
<?php
クラスはテーブル名を定義し、 参照のためにいくつかのテーブルカラムに コメントを付けています。また、 単一行をオブジェクトとして素早く取得するために利用できる staticGet() メソッドも追加しています。 また、###END_AUTOCODE の後にテーブルに関連するコードを追加すべきです。 バージョン 1.6 以前では、__clone メソッドが生成されていましたが、 PHP5 では $x = clone($y); を使用するよう変更されましたので、 このメソッドは削除されました。 現在 DataObjects はダミー関数 clone を互換性のために (もし必要であれば) 生成します。 データベーススキーマファイルデフォルトで生成されるデータベース定義ファイルは以下のような感じで、 "schema_location" 設定オプションで定義されたディレクトリに配置され、 データベースと同じ名前が付けられます。 もし、データベースを改名する場合、 ファイルを再生成するか同じ名前に合わせる必要があります。 もし、データベーススキーマを変更する (たとえば、カラムを追加したり型を変更する) 場合、 createTables.php を使用してスキーマファイルを再生成する必要があります。 今のところ、これは自動的には行われません (が、そのうち追加されるかも知れません)。 このファイルは手で編集すべきではありません (再生成されるときに全ての変更が失われるので) 。 設定オプション "sequence_{table} = key" を使用したり、 継承したクラスで sequenceKey() メソッドを定義することによって、 表のキーを上書きすることができます。 データベース設定ファイル [group] id = 129 name = 130 grp_owner = 129 official = 130 street = 130 postcode = 130 city = 130 homepage = 130 email = 130 extra = 130 [group__keys] id = N
このブロックは、表と2進加算 (1=integer,2=string,128=not null, 129=integer かつ not null) によるフィールドの型、 または各表のキーの一覧を示しています。 このファイルを編集する必要はありません。 スキーマファイル使用の代替案スキーマファイルを使わないで DataObjects を使用することは可能で、 2つの手順で実現することができます。
以下は、手で書いた schema.ini ファイルを使用しないクラスです。 これは、オブジェクト変数よりはメソッドの戻り値となるよう 設計されていますので、 print_r() の出力は余分な情報が含まれていないでしょう (また、大きな結果セットをダンプしたときよりは小さいでしょう) 。 手で書いた継承されたクラス
<?php
|
各種マニュアル:
PHPマニュアル |
PEARマニュアル |
Smarty(英語)マニュアル |
PHP-GTKマニュアル |
「自動生成とデータベーススキーマ」をGoogle検索
|