Подтвердить что ты не робот

"public static" или "static public"?

Малому вопросу о ключевых словах объявления функции в PHP: если у вас есть метод класса, который статичен, если ключевое слово static должно быть до или после ключевого слова видимости (public, protected, private)? Предполагая, что все ваши методы, статические или другие, имеют ключевое слово видимости, то вам нужно, чтобы ключевое слово видимости оставалось в том же месте относительно ключевого слова function:

public function foo() {}

public function bar() {}

protected function baz() {}

private function quux() {}

Теперь сделайте вид, что пара статична:

public function foo() {}

static public function bar() {}

protected function baz() {}

static private function quux() {}

Кроме того, если метод статичен, вы хотите, чтобы это было первым, что видно, потому что это больше влияет на какой метод, чем на ключевое слово видимости.

Это строго проблема чтения, поскольку она, очевидно, не имеет никаких функциональных или конструктивных последствий. (Что я могу придумать.)

4b9b3361

Ответ 1

Языки, такие как Java и С#, требуют, чтобы модификатор доступа был первым, поэтому Изменить: Предыдущая пораженная строка полностью неверна. Ни один из этих языков не имеет этого требования.


public static

выглядит корректно для меня. Аргументы могут быть сделаны для обоих подходов, а моя - так: поскольку "статический" квалифицирует функцию, а не модификатор доступа, имеет смысл сказать

<access_modifier> static

Если вы используете его, наоборот, значение "статический" менее понятно.

Ответ 2

Из PSR-2:

Видимость ДОЛЖНА быть объявлена ​​во всех свойствах и методах; Абстрактные и final ДОЛЖНЫ быть объявлены перед видимостью; статический ДОЛЖЕН быть объявленный после видимости. [ссылка]

... если вам нужно заботиться о стандарте и соглашениях группы PHP Framework Interop.

So public static not static public в соответствии с ними.

Ответ 3

Я не думаю, что это строго PHP-вопрос, и за что мало стоит, я всегда предпочитал согласованность размещения модификатора видимости. Мне легче сканировать.

Ответ 4

В дополнение к ответ Алексей Тенницкий.

I prefer static public since this way 
it is easier to spot [usually rare] static methods in classes.

Все методы должны иметь свою видимость. Итак, мы знаем, что каждый метод будет иметь то, что упоминается в этом определении, единственный вопрос: "Какая настройка это?".

Только некоторые из них являются статическими, поэтому для каждого из них мы должны спросить: "Есть ли упоминание ключевого слова static в определении?". Итак, ставьте статические, чтобы сделать ответ на этот вопрос более очевидным.

Или, как более широкое правило,......... Я склонен сначала поставить "самый экстраординарный аспект", чтобы я не подсознательно не пропускал вещи при чтении их.; О)

Попробуйте этот тест.

Очень быстро... Сколько статических методов существует в классе A?

class A {
 public static methodA() {
  }
 protected static methodB() {
  }
 private staticlymethodC() {
  } 
}

и сколько статических методов существует в классе B?

class B {
 public methodA() {
  }
 static protected methodB() {
  }
 static private methodC() {
  } 
}

Я думаю, что класс B намного легче понять быстро.

Ответ 5

Я помещаю видимость сначала на каждый используемый язык, у которого есть модификаторы типа.

Ответ 6

Я предпочитаю static public, так как таким образом легче обнаружить [обычно редкие] статические методы в классах.

Ответ 7

Вы правы в том, что он не влияет на код. Таким образом, это зависит от ваших собственных требований к стилю, а также от ваших действий в отношении того, что вы делаете. Проконсультируйтесь с ними и согласитесь о стиле.

Если вы кодируете только для себя, тогда вы должны выбрать для себя. Выбор не важен, но согласованность.

Другой вопрос, который вы можете задать, должен: следует ли использовать "публичный" или нет? Для обратной совместимости (PHP4 не скрывал информации) что-либо без модификатора видимости является общедоступным по умолчанию. Если вы беспокоитесь о том, чтобы публиковать его публично? Опять личный выбор: сделайте сильный аргумент в любом случае, и вы убедите меня, что ваш выбор лучше всего.

Лично, когда я просматриваю и очищаю свой собственный код, мне нравится сначала поместить модификатор видимости и указать его, даже если он открыт.