我想創建一個我不知道名稱的類。在PHP中完成以下場景的最佳方式是什麼?使用變量動態定義PHP類
$class_name = 'SomeClassName';
$code = "class {$class_name}_Control extends WP_Customize_Control {}";
eval($code);
謝謝。
我想創建一個我不知道名稱的類。在PHP中完成以下場景的最佳方式是什麼?使用變量動態定義PHP類
$class_name = 'SomeClassName';
$code = "class {$class_name}_Control extends WP_Customize_Control {}";
eval($code);
謝謝。
我剛測試過它,它工作正常。如果你只是暫時需要上課,你總是可以在底部投一個unlink()
。不需要exec()
。
<?php
// your dynamic classname
$fart = "poot";
// define your class, don't forget the "<?php"
$class = <<<YOYOYOHOMIE
<?php
class $fart{
public \$poop = "poop";
}
YOYOYOHOMIE;
// write the class to a file.
$filename = "dynamicClass".time().".php";
$fh = fopen($filename,"w+");
fwrite($fh, $class);
fclose($fh);
// require the file
require $filename;
// now your dynamically generated class is available
$tird = new $fart;
echo "<pre>";
var_dump($tird);
感謝您的建議,但您的方法接縫crappier(雙關語意)比我的。 heredoc語法使得編寫該類變得更容易一點,但爲錯誤打開更多空間。 – Marc
好,說句公道話,動態創建一個類似乎一般漂亮蹩腳考慮安全隱患,你正在做,無論是否使用'eval'。祝你好運,找到你喜歡的東西。 –
請參閱本 - > http://stackoverflow.com/questions/7131295/dynamic-class-names-in-php – Jesse
@Jesse如果我沒有弄錯,你引用的示例演示如何實例化一個來自已存在的類的對象。我的課程還不存在。我想動態地創建它。 – Marc
在這種情況下,你做這件事的方式就是我所能說的。之後查看第三個回答,等等。一般共識這是一個評估 - > http://stackoverflow.com/questions/1203625/dynamically-generate-classes-at-runtime-in-php – Jesse