聲明var $b;
是PHP 4 PHP 5允許它,它是相當於public $b;
。
但是,它已過時,如果您使用正確的錯誤報告(開發期間爲error_reporting(E_ALL);
),您會收到警告。您應該改用PHP 5 visibility kewords。
此外,聲明function repo($myvar)
是一種PHP 4構造函數樣式,也被接受但不推薦使用。您應該使用PHP 5 __constructor()
語法。
您訪問$b
爲static::$b
,這與它的聲明(等效,如上所述,與public $b
相當)不兼容。如果您希望它是類屬性(這是static
所做的),則必須將其聲明爲類屬性(即public static $b
)。
將所有內容放在一起,寫上您的課正確的方法是:
final class repo {
// public static members are global variables; avoid making them public
/** @var \Guzzle\Http\Client */
private static $b;
// since the class is final, "protected" is the same as "private"
/** @var \Guzzle\Http\Client */
protected $client;
// PHP 5 constructor. public to allow the class to be instantiated.
// $myvar is probably a \Guzzle\Http\Client object
public __construct(\Guzzle\Http\Client $myvar)
{
static::$b = $myvar;
// $this->b probably works but static::$b is more clear
// because $b is a class property not an instance property
$this->client = static::$b;
}
}
'$ b'不是一個固定的規則。 '$ this-> b = $ myvar'或'public static $ b;' – Federkun
您必須將$ b初始化爲** public static $ b **。除非你不能使用它。 –
'var $ b;'。你想支持php4?或者你只是閱讀很老的教程? –