Декларация 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? Или вы просто прочитали очень старый учебник? –