Условные выражения PHP, скобки необходимы?

Строгие стандарты: нестатический метод [& 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();

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

30
задан halfer 1 March 2015 в 22:28
поделиться

6 ответов

еще можно сделать если операторы как это:

<?php
if ($something) {
   echo 'one conditional line of code';
   echo 'another conditional line of code';
}


if ($something) echo 'one conditional line of code';

if ($something)
echo 'one conditional line of code';
echo 'a NON-conditional line of code'; // this line gets executed regardless of the value of $something
?>



и затем можно также записать если - еще в альтернативном синтаксисе:

<?php
if ($something):
   echo 'one conditional line of code';
   echo 'another conditional line of code';
elseif ($somethingElse):
   echo 'one conditional line of code';
   echo 'another conditional line of code';
else:
   echo 'one conditional line of code';
   echo 'another conditional line of code';
endif;
?>



с альтернативным синтаксисом можно также упасть из парсинга режима как это:

<?php
if ($something):
?>
one conditional line of code<br />
another conditional line of code
<?php
else:
   echo "it's value was: $value<br />\n";
?>
another conditional line of code
<?php
endif;
?>

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



и заставить его завершиться:

<?php
$result = $something ? 'something was true' : 'something was false';
echo $result;
?>

equals

<?php
if ($something) {
   $result = 'something was true';
} else {
   $result = 'something was false';
}
echo $result;
?>
67
ответ дан Jacco 27 November 2019 в 23:20
поделиться

Для вдаваний в немного большее количество подробностей причина, что фигурные скобки являются дополнительными, состоит в том, что синтаксис похож:

if(CONDITION) BLOCK
[elseif(CONDITION) BLOCK]
[else BLOCK]

БЛОК может быть отдельным оператором:

foo();

или это может быть включенная в фигурную скобку группа операторов:

{
    foo();
    bar();
}
9
ответ дан chaos 27 November 2019 в 23:20
поделиться

По-моему

if ($REMOTE_ADDR == "") $ip = "no ip"; else $ip = getHostByAddr($REMOTE_ADDR);

допустимо, но намного тяжелее читать, чем:

if ($REMOTE_ADDR == "") {
    $ip = "no ip"; 
} else {
    $ip = getHostByAddr($REMOTE_ADDR);
}
2
ответ дан smartcoder 27 November 2019 в 23:20
поделиться

Фигурные скобки (не скобки) являются дополнительными в PHP, как в самом подобном синтаксису C. Возможно, Вы думаете о Perl; они требуются там для той формы если синтаксис.

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

1
ответ дан chaos 27 November 2019 в 23:20
поделиться

Да, исключая фигурные скобки позволяется, хотя много раз я слышал, что 2 причины того, что не использовался тот синтаксис:

  1. более трудно читать. Менее очевидный для другого программиста.
  2. , Если Вы когда-либо wany для добавления чего-то в, если, то необходимо добавить фигурные скобки, который более тверд после тогда, когда Вы сначала кодируете, так как большинство редакторов добавит закрывающую фигурную скобку для Вас.

кроме того, да, синтаксис двоеточия допустим. Альтернативы могут быть найдены здесь: http://php.net/manual/en/control-structures.alternative-syntax.php

1
ответ дан Darryl Hein 27 November 2019 в 23:20
поделиться
brackets are needed to enclose what you want to do if the condition is true

я не могу думать ни о каком языке, который требует этого

-3
ответ дан Scott Evernden 27 November 2019 в 23:20
поделиться
Другие вопросы по тегам:

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