Что означает Метод <Имя класса>?

Строгие стандарты: нестатический метод [& lt; class> :: & lt; method>] не следует называть статически

Происходит при попытке вызова не- статический метод для класса, поскольку он был статичным, и вы также имеете флаг E_STRICT в настройках error_reporting().

Пример:

class HTML {
   public function br() {
      echo '
'; } }

HTML::br() или $html::br()

Вы действительно можете избежать этой ошибки, не добавляя E_STRICT к error_reporting(), например

error_reporting(E_ALL & ~E_STRICT);

, поскольку, как и для PHP 5.4.0 и выше, E_STRICT включен в E_ALL [ ref ]. Но это не рекомендуется. Решение состоит в том, чтобы определить вашу предполагаемую статическую функцию как фактическую static:

public static function br() {
  echo '
'; }

или вызвать функцию условно:

$html = new HTML();
$html->br();

Похожие вопросы:

44
задан inspite 1 July 2017 в 16:44
поделиться

5 ответов

Это - Общий метод, Создайте, объявляется с параметрами типа, и проверьте, что это связывается для получения дополнительной информации:

37
ответ дан R.D. Alkire 26 November 2019 в 22:13
поделиться

Это называет общий метод - так в Вашем случае, метод может быть объявлен как это:

public T Create<T>()

можно определить аргумент типа в угловых скобках, как Вы были бы для создания экземпляра универсального типа:

List<Event> list = new List<Event>();

, который помогает?

Одно различие между универсальным методы и универсальный типы - то, что компилятор может попытаться вывести аргумент типа. Например, если Ваш Create метод был вместо этого:

public T Copy<T>(T original)

Вы могли просто звонить

Copy(someEvent);

, и компилятор выведет, что Вы имели в виду:

Copy<Event>(someEvent);
25
ответ дан Jon Skeet 26 November 2019 в 22:13
поделиться

Это - общий метод, который реализует Метод фабрики шаблон.

1
ответ дан user33675 26 November 2019 в 22:13
поделиться

Этот синтаксис просто применяет дженерики к методу. Это обычно используется для сценариев, где Вы хотите управлять типом возврата метода. Вы найдете этот вид синтаксиса много в коде, который использует платформу МОК.

0
ответ дан lvaneenoo 26 November 2019 в 22:13
поделиться

Это - способ, которым Вы упоминаете общий метод в C#.

при определении общего метода Вы кодируете как это:

return-type MethodName<type-parameter-list>(parameter-list)

при вызове общего метода компилятор обычно выводит параметр типа из определенных аргументов, как этот пример:

Array.ForEach(myArray, Console.WriteLine);

В этом примере, если "myArray" является массивом строк, он назовет Массив. ForEach< string> и если это будет международный массив, это назовет Массив. ForEach< int>.

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

1
ответ дан Mehrdad Afshari 26 November 2019 в 22:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: