我有兩個類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