函數(實際上是另一個類的構造函數)需要一個作爲參數的對象class temp
。所以我定義了interface itemp
並且包含itemp $obj
作爲函數參數。這很好,我必須通過class temp
對象到我的功能。但是現在我想將默認值設置爲這個參數itemp $obj
。如何做到這一點?還是不可能?
我會把測試代碼澄清:php函數如何將默認值設置爲對象?
interface itemp { public function get(); }
class temp implements itemp
{
private $_var;
public function __construct($var = NULL) { $this->_var = $var; }
public function get() { return $this->_var ; }
}
$defaultTempObj = new temp('Default');
function func1(itemp $obj)
{
print "Got : " . $obj->get() . " as argument.\n";
}
function func2(itemp $obj = $defaultTempObj) //error : unexpected T_VARIABLE
{
print "Got : " . $obj->get() . " as argument.\n";
}
$tempObj = new temp('foo');
func1($defaultTempObj); //Got : Default as argument.
func1($tempObj); //Got : foo as argument.
func1(); //error : argument 1 must implement interface itemp (should print Default)
//func2(); //could not test as i can't define it
你可以在這種情況下,用我的小庫[ValueResolver(https://github.com/LapaLabs/ValueResolver),檢查我的回答,請 –