我想instanciate一個類,它需要任何數量的構造參數。如何從數組中自動構建變量?
可以說我有一個類Man,它在構造函數中有兩個參數。
class Man
{
protected $name;
protected $age;
public function __construct($name, $age)
{
$this->name = $name;
$this->age = $age;
}
}
然後,我有PARAMS:
$params = array()
$params['name'] = 'Jack';
$params['age'] = 55;
這就是我如何實例化一個類:
$jack = new Man($params['name'], $params['age']);
現在我想才達到的是參數數組可以是任何東西大小,2,3,4,任何和我會instanciate類將具有相同數量的參數。
所以唯一困擾我的是如何自動創建變量? 有提取物的功能,但它返回變量的數目:(
我需要這個東西。
$jack = new Man($name, $age);
但這應該是全自動生成的腳本只知道參數數組,而且它。須推動所有數組值作爲變量
最接近的事是這樣的:
$jack = new Man(extract($params));
但提取函數返回編號,我需要從數組中創建變量,並將它們提供給類構造函數。
編輯:
我不能改變類林建設,我唯一的目標是構建一個類,並通過它期望在構造函數的變量。所以我沒有權力建設類的建築,我的目標是隻讓這個類實例化,並給了她的構建參數。這些參數存儲在$ params數組中,但類需要它作爲變量。希望它更容易掌握我試圖實現的目標。
感謝
爲什麼不將數組傳遞給構造函數? – JvdBerg
我試圖建立依賴注入容器,以便容器將實例化一個不是由我構建的類。如果這個類在構造函數中需要2個變量,那麼我必須把它們放在那裏。所以我可以「告訴」容器,在構造中有一個類需要2個參數。而這兩個參數是$ params數組。現在:)我將如何推送$ params數組中的變量作爲變量。 – Limeni
已更新我的答案,以包含一個可能的函數,以允許您在不修改類的情況下提取參數。 – RMDan