関連する投稿を検索した後、この投稿を読みました。
少し違いますが、関連する問題があります。
クラスの構造を定義できるように、EVAL()なしで(これは悪い考えです-誰かがユーザーにevalで使用される値を提供することを許可した場合などに悪用される可能性があるため)、次のような方法はありますか?
if(!class_exists($className) && dao::tableExists($className)) {
class $className extends daoObject {
public function __construct($uid) {
parent::__construct($uid);
}
}
dao::generateClass($className);
}
これは、新しいコアテーブルがフレームワークに追加されたときに、対応するフィールド(親の__callを介したゲッター/セッター、追加/挿入、更新/削除)にアクセスするための汎用データアクセスオブジェクトとともに使用できるためです。コーダーがクラスを作成する必要なしに、それぞれのクラスを作成し、それを検査したり、さまざまなタイプのテーブルのカスタムコードジェネレーターを作成したりする必要はありません。daoObjectは私のためにそれをすべて行います。
この種のメソッドを使用して、クラスが存在しない場合はクラスを定義し、クラス定義をファイルに書き込むことを目的としています。
対応するテーブル名が存在しない場合、失敗します。クラスが存在する場合(たとえば、次に実行されるとき)、クラスは定義されません。存在しないがテーブル名である場合は、作成して使用し、最初に呼び出すときに保存できます。これは、新しいテーブルが挿入され、スクリプトを実行してデータを挿入するときに発生します。作成者は、csvを介してテーブルフィールドとサンプルデータのみを定義します。このスクリプトは、クラスを生成し、1回のヒットでデータをインポートします。定義をファイルに書き込んでからインクルードすることもできますが、これは機能するようですが、オブジェクトのプロパティを変更した後でそれを実行したいので、ファイルを2回書き込む必要はありません。仕事。
これは単純化されていますが、可能ですか?