2013-04-20 1 views
-1

Например ...Почему функции класса в php не нуждаются в точках с запятой в конце?

public function processRowSet($rowSet, $singleRow = false){ 
    $resultArray = array(); 
    while($row = mysql_fetch_assoc($rowSet)){ 
     array_push($resultArray, $row); 
    }; 

    if ($singleRow === true){ 
     return $resultArray[0]; 
    }; 

    return $resultArray; 
} 
...and then the next line continues without an issue 

Когда я был первый, начиная с ООП PHP, я сделал ошибку поставив точку с запятой в конце, и это заняло у меня около часа, чтобы выяснить, что случилось.

Благодарим за помощь!

+6

Ум, а также, если не нужны точки с запятой. – BoltClock

+0

Я не уверен, где бы вы видели полуколоны в любом примере или учебнике. Как сказал болт - то же самое, если и когда. Я не могу поверить, что он работает вообще –

+0

есть ключевое слово 'function' для определения этой строки theny why need another? –

ответ

2

Разница между заявлениями и выражениями:

  • Если-заявления, в то время как-заявления, функции и так далее заявления, которые не должны быть точка с запятой в конце.
  • Фактические команды: Выражения (т. Е. $foo = bar()). Автономные выражения требуют точки с запятой, возможно, поскольку у них нет фигурных скобок, чтобы обозначать концы выражений.

PHP заимствует этот синтаксис из C.

5

Почему?

Поскольку автор/программист языка программирования PHP разработал язык как таковой.

При создании какого-то кода в PHP следующий процесс происходит:

  1. Предварительно парсер разбирает файл, ищет синтаксические ошибки.
  2. После-парсер анализирует ваш файл, ища ошибки во время выполнения.
  3. Содержимое файла изменяется на ассемблерный код.
  4. Код ассемблера изменяется на машинный код, который затем запускает вашу программу.

Авторы языка программирования заставили синтаксический анализатор разрешить использование знаков с запятой после утверждений, а именно ПОЧЕМУ вам разрешено это делать. (Вместо этого они используют скобки).

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

0

Многие языки программирования не требуют конца инструкции, т. Е. ';' после функционального блока или любого другого типа операторов блока, например if, for, while. Мы не определяем конец блока терминатором, поскольку блоки уже ограничены в {}. Это связано с тем, как код выполняется парсером/компилятором языка.

1

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

public function processRowSet($rowSet, $singleRow = false){ 
    $resultArray = array(); 
    while($row = mysql_fetch_assoc($rowSet)){ 
     array_push($resultArray, $row); 
    } 

    if ($singleRow === true){ 
     return $resultArray[0]; 
    } 

    return $resultArray; 
} 

Точка с запятой сама по себе считается Null Statement (ничего не делать). Вот почему общая ошибка состоит в том, чтобы написать цикл, как:

for ($a=0; $a=10; $a++); 
    print $a; 

точка с запятой после цикла является команда ничего не делающая, что он будет выполнять (ничего) в 10 раз, а затем распечатать в «11».Это эквивалентно написанию:

for ($a=0; $a=10; $a++) { 
    ; // do nothing 
} 
print $a;