1

実行することで実行時にクラスを生成できることを知っています

$obj = (object)array('foo' => 'bar');+

このように私は使用することができます

echo $obj->foo; //bar

$obj を既存のクラスから継承させたい場合はどうすればよいでしょうか?

私が達成したいこと: 私は github ( https://github.com/balanza/paris ) で paris プロジェクトをフォークしています。アクティブレコードクラスです。空であっても、すべてのオブジェクトに対してクラスを宣言する必要があるのだろうか。

class User extends Model{}

この退屈なことを避けるために、動的オブジェクトを使用する可能性があると思います。

4

3 に答える 3

2

いつでもできますeval('class User extends Model{}')が、お勧めできません。実際には、ファイルにクラスを作成するだけで、オペコードのキャッシュが適切に機能し、バージョンを追跡できるようになります。

tl; dr:モデルクラスを定義します。これはRightThingToDo™です。

于 2011-02-08T02:40:04.830 に答える
1

他に方法がない場合は、Dynherit クラスを使用して「動的」継承を作成できます。必要な継承を作成しますが、ファイルから、まだロードしていないクラスのみを使用します。

v0.62 をダウンロード: http://optimisationphp.komrod.com/source/sha/test/dynamic_inheritance_01/dynherit_v0.62.zip

GitHub リンク : https://github.com/Komrod/Dynherit

于 2012-08-02T19:30:28.273 に答える
0

厳密にあなたの質問に、私がそれを可能にする唯一の方法は、Runkitを使用することです。これにより、その場でクラスを再宣言できます。そのソリューションがどれほど移植可能かはわかりません。

于 2011-02-07T17:55:20.293 に答える