Я понимаю, что static
означает, что объект не должен быть создан для того, чтобы это свойство/метод было доступно. Я также понимаю, как это относится к частной собственности и методам и общедоступным методам. Я пытаюсь понять, что статическая частная функция набирает вас. Например:
class Beer {
static private $beertype = "IPA";
private function getBeerType() {
return self::$beertype;
}
static public function BeerInfo() {
return self::getBeerType();
}
}
print Beer::BeerInfo() . "\n";
Частный метод getBeerType()
выполняется просто отлично без экземпляра объекта, если он вызывается из статического общедоступного метода. Если статический общедоступный метод имеет доступ ко всем приватным методам (статическим и нестационарным), то какой смысл объявлять метод static private?
При включенном строгом сообщении об ошибках я получаю предупреждение о том, что мне нужно сделать getBeerType()
static, хотя он все еще позволяет мне запускать код. И я сделал небольшое исследование, и кажется, что другие языки (Java) заставят вас объявить частный метод статичным при вызове статическим общедоступным методом. Похоже, PHP позволяет вам уйти от этого. Есть ли способ заставить его выбросить ошибку и не выполнить?