我有一个在我的框架中创建子元素的公共方法,addElement()
它的定义如下:
// addElement - adds an element (experimental version)
public function addElement() {
if ($arguments = func_get_args()) {
$class = "\\UI\\{$arguments[0]}";
if (func_num_args() > 1) {
$parameters = null;
foreach (array_slice($arguments, 1) as $argument) {
$parameters[] = (is_numeric($argument) ? $argument : "\"{$argument}\"");
}
$this->elements[($arguments[0] === HTML ? uniqid() : $arguments[1])] = new $class(implode(", ", $parameters));
}
}
}
它被这样调用:
$article1 = new \UI\Article("article1");
$article->addElement(\UI\Aside, "aside1");
或者,或者(取决于您是否需要直接访问新元素):
$article1 = new \UI\Article("article1");
$aside1 = $article->addElement(\UI\Aside, "aside1");
当我使用接受两个以上参数(元素的类型及其名称,内部方式)的方法时,问题就来了,它是这样的:
$article1 = new \UI\Article("article1");
$article1->addElement(\UI\Abbreviation, "abbr1", "RAM", "Random Access Memory");
使用此方法,传递给函数的参数实际上是:
"abbr1", "RAM", "Random Access Memory"
我的意图是让这个字符串像您通常将参数传递给给定函数一样传递。我该如何执行(如果我需要重新构造函数也没关系,尽管理想情况下我只想添加丢失的位,如果这样进行是正确的)?