我正在爲此苦苦掙扎了一段時間,由於谷歌在這個問題上有tons of results我想知道我在做什麼錯誤,因爲沒有任何解決方案似乎適用於我。將繼承構造子類的構造參數傳遞給繼承子類
我有兩個類File
和Image
。我讓File
類決定輸入是圖像還是其他類型的文件。當文件是圖像時,我想將該文件傳遞給Image
類來處理它。
到目前爲止,我有這個
Class File{
public $file;
function __construct($input){
$this->file = $input;
}
public function getFileType(){
// determine filetype of $this->file
return 'image';
}
}
Class Image Extends File{
function __construct(){}
public function test(){
return $this->file;
}
}
$file = new File('file.jpg');
if($file->getFileType() == 'image'){
$image = new Image;
echo $image->test();
}
但這並不輸出任何東西。我如何訪問繼承類中父類的構造函數參數的值?在子構造函數類中調用parent::__construct();
(如mentioned here)給了我一個缺少的參數警告,並且this one(call_user_func_array(array($this, 'parent::__construct'), $args);
在子構造函數中)也不起作用。
我在想什麼?
'$ image'和'$ file'是__2__個不同的對象。 –
我知道,但我認爲(基於...以及我的假設)通過使Image類成爲文件類的擴展,我可以繼承父類的值。我在這個假設上錯了嗎? – Maurice
@Maurice - 問題是Image是派生類,而File是父類。這兩個類都是獨立的對象,子類可以訪問父類的(公共)屬性/方法。 在你的情況下,你正在嘗試它,反過來,你傳遞的東西到PARENT類,並試圖訪問這個在子類中,這將無法正常工作,因爲子類是一個不同的對象 – xhallix