我正在編寫一個PHP類。它的另一個類的實例Colour
的一個實例的方法類型提示setColour()
。爲什麼PHP的類型暗示認爲我的類是一個字符串?
我這樣做:
$colour = new Colour($updates->colour);
echo get_class($colour);
$product->setColour($colour);
正如我預料的那樣,get_class告訴我,$colour
是domain\Colour
一個實例,但後來我把它傳遞給setColour()
時的錯誤:
Catchable fatal error: Argument 1 passed to domain\Product::setColour() must be an instance of domain\Colour, string given,…
Colour
看起來是這樣的:
<?php
namespace base\domain;
/**
* Represents a colour.
*
**/
class Colour extends \base\domain\Enum {
const __default = self::NONE;
const NONE = NULL;
const BLACK = 'black';
const BLUE = 'blue';
const BRONZE = 'bronze';
const BROWN = 'brown';
const GOLD = 'gold';
const GREEN = 'green';
const GREY = 'grey';
const MULTICOLOURED = 'multicoloured';
const ORANGE = 'orange';
const PINK = 'pink';
const PURPLE = 'purple';
const RED = 'red';
const SILVER = 'silver';
const WHITE = 'white';
const YELLOW = 'yellow';
} // END class Colour
Colour
擴展了一個自定義Enum
類型,該類型覆蓋__toString()
,所以我認爲這可能會導致問題,但是當我刪除__toString()
實現時不起作用。
任何想法,你可以提供將不勝感激。
奇怪。你在字面代碼上面顯示的是什麼? –
以及如果您執行'$ product-> setColour(new Color($ updates-> color));'? – pleasedontbelong
發佈有問題的類,它會更容易幫助你出來 – Breezer