我處於需要使用另一個類的實例中的參數實例化類的情況。 這裏是原型:PHP:如何使用另一個類中的參數實例化一個類
//test.php
class test
{
function __construct($a, $b, $c)
{
echo $a . '<br />';
echo $b . '<br />';
echo $c . '<br />';
}
}
現在,我需要實例上面用下面類的CLS功能類:
class myclass
{
function cls($file_name, $args = array())
{
include $file_name . ".php";
if (isset($args))
{
// this is where the problem might be, i need to pass as many arguments as test class has.
$class_instance = new $file_name($args);
}
else
{
$class_instance = new $file_name();
}
return $class_instance;
}
}
現在,當我試圖同時傳遞參數來創建測試類的一個實例它:
$myclass = new myclass;
$test = $myclass->cls('test', array('a1', 'b2', 'c3'));
它給出錯誤: 缺少參數1和2;只有第一個參數被傳遞。
這工作得很好,如果我實例化一個沒有它的構造函數參數的類。
對於有經驗的PHP開發人員來說,上面應該不是什麼大問題。請幫忙。
感謝
與您的問題無關,但$ args將始終爲'isset',因爲您在函數定義中將array()分配給它。你可能對'empty'或'$ args = null'感興趣。 – Tordek
對不起,這也與你的問題無關,但你所做的並不酷。你的問題的答案是:讓你的構造函數接受一個數組,獲得一些類屬性,然後處理該數組並將其映射到類屬性。但是,再一次,你正在做一些不太酷的事情。 – DarthVader
測試類和其他開發人員將使用自己的方式使用自己的方式和沒有它,所以我不想限制他們只傳遞參數作爲數組構造函數。 – Sarfraz