つまり、文字列:"class cl{...}"
があり、それを含めたいと思います。機能があることは知っていeval
ますが、それが最善の方法ですか?
3 に答える
2
これを文字列として持つ理由によって異なります。それはどこから来たのですか?
ユーザーが生成したもの、つまりユーザー入力である場合は、評価にかけない方がよいでしょう。ユーザーは、あなたの Web サイトで任意のコードを簡単に実行できます。
これをファイルから読み取って、それが正当であることがわかっている場合は、include
そのファイルで使用してください。しかし、あなたも使うことができますeval
。その文字列がユーザー生成ではないことが重要です!
于 2013-08-09T08:48:26.757 に答える
1
わかりましたcall_user_funcを使用してオブジェクトを動的に呼び出すことができます
namespace Foobar;
class Foo {
static public function test() {
print "Hello world!\n";
}
}
call_user_func(__NAMESPACE__ .'\Foo::test'); // As of PHP 5.3.0
call_user_func(array(__NAMESPACE__ .'\Foo', 'test')); // As of PHP 5.3.0
あなたの場合:
$obj = '\Foo';
$method = 'test';
call_user_func(array(__NAMESPACE__ .$obj, $method));
于 2013-08-09T09:30:06.233 に答える
1
これは、PHP ユーザーがこの種の質問をするための一種の習慣です。異常で信頼性の低いメカニズムを考案し、それで行き詰まり、スタック オーバーフローに質問することです。そして、不安の匂いがする典型的なXY 問題があります。また、SOは厳密に直接的な回答であるため、臭い回答もあります。
逆さまにしなければならない理由: 最初に質問をしてから、実際の問題に対する適切な解決策を見つけてください。
于 2013-08-09T09:33:25.060 に答える