2
我一直在使用活動記錄,並且我想稍微改變景色,一些開發人員朋友建議查看ORM,我所看到的所有ORM項目都需要一個單獨的類來擴展ORM類。動態創建類
我的問題是:有什麼辦法可以動態創建一個功能使用PHP的類沒有eval
?
這是我有:
<?php
class Constructor
{
function new_class($class)
{
$myself = get_called_class();
eval("class {$class} extends {$myself} { }");
}
function say_hi()
{
$class = get_called_class();
echo "Hi, {$class}!";
}
}
$constructor = new Constructor;
$constructor->new_class("Greeter");
$greeter = new Greeter;
$greeter->say_hi(); // Hi, Greeter!
但是,我的客戶告訴我,eval
被阻止在他的環境,由於他是在共享主機。
但是爲什麼?創建一個類,把參數放在數組中,添加一個方法'__set'和'__get' - 在數組中設置參數,你可以添加參數'$ name',它將設置'setName($ name)'和它將是類的名字,試圖獲得,做'getName()。班上的繼承人。 – mkjasinski 2013-03-16 13:28:00
在PHP中沒有「美麗」的方式來做到這一點。你可以使用eval(),或者在運行時用類定義創建一個文件,然後包含()它......但考慮改變你的程序設計。 見http://stackoverflow.com/questions/3490474/how-to-create-or-define-class-in-php-at-runtime – 2013-03-16 13:46:19