0

PHPで変数を使ってクラス名を定義したいと考えています。これは可能ですか?

説明させてください。

私は、エンド ユーザーがテーブル名のプレフィックスを構成できるようにする小さなカスタム CMS です。そのため、ユーザーは「rc_」などのプレフィックスを定義できます。問題は、テーブル名をクラスとして使用するモデルがたくさんあることです。たとえば、私のテーブルの 1 つが の場合rc_posts、モデルが呼び出されます

class MyModel_Rc_posts extends MyModelController {
         // code here
}

次のようなものを使用せずに、PHP で変数を使用してクラスを定義する方法はありますかeval()

class MyModel_{$PREFIX}posts extends MyModelController {
// code here
}

eval を避けたい理由は、これらのクラスの一部がかなり長くなる可能性があるためです。提案をいただければ幸いです。

4

1 に答える 1

3

class_aliasを見てみましょう- これは読みやすくするのに役立つはずです!

これを明確にするために、「通常の」名前でクラスを作成し、必要に応じてエイリアス名を追加します。エイリアス名は任意の文字列にすることができます。これには、変数に格納された文字列が含まれます。

編集

私はそれclass_alias()が進むべき道だと思いますが、それなしでそれを行う方法の例を次に示します。

OQ から:

class MyModel_Rc_posts extends MyModelController {
         // code here
}

eval("class MyModel_{$PREFIX}posts extends MyModel_Rc_posts {};");

と非常によく似た処理を行う必要がありますclass_alias()

後で必要になった場合は、この方法が必要になる可能性がありますget_class()。エイリアス化されたクラスでは、エイリアスではなく、元の (静的) クラス名が得られます。醜いeval()/extendsトリックを使用すると、動的な名前が得られます。

于 2012-09-01T18:26:46.157 に答える