2015-09-27 73 views
1

我想創建一個我不知道名稱的類。在PHP中完成以下場景的最佳方式是什麼?使用變量動態定義PHP類

$class_name = 'SomeClassName'; 
$code = "class {$class_name}_Control extends WP_Customize_Control {}"; 
eval($code); 

謝謝。

+0

請參閱本 - > http://stackoverflow.com/questions/7131295/dynamic-class-names-in-php – Jesse

+0

@Jesse如果我沒有弄錯,你引用的示例演示如何實例化一個來自已存在的類的對象。我的課程還不存在。我想動態地創建它。 – Marc

+0

在這種情況下,你做這件事的方式就是我所能說的。之後查看第三個回答,等等。一般共識這是一個評估 - > http://stackoverflow.com/questions/1203625/dynamically-generate-classes-at-runtime-in-php – Jesse

回答

0

我剛測試過它,它工作正常。如果你只是暫時需要上課,你總是可以在底部投一個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); 
+0

感謝您的建議,但您的方法接縫crappier(雙關語意)比我的。 heredoc語法使得編寫該類變得更容易一點,但爲錯誤打開更多空間。 – Marc

+0

好,說句公道話,動態創建一個類似乎一般漂亮蹩腳考慮安全隱患,你正在做,無論是否使用'eval'。祝你好運,找到你喜歡的東西。 –