我有两个类ClassA和ClassB。 ClassA总是需要一个模板文件名,ClassB扩展了ClassA。我应该使用哪些OOP选项?
通常在创建ClassB实例时,用户必须指定模板文件名。像:
$classB = new ClassB('index');
但是现在我创建了ClassX,它扩展了ClassA,并且当用户使用ClassX时,他不得指定任何东西。它是一个只创建一个按钮的类,所以它自己知道这个模板文件是什么样的。
所以用户只是想呼吁:
$bttn = new ClassX();
和内部ClassA的的构造函数被调用“button_template”。
要做到这一点,我看到这些选项:
A)
public function __construct() {
$tplName = func_get_arg(0);
if (!isset($tplName)) {
$tplName = 'button_template';
}
parent::__construct($tplName);
}
或者B)
public function __construct($tplName='button_template') {
if (!isset($tplName)) {
$tplName = 'index';
}
parent::__construct($tplName);
}
或者C)
public function __construct($tplName='button_template') {
parent::__construct($tplName);
}
哪一个是最好的?为什么?
**仅B **当用户创建类并将参数的值明确设置为null时有意义。任何其他情况就像选项** C **。所以绝对不是B;) – 2010-01-09 20:01:51