0

私はこれのオーダーで何かをすることができるようになりたいです

$name = "Hello".time().mt_rand();
class $name {
    function hellolol() {
        echo "LOL";
    }
}
$name::hellolol();

PHPでリロード可能なモジュールシステムを構築できるようにします。これも可能ですか?もしそうなら、どうすればこのようなことをすることができますか?

編集:それ以来、私はこれを、受け入れられた答えが示唆したことを本質的に行うプロジェクトに変えました。リンクは次のとおりです: https ://github.com/Modfwango/Modfwango

4

2 に答える 2

3
$name = "Hello".time().mt_rand();
eval(sprintf('
class %s {
    static function hellolol() {
        echo "LOL";
    }
}', $name));
$name::hellolol();

かなり厄介ですが、嘲笑などには適しています。

于 2012-11-22T02:12:22.253 に答える
3

これは技術的には可能ですが、非常に悪い方法です。

まず、このファイルを保存します。

<?php
// GeneratedClass.php
class CLASSNAME {
    function hellolol(){
        echo "LOL";
    }
}

次に、以下を使用してカスタム名のクラスを作成します。

<?php
function generate_class($name){
    eval('?>'.str_replace('CLASSNAME', $name, file_get_contents('GeneratedClass.php')));
}

generate_class("Hello".time().mt_rand());

繰り返しますが、これは良い考えではありません。これらのクラスを手動で解析することによって、何をするのもevalおそらく悪い考えであるという事実は別として、IDE が提供する利点が失われ、ファイルは memcached のようなものによってキャッシュできなくなります。使用する悪夢。しかし、それは可能です。

于 2012-11-22T02:14:28.193 に答える