Php синтаксис

PHP поддерживает альтернативный синтаксис для некоторых управляющих конструкций, а именно для: if, switch, while, for и foreach. Основная форма альтернативного синтаксиса заключается в замене открывающей фигурной скобки на двоеточие (:), завершающая фигурная скобка заменяется на ключевое слово endif, endswitch, endwhile, endfor и endforeach, которое соответствует используемой конструкции.

if

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

  <?php      $a = 4;   $b = 3;      if ($a > $b):    echo $a . " больше";    echo ", чем " . $b;    elseif ($a == $b): // Обратите внимание, здесь elseif записан в одно слово.   echo $a." равно ".$b;   else:   echo $a." меньше ".$b;   endif;    ?>  

Замечание: если для определения нескольких условий if/elseif используется альтернативный синтаксис, в этом случае можно использовать только elseif в одно слово, т.е. вы не должны разделять else if в два слова, так как это вызовет фатальную ошибку в PHP.

  <?php     /* Этот код вызовет ошибку: */   if ($a > $b):   echo $a." больше, чем ".$b;   else if ($a == $b):   echo $a." равно ".$b;   endif;    ?>  

Смешивание двух видов синтаксиса в одной конструкции не поддерживается, это правило относится ко всем операторам указанных в этой главе.

  <?php     /*Этот код не будет работать*/   if($a > $b):    echo $a . " больше";    echo ", чем " . $b;    elseif ($a == $b) { // нельзя смешивать два вида записей в одной конструкции   echo $a." равно ".$b;   }   else:   echo $a." меньше ".$b;   endif;    ?>  

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

switch

  <?php     $num = 2;   switch ($num):   case 0:   echo "$num равно 0";   break;   case 1:   echo "$num равно 1";   break;   case 2:   echo "$num равно 2";   break;   default:   echo "$num не равно 0, 1 или 2";   endswitch;     ?>  

while

  <?php     $num = 5;   while ($num--):   echo "$num<br>";   endwhile;    ?>  

for

  <?php     for ($k = 1; $k <= 10; $k++):   echo "$k ";   endfor;        // пример с вложенным циклом   for ($i = 0; $i < 4; $i++):   echo "Внешний цикл.<br>";   for ($j = 0; $j < 2; $j++):   echo "Вложенный цикл.<br>";  	endfor; //вложенные конструкции тоже надо завершать ключевым словом   endfor;     ?>  

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

  <?php     for ($i = 0; $i < 4; $i++):   echo "Внешний цикл.<br>";   for ($j = 0; $j < 2; $j++) {   echo "Вложенный цикл.<br>";   }   endfor;     ?>  

Дополнительные сведения

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

Приведем простой пример:

  <?php if ($a == 5): ?>   <p>A равно 5</p>  <?php endif; ?>  

В приведенном примере, блок HTML-кода "A равно 5" вложен внутрь конструкции if написанной с альтернативным синтаксисом. HTML-блок будет показан только в том случае, если переменная $a будет равна 5.

Как вы уже могли догадаться из примера выше, альтернативный синтаксис можно использовать для вставок в HTML-разметку. Так как в этом случае код php и html будут разделены, это упрощает верстку страницы.

Рассмотрим примеры для других конструкций:

     <ul>   <!-- использование конструкции for-->   <?php for ($items = 1; $items <= 10; $items++): ?>   <li><?php echo $items ?></li>   <?php endfor; ?>   </ul>      <ul>   <!--тоже самое, но с использованием конструкции while-->   <?php $items = 1; while ($items <= 10): ?>   <li><?php echo $items ?></li>   <?php $items++; endwhile; ?>   </ul>      <!--использование конструкции switch-->   <?php switch ($item):   case 1: ?>   <p>Значение равно 1.</p>   <?php break; ?>   <?php default: ?>   <p>Значение не известно.</p>   <?php endswitch; ?>  

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

  <?php if ($a == 5) { ?>   <p>A равно 5</p>  <?php } else { ?>   <p>A не равно 5</p>  <?php } ?>  

Синтаксис оператора foreach и его альтернативная запись будут рассмотрены позднее, а именно во время изучения массивов и объектов.

puzzleweb.ru

if

Позволяет организовывать выполнение фрагментов кода по условию.

Синтаксис :

if (выражение) statement

Может иметь неограниченную степень вложенности в другие IF.

if($a > $b) print "$a больше $b";
<?php if($a > $b) {  echo "$a больше $b";  $b=$a; } ?>

else

Расширяет возможности IF по части обработки вариантов выражения, когда оно равно FALSE.

Выражение ELSE выполняется только если IF равно FALSE.

if($a>$b) {  echo "a больше b"; } else {  echo "a не больше b"; }

elseif

Является комбинацией IF и ELSE. Позволяет выполнить выражение, если значение IF равно FALSE, но в отличии от ELSE оно выполниться, если выражение ELSEIF равно TRUE.

if ($a > $b) {  echo "a больше b"; } elseif ($a == $b) {  echo "a равно b"; } else {  echo "a меньше b"; }

if … endif

Один из возможных вариантов группирования операторов с оператором IF.

Удобно при внедрении больших блоков HTML-кода внутрь оператора IF.

if ($a == 1):  echo "a равно 1"; elseif ($a == 2):  echo "a равно 2"; else:  echo "а не равно 1 и 2"; endif;
<?php if ($a==5):?>A=5<?php endif;?>

Блок HTML-кода A=5 будет виден, если выполнется условие $a==5

while

Простейший тип цикла в PHP. Заставляет PHP выполнять вложенные операторы до тех пор, пока условие равно TRUE. Если условие равно FALSE с самого начала, то цикл не выполнится не разу.

Синтаксис:

WHILE(условие)выражения

Можно сгруппировать несколько операторов внутри фигурных скобок или использовать альтернативный синтаксис : WHILE(условие)выражения… ENDWHILE;

<?php $a=1; while ($a <= 5) {  echo $a++; } ?> 
<?php $a = 1; while($a <= 5):  echo $a;  $a++; endwhile; ?>

- Эти два примера выводят номера с 1 до 5.

do_while

Цикл, аналогичный WHILE, но значение логического выражения проверяется не до, а после окончания итерации. Основное отличие - то что цикл хоть один раз но выполнится.

<?php $a = 1; do {  echo $a; } while ($a > 1); ?>

Можно прекратить использовать блок операторов в середине путем внедрения оператора BREAK в цикл DO..WHILE(0) :

<?php do {  if ($a == 5) {  echo "A равно 5"  break;  }  $a *= $b;  if ($a < $minimum) {  break;  }  echo "A равен $a"; } while(0); ?>

for

Наиболее мощный цикл в PHP.

Синтаксис:

FOR (условие1; условие2; условие3)выражения
  • условие1 - Безусловно выполняется (вычисляется) в начале цикла

(условие2 - Проверяется в начале каждой итерации. Если оно равно TRUE, то цикл продолжается и выполняются вложенные операторы. Если оно равно FALSE, то цикл заканчивается. (условие3 - Выполняется (вычисляется) в конце каждой итерации.

Каждое из этих условий может быть пустым.

Пример1:

for ($a = 1; $a <= 5; $a++) {  echo $a; }

Пример 2:

for ($a = 1;;$a++) {  if ($a > 5) {  break;  }  echo $a; }

Пример 3:

$a = 1; for (;;) {  if ($a > 5) {  break;  }  print $a;  $a++; }

Пример 4:

for ($a = 1; $a <= 5; print $a, $a++);

PHP поддерживает альтернативный синтаксис FOR:

FOR(усл1; уcл2; усл3;):операторы;...;ENDFOR;

break

Прерывает выполнение текущего цикла.

Пример:

$a = 0; while ($a < 5) {  if ($arr[$a] == "stop") {  break;  }  $a++; }

continue

Переходит на начало ближайшего цикла.

<?php while (list($key,$value) = each($arr)) {  if ($key % 2) {  continue;  }  do_something_odd ($value); } ?>

switch

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

<?php switch ($a) {  case 0:  echo "A равно 0";  break;  case 1:  echo "A равно 1";  break;  case 2:  echo "A равно 2";  break;  default:  echo "A не равно 0, 1, 2"; } ?>
  • default - соответствует всем значениям, которые не удовлетворяют другим CASE. CASE - могут быть любого скалярного типа, т.е. целые числа или числа с плавающей запятой и строки.

require

Заменяет себя содержимым указанного файла.

Пример:

require("include.inc");

Но его нельзя поместить внутрь цикла и ожидать, что он включит содержимое другого файла несколько раз в процессе каждой итерации. Для этого есть INCLUDE.

include

Вставляет и выполняет содержимое указанного файла.

<?php $files = array ("first.inc", "second.inc", "third.inc"); for ($a = 0; $a < count($files); $a++) {  include($files[$a]); } ?>

Так как INCLUDE() это специальный оператор, требуется заключать его в фигурные скобки при использовании внутри условного оператора.

<?php if ($a < 5) {  include("file_1.inc"); } else {  include("file_2.inc"); } ?>

function

Объявление функции.

Внутри функции может быть любой верный код PHP, даже объявление другой функции или класса. Функции должны быть объявлены перед тем, как на них ссылаться.

<?php function foo ($arg_1, $arg_2, ..., $arg_n) {  echo "Пример функции.";  return $retvalue; } ?>

Возвращение результатов:

  • Результаты возвращаются через необязательный оператор return.
  • Возвращаемый результат может быть любого типа, включая списки и объекты.
<?php function my_sqrt ($num) {  return $num * $num; } echo my_sqrt(4); //выведет 16 ?>

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

function foo() {  return array (0, 1, 2); } list ($zero, $one, $two) = foo();

Аргументы:

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

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

function takes_array($input) {  echo "$input[0] + $input[1] = ", $input[0]+$input[1]; }

Передача по ссылке:

По умолчанию, аргументы функции передаются по значению. Для изменения аргументов в функции их надо передавать по ссылке. Для этого надо поставить амперсанд (&) перед именем аргумента в объявлении функции:

function foo( &$bar) {  $bar .= "и добавочная строка."; } $str = "Это строка, "; foo($str); echo $str; // выведет : "Это строка, и добавочная строка."
function foo($bar) {  $bar .= "и добавочная строка."; } $str = "Это строка, "; foo($str); echo $str; //выведет : "Это строка, " foo(&$str); echo $str; //выведет : "Это строка, и добавочная строка."

Значения по умолчанию:

Значение по умолчанию должно быть константой, а не переменной или членом класса.

function day ($type = "понедельник") {  echo "Сегодня $type."; } echo day(); //выведет : Сегодня понедельник. echo day("вторник"); //выведет : Сегодня вторник.

Аргументы по умолчанию при описании должны находиться справо от остальных аргументов.

function day($day_num, $type = "понедельник") {  return "Сегодня $day_num - $type."; }

old_function

Оператор OLD_FUNCTION позволяет вам определять функцию используя синтаксис PHP/FI2 (за исключением того, что вы должны заменить "function" на "old_function").

Еще по теме:   Как разблокировать доступ к сайту в антивирусе NOD32?

Это свойство только для совместимости и должно использоваться лишь конверторами PHP/FI2 -> PHP3. Описанные таким образом функции не могут быть вызваны из служебного кода PHP. Вы можете обойти это путем введения специальной функции в терминах PHP3, которая будет вызывать OLD_FUNCTION.

class

Набор переменных и функций, работающих с этими переменными.

<?php class Cart {  var $items; // Количество вещей в корзине покупателя  // Добавить $num наименований типа $artnr в корзину  function add_item ($artnr, $num) {  $this->items[$artnr] += $num;  }  // Убрать $num наименований $artnr из корзины  function remove_item ($artnr, $num) {  if ($this->items[$artnr] > $num) {  $this->items[$artnr] -= $num;  return true;  } else {  return false;  }  } } ?>

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

$cart = new Cart; $cart->add_item("10", 1);

Классы могут быть расширениями других классов. Расширенный класс обладает всеми переменными и функциями базового класса и тем, что вы определите при расширении класса. Это делается используя ключевое слово extends :

class Named_Cart extends Cart {  var $owner;  function set_owner ($name) {  $this->owner = $name;  } }

Это определяет класс Named_Cart, который имеет все переменные и функции класса Cart плюс дополнительную переменную $owner и дополнительную функцию set_owner(). Вы можете создать поименованую корзину обычным образом и установить или получить владельца корзины. Также вы можете использовать и нормальные функции корзины в поименованой корзине :

$ncart = new Named_Cart; //Создать корзину $ncart->set_owner ("kris");//Указать владельцаprint  $ncart->owner; //Распечатать имя владельца корзины $ncart->add_item ("10", 1);//унаследовано из обычной корзины

www.spravkaweb.ru

Вы когда-нибудь задумывались о том, как расширить ядро PHP? Что нужно для того, чтобы создать новое ключевое слово или даже разработать новый синтаксис? Если у вас есть базовые знания языка C, то проблем с созданием небольших изменений возникнуть не должно. Да, я понимаю, что это может быть немного бессмысленно, но неважно — забавно ведь.

Давайте создадим альтернативный способ определения класса. Самый простой способ определения, разрешённый в PHP, выглядит следующим образом:

<?php class ClassName {} 

Мы можем упростить синтаксис и заменить фигурные скобки на точку с запятой.

<?php class ClassName; 

Если вы попытаетесь выполнить этот код, то он, очевидно, выдаст ошибку. Не проблема, мы можем это исправить.

На первом шаге необходимо установить программное обеспечение.

$ sudo apt-get install bison re2c 

PHP написан на C, однако парсер разработан с помощью Bison. Bison — это генератор синтаксических анализаторов. Официальный сайт определяет его, как генератор парсеров общего назначения, который преобразует помеченную контекстно-свободную грамматику в детерминированный LR или обобщенный LR (GLR) анализатор, применяя таблицы LALR-парсера (Look-Ahead LR parser — прим. пер.).

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

Теперь перейдите на http://php.net и скачайте самые свежие исходники PHP.

$ tar xvjf php-5.4.14.tar.bz2 $ cd php-5.4.14 $ ./configure $ cd Zend $ ls 

Снимите шляпу, потому что перед вами ядро PHP. Код в этих файлах управляет подавляющим большинством веб-серверов. Давайте исследуем его.

По умолчанию для файлов генератора Bison используется расширение «y».

$ ls *.y zend_ini_parser.y zend_language_parser.y 

Мы не хотим возиться с синтаксисом «ini», поэтому остается только «zend_language_parser.y». Откройте его вашим любимым редактором.

Теперь, если поискать слово «class», то можно обнаружить следующее:

%token T_CLASS "class (T_CLASS)" 

Парсер любит работать с токенами. Токен класса — это "T_CLASS". Если вы поищете в тексте "T_CLASS", то найдете нечто подобное:

class_entry_type:  T_CLASS { $$.u.op.opline_num = CG(zend_lineno); $$.EA = 0; }  | T_ABSTRACT T_CLASS { $$.u.op.opline_num = CG(zend_lineno); $$.EA = ZEND_ACC_EXPLICIT_ABSTRACT_CLASS; }  | T_TRAIT { $$.u.op.opline_num = CG(zend_lineno); $$.EA = ZEND_ACC_TRAIT; }  | T_FINAL T_CLASS { $$.u.op.opline_num = CG(zend_lineno); $$.EA = ZEND_ACC_FINAL_CLASS; }  ; 

Перед вами четыре разных способа определения класса.

  1. класс (class)
  2. абстрактный класс (abstract class)
  3. трейт (trait)
  4. финальный (листовой, конечный) класс (final class)

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

Мы на верном пути, но это не совсем то, что мы ищем. Поищите фразу «class_entry_type», которая объединяет те четыре определения класса. Она приведёт вас к пункту назначения. Разобраться в этом легко, но в первый раз читать сложновато.

unticked_class_declaration_statement:    class_entry_type T_STRING extends_from  { zend_do_begin_class_declaration(&$1, &$2, &$3 TSRMLS_CC); }  implements_list  '{'  class_statement_list  '}' { zend_do_end_class_declaration(&$1, &$3 TSRMLS_CC); }    | interface_entry T_STRING  { zend_do_begin_class_declaration(&$1, &$2, NULL TSRMLS_CC); }  interface_extends_list  '{'  class_statement_list  '}' { zend_do_end_class_declaration(&$1, NULL TSRMLS_CC); }  ; 

Здесь есть два объявления. Одно для класса, другое для интерфейса. Нас интересует первое. Оно начинается с "class_entry_type", которое разрешает конструкции: class | abstract class | trait | final class. Следующий элемент — это токен T_STRING. В будущем на его месте будет имя класса. "extends_from" — это группа. Этот элемент может быть преобразован в «extends T_STRING» или оставаться пустым.

После этого парсер вызывает движок Zend, чтобы начать объявление класса.

{ zend_do_begin_class_declaration(&$1, &$2, &$3 TSRMLS_CC); } 

Вы можете найти эту функцию в файле zend_compiler.c.

void zend_do_begin_class_declaration(const znode *class_token, znode *class_name, const znode *parent_class_name TSRMLS_DC) 

Первый аргумент здесь — это токен класса "class_entry_type", второй — имя класса "T_STRING", а последний — родительский класс "extends_from".

Ниже идёт группа «implements_list». Уверен, что вы знаете, зачем она нужна. Верно, для определения интерфейсов. Следующие строки образуют обязательное тело класса: открывающая фигурная скобка "{", группа "class_statement_list" и закрывающая фигурная скобка "}". Наконец, парсер сообщает движку Zend, что объявление класса окончено.

{ zend_do_end_class_declaration(&$1, &$3 TSRMLS_CC); } 

Нам необходимо продублировать этот код, но уже без тела класса.

unticked_class_declaration_statement:    class_entry_type T_STRING extends_from  { zend_do_begin_class_declaration(&$1, &$2, &$3 TSRMLS_CC); }  ';' { zend_do_end_class_declaration(&$1, &$3 TSRMLS_CC); }    | class_entry_type T_STRING extends_from    { zend_do_begin_class_declaration(&$1, &$2, &$3 TSRMLS_CC); }  implements_list  '{'  class_statement_list  '}' { zend_do_end_class_declaration(&$1, &$3 TSRMLS_CC); }    | interface_entry T_STRING  { zend_do_begin_class_declaration(&$1, &$2, NULL TSRMLS_CC); }  interface_extends_list  '{'  class_statement_list  '}' { zend_do_end_class_declaration(&$1, NULL TSRMLS_CC); }  ; 

Это было довольно просто, не так ли? Теперь вам остаётся лишь скомпилировать изменения.

$ cd .. $ make 

Первая компиляция всегда занимает некоторое время.

$ vim test.php 

Введите код для тестирования.

<?php class FooBar;  $a = new FooBar; $a->bar = 10;  print_r($a); 

А теперь протестируйте его.

$ sapi/cli/php test.php  FooBar Object ( [bar] => 10 ) 

Отлично, у вас получилось!

Давайте сделаем еще кое-что. В PHP вы объявляете класс с помощью ключевого слова "class". Как насчет того, чтобы сделать его покороче? Думаю, "cls", подойдёт.

Ищем файлы лексера:

$ cd Zend/ $ ls *.l zend_ini_scanner.l zend_language_scanner.l 

Файл Bison оперировал токенами. Лексер позволяет вам решать как преобразовывать код в токены. Откройте zend_language_scanner.l и поищите слово "class".

<ST_IN_SCRIPTING>"class" { return T_CLASS; } 

Продублируйте этот блок и измените class на cls.

<ST_IN_SCRIPTING>"cls" { return T_CLASS; }  <ST_IN_SCRIPTING>"class" { return T_CLASS; } 

Дело сделано. Скомпилируйте код и можете использовать ключевое слово "cls" вместо "class".

Не правда ли забавно? Надеюсь, вам было приятно также, как и мне. Интересуйтесь, исследуйте. И если вам это действительно понравилось, то стоит подумать о том, чтобы исправить некоторые ошибки на https://bugs.php.net/.

habr.com

Здравствуйте уважаемые начинающие программисты.

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

А в следующем уроке уже начнём писать скрипты и смотреть что из этого получится.

Пример 1. Простой скрипт вывода на экран монитора.

Первое что бросается в глаза — это:

<?php……….?> — открывающий и закрывающий теги, или маркеры PHP. Они всегда присутствуют в начале и конце кода.

PHP поддерживает несколько вариантов открывающих и закрывающих тегов.

<?php……..?> — полный (классический) вариант начального и конечного тегов, рекомендуется к постоянному использованию.

<?……..?> — сокращённый вариант, работает при включённой директиве short_open_tag (включена по умолчанию). Это встроенная в php директива, которая определяет разрешена ли короткая запись тегов php.

Однако лучше применять классический вариант, особенно при совместной работе с XML-кодом, во избежание неоднозначности в интерпретации.

<script language=»php»>……..</script> — расширенный вариант, доступен в любой момент без дополнительных настроек (встречается редко)

<?=……..?> — специальный вид для вывода простого выражения, является по сути сокращённым вариантом от , удобен при написании скрипта состоящего из одного выражения, работает при включённой директиве short_open_tag.

Любой php код всегда начинается и заканчивается этими тегами. Всё что находится внутри них, называется скрипт, или сценарий, или программа.

error_reporting(-1) — инструкция, включает показ всех предупреждений об ошибках, в написанном Вами, скрипте. Во время обучения желательно использовать постоянно.

echo — инструкция выводящая на экран монитора то, что в ней написано. Это может быть текст, числа, разметку html, то есть всего, что есть на веб странице.

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

Знаки

+ — сложение
— — вычитание
* — умножение
/ — деление
% — остаток при делении
— перед строкой — отрицание

называются арифметическими операторами php. Есть ещё много различных операторов. Это и строковые, и логические, и операторы присвоения, и ещё несколько видов операторов, но о всех них немного погодя.

Каждое выражение заканчивается точкой с запятой.

Пример 2. Переменные и константы.

$var и $vAr — переменные

Переменные — это хранилища информации. Вся информация, которую Вы заложите в программу, храниться в переменных. Начинаются они всегда знаком доллара, а название даёт программист, то есть Вы.

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

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

= — оператор присвоения

define (" I" ,1000,true); — константа

" I" — название константы
1000 — значение константы
true — учитывается регистр букв, если вместо него поставить false, то регистр учитываться не будет.

Константа, в php, всегда определяется функцией define(), и в ней хранятся данные, которые ни в коем случае не меняются во время работы программы. Название константы всегда пишется заглавными буквами.

Пример 3. Комментарии.

Считается хорошим тоном снабжать скрипты подробными комментариями.

Еще по теме:   Проверка сайта на вирусы онлайн в Яндекс

После знаков // и # браузер игнорирует всё, что находится до конца строки.

Пример 4. Функция.

function — функция, обрабатывает определённое количество действий, направленных на получение конкретного результата.

arr_max — название функции
($arr) — аргументы (входящие данные) функции

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

Пример 5. Управляющие конструкции.

Конструкции применяются для управления пошаговым исполнением кода.

$flag1, $flag2, $flag3 — переменные
if и else — условные операторы, то есть проверяющие условие — ложь или истина.
&& — логический оператор, читается как соединительный союз «и».
|| — логический оператор, читается как разделительный союз «или»
echo — инструкция вывод на экран

Вот теперь мы будем знать хотя бы несколько основных названий, и назначений элементов скрипта. Вообще-то в php их ещё предостаточно, и в дальнейшем, как в теории так и на практике, мы их подробно рассмотрим.

Php синтаксис
Перемена

-Абрам, ты знаешь к нам приезжает Эйнштейн.
-А что это за фраер?
-Это тот самый фраер, что изобрел теорию относительности.
-Ради бога. Я не знаю теорию относительности.
-Как ты не знаешь теорию относительности? Я объясню.
Вырываем у тебя три волосины — это много?
-Нет.
-Бросаем тебе в суп — это много?
-Да.
-Понял?
-Нет.
-Объясняю для понял. Суешь мне нос в жопу. У тебя нос В жопе, у меня нос в жопе. Выражение одно — ощущения разные! Понял?
-И что… он хочет с этой хохмой ехать к нам в Одессу?

С чего начать изучение php абсолютному «чайнику» < < < В раздел > > > Вывод данных на экран и комментарии в php

starper55plys.ru

Функции PHP с параметрами и без параметров

В предыдущем примере про время свободного падения мы рассматривали функцию с параметрами. В нашем случае это были переменные $h и $g. В PHP можно применять также функции без параметров. В этом случае после названия функции в скобках ничего не пишется. Примером такой функции будет функция, выводящая какое-то уже готовое решение, например, ссылку или текст.

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

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

Итак, давайте подробно рассмотрим вышеприведенный пример. Сначала мы как обычно создаем функцию с четырьмя параметрами $link, $target, $title и $anchor. Затем в тело функции прописываем вывод ссылки в зависимости от этих параметров. После этого мы просто создаем четыре новых переменных $mylink, $mytarget, $mytitle и $myanchor и присваиваем им значения. На практике эти переменные могут получать свои значения, например, при помощи методов POST или GET, о которых речь пойдет в следующих статьях рубрики «Уроки PHP и MySQL».

После получения значений переменными, мы вызываем функцию mylink и передаем ей параметры. В нашем случае это те переменные, которые мы создали перед этим. Теперь, как вы уже догадываетесь, значение переменной $mylink будет передано переменной $link, $mytarget — $target и т.д. В результате этого функция mylink примет те параметры, которые нам необходимы и выведет соответствующий результат на экран в виде ссылки.

Надеюсь, вы поняли всю суть функций PHP. Если нет, то рекомендую еще раз прочитать статью и проработать примеры. Материал не сложный, но очень важный поэтому, если вы всерьез решили изучить PHP, рекомендую тщательно проработать весь материал.

На этом данная статья подошла к концу. Если вы не хотите пропустить последних новостей сайта, рекомендую подписаться на новостную рассылку любым удобным для вас способом в пункте «Подписка» либо воспользоваться формой ниже.

На этом все. Удачи вам и успехов в изучении основ PHP.

dmitriydenisov.com

Прежде чем мы поговорим о синтаксисе PHP, давайте сначала определим, что имеется ввиду под словом синтаксис.
Синтаксис — правила, которые необходимо соблюдать, чтобы писать правильно структурированный код.
Синтаксис PHP и его семантика похожи на большинство других языков программирования (C, Java, Perl). С той лишь разницей, что код PHP встраивается в html разметку страницы. Весь код PHP должны содержаться в следующих тегах:

  <?php  ?>  Или просто:  <?  ?>  

Если вы не хотите проблем, то пишете по стандартной форме (т.е. ?php), а не в сокращенном виде. Это гарантирует, что ваши скрипты будут работать на серварах с разными настройками.

Как сохранять ваши PHP страницы

Если у вас есть PHP код, который включен в HTML и вы хотите, чтобы браузер интерпретировал все правильно, то вы должны сохранить файл с расширением .php, вместо стандартного .html. Так что не забудьте проверить, что вы сохраняете файлы правильно. Например, вместо index.html должно быть index.php.

Пример простой html страницы с PHP кодом

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

  <html>  <head>  <title>My First PHP Page</title>  </head>  <body>  <?php  echo "Hello World!"  ?>  </body>  </html>  

Вот что мы получим в результате:

  Hello World!  

Если вы сохраните этот файл (например, helloworld.php) и закинете его на сервер с поддержкой PHP, а затем загрузите ее в браузере, то вы должны увидеть надпись «Hello World!». Если этого не произошло, пожалуйста, проверьте, что Вы все сделали правильно и четко следовали примеру. Или задавайте вопросы в комментариях.

Мы использовали команду echo, чтобы написать «Hello World!». Конечно, мы вернемся к этой команде чуть позже, в следующих уроках.

Точка с запятой!

Как вы можете заметить, в приведенном выше примере не было точки с запятой после строки кода PHP. Точка с запятой означает конец операции в PHP и никогда не стоит о ней забывать. Например, если бы мы повторили нашу команду вывода надписи «Hello World!» несколько раз, то мы должны поставить точку с запятой в конце каждой строки.

  <html>  <head>  <title>My First PHP Page</title>  </head>  <body>  <?php  echo "Hello World! ";  echo "Hello World! ";  echo "Hello World! ";  echo "Hello World! ";  echo "Hello World! ";  ?>  </body>  </html>  

Результат:

  Hello World! Hello World! Hello World! Hello World! Hello World!  

Пробелы

Как и в HTML, пробелы между PHP выражениями игнорируются. То есть если в коде 20 пустых строк, например, для форматирования, то ничего страшного, они не будут видны в результате. Так же как и табуляция (Tab).

  <html>  <head>  <title>My First PHP Page</title>  </head>  <body>  <?php  echo "Hello World!";         	echo "Hello World!";      ?>  </body>  </html>  

Результат:

  Hello World!Hello World!  

Ну вот и все на этот раз. Вы научились встраивать php код в html страницу, сохранять их с соответствующим расширением .php. Рассмотрели несколько примеров построения страницы, а том числе и с использованием команды echo, к которой мы обязательно вернемся чуточку позже. Ну все, практикуйтесь и переходите к следующему уроку!

Содержание | Переменные →

myblaze.ru

PHP и HTML-текст

Начав писать PHP-код, вы будете работать с самыми обычными текстовыми файлами, содержащими код PHP и HTML. HTML – это простой язык разметки, позволяющий определить, как должна выглядеть страница в окне браузера, но это всего лишь текст. Сервер никак не обрабатывает HTML-файлы перед их отправкой браузеру пользователя. В отличие от HTML, PHP-код должен быть как-то интерпретирован, прежде чем окончательный вариант страницы будет отправлен браузеру. Иначе такая страница на экране у пользователя превратится в смесь текста и программного кода.

Чтобы выделить PHP-код и тем самым проинформировать веб-сервер о необходимости его обработки, PHP-код размещают между формальными или неформальными тегами (<?php ... ?>), смешивая с HTML. В примере ниже демонстрируется это с помощью конструкций echo и print. Конструкции echo и print почти совпадают, за исключением того, что конструкция echo может принимать несколько аргументов и не возвращает никакого значения, тогда как конструкция print способна принимать только один аргумент.

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

Конструкции echo и print

<!DOCTYPE HTML>  <html>  <head>  <meta charset="utf-8">  <title>Основы PHP</title>  </head>    <body>  <?php   echo 'Hello world!<br>';   echo ("Это мой первый документ!<br>");   print 'Goodbye';  ?>  </body>  </html>

Когда браузер запросит этот файл, PHP интерпретирует его и воспроизведет текст в формате HTML:

Php синтаксис
Так выглядит результат вывода текста в окне браузера и исходная HTML-разметка

Включение файлов

Еще один способ, с помощью которого можно вводить код PHP в код HTML, состоит в том, что код PHP можно помещать в отдельный файл и вызывать его с использованием функций include и require языка PHP. Предусмотрено всего четыре функции типа include и require:

  • include('/filepath/filename');

  • require('/filepath/filename');

  • include_once('/filepath/filename');

  • require_once('/filepath/filename').

В предыдущих версиях PHP наблюдались значительные различия в функциональных возможностях и быстродействии между функциями типа include и require. Это больше не имеет места; оба набора функций отличаются только тем, что в случае неудачного завершения вырабатывают разные ошибки. Функции include() и include_once() при возникновении сбоя просто вырабатывают предупреждение об отказе, а функции require() и require_once() вырабатывают неисправимую ошибку и вызывают завершение сценария.

Инструкция include позволяет подключать и присоединять к вашему PHP-сценарию другие сценарии. Действие этой инструкции можно представить как вставку кода из подключаемого файла в ваш PHP-сценарий. В примере ниже приведен программный код подключаемого файла с именем add.php:

Файл add.php

<?php   echo 'Hello world!<br>';   echo ("Это мой первый документ!<br>");   print 'Goodbye';  ?>

Ниже показан пример, в котором этот файл добавляется в файл index.php с помощью инструкции include. В примере предполагается, что файл add.php находится в том же каталоге, что и index.php.

Использование инструкции include

<!DOCTYPE HTML>  <html>  <head>  <meta charset="utf-8">  <title>Основы PHP</title>  </head>    <body>  <?php   include 'add.php';  ?>  </body>  </html>

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

При подключении PHP-сценариев с многоступенчатой вложенностью могут возникнуть проблемы из-за того, что инструкция include не проверяет, были ли ранее подключены данные сценарии. Например, изменим файл add.php, добавив в него функцию (с переменными и функциями мы познакомимся чуть позже, а пока просто вставьте этот код в файл add.php):

add.php - исходный код

<?php   function sum($a, $b)  	{  		return $a + $b;  	}  ?>

А теперь попытаемся выполнить такой сценарий в исходном файле index.php:

Еще по теме:   Что такое скриншот

Исходный код

<!DOCTYPE HTML>  <html>  <head>  <meta charset="utf-8">  <title>Основы PHP</title>  </head>    <body>  <?php   include 'add.php';  	 include 'add.php';  	   	 echo sum(4,10);  ?>  </body>  </html>

Будет получено сообщение об ошибке, так как фактически мы дважды определили функцию с одним и тем же именем:

Php синтаксис
Ошибка объявления уже зарегистрированной функции из-за двойного включения одного и того же фала

Чтобы избежать ошибок подобного рода, следует использовать инструкцию include_once, как показано в примере ниже:

Исходный код

<!DOCTYPE HTML>  <html>  <head>  <meta charset="utf-8">  <title>Основы PHP</title>  </head>    <body>  <?php   include_once 'add.php';  	 include_once 'add.php';  	   	 echo sum(4,10);  ?>  </body>  </html>

Очевидно, что вы и не собираетесь помещать инструкции include для подключения одного и того же файла непосредственно друг за другом. Но показанная ситуация с двойным подключением является упрощенным вариантом распространенной ошибки, когда вы попытаетесь подключить файл, который присоединяется через другой подключаемый файл. Поэтому всегда следует использовать include_once, так как у этой инструкции нет недостатка инструкции include.

Чтобы гарантировать подключение файла или остановить работу программы, если выполнить подключение невозможно, используйте функцию require или парную ей require_once. Они делают то же самое, что инструкции include и include_once, но гарантируют подключение указанного файла либо прекращение исполнения сценария, что иногда может быть очень удобно!

Функцию require можно использовать вместо include, например, если подключается файл с определениями критически важных функций, которые должны выполняться в вашем сценарии, или переменных, описывающих параметры подключения к базе данных, без которых сценарий не сможет функционировать. Например, попытаемся с помощью функции require подключить несуществующий файл:

Исходный код

<!DOCTYPE HTML>  <html>  <head>  <meta charset="utf-8">  <title>Основы PHP</title>  </head>    <body>  <?php  	 require_once 'undefined.php';  ?>  </body>  </html>

Будет получено следующее сообщение об ошибке:

Php синтаксис
Подключаемый файл undefined.php не найден

Наиболее широко распространенный способ использования возможностей функций включения языка PHP состоит в добавлении общих верхнего и нижнего колонтитулов ко всем веб-страницам сайта. При этом необязательно подключать файлы с расширением *.php, можно включать статичные файлы HTML:

index.php

<?php  	 require_once 'header.html';  ?>    <p>Здесь находится контент страницы</p>    <?php  	 require_once 'footer.html';  ?>

header.html

<!DOCTYPE HTML>  <html>  <head>  <meta charset="utf-8">  <title>Основы PHP</title>  </head>    <body>   <nav style="padding:10px; background:#4cbbfb; color:white">   Здесь может находиться навигация сайта   </nav>

footer.html

 <footer style="padding:10px; background:green; color:white">   А здесь футер   </footer>  </body>  </html>
Php синтаксис
Динамически генерируемое содержимое за счет использования подключаемых файлов

Очевидно, что даже такой простой шаг существенно улучшает удобство сопровождения и масштабируемость всего сайта. После этого для перехода к использованию другого оформления или для обновления информации об авторских правах достаточно откорректировать содержимое одного файла, а не исправлять одни и те же строки на десятках или тысячах HTML-страниц.

Любые файлы с кодом PHP, предназначенные для включения из других файлов, должны обязательно проверяться на предмет того, чтобы в конце файла не было пустых новых строк. Следует помнить, что все, находящееся за пределами блока PHP, рассматривается как код HTML, даже любая пустая строка. Пустые строки или даже пробельные символы, стоящие вслед за закрывающим дескриптором PHP, интерпретируются как выходные данные. Если включение файла выполняется в том месте страницы, где не могут присутствовать выходные данные (скажем, в месте, предшествующем использованию заголовков HTTP), то выполнение сценария окончится неудачей и будет сформировано пространное сообщение об ошибке, говорящее о том, что выходной поток уже был начат во включаемом файле.

Поэтому если в подключаемых файлах используется только код PHP, разрешается и даже рекомендовано не использовать закрывающий тег. Пример с использованием фала add.php можно и нужно переписать следующим образом:

Файл add.php без закрывающего тега ?>

<?php   function sum($a, $b)  	{  		return $a + $b;  	}

Комментарии

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

Разработчики языка PHP взяли за основу нескольких других языков программирования, в основном рассматривая в качестве прототипов синтаксические конструкции языков C и Perl, а также сценарии командного интерпретатора Unix. В результате оказалось, что язык PHP поддерживает стили комментариев из всех этих языков, а сами эти стили могут свободно сочетаться в коде PHP.

Многострочные комментарии в стиле языка C

В языке PHP многострочные комментарии имеют такую же синтаксическую конструкцию, как и в языке C - комментарий начинается с пары символов /* и заканчивается парой символов */, например, как показано ниже:

Исходный код

<!DOCTYPE HTML>  <html>  <head>  <meta charset="utf-8">  <title>Основы PHP</title>  </head>    <body>  <?php   /* Это - комментарий в сценарии на языке PHP */  ?>  </body>  </html>

Наиболее важной характерной особенностью многострочных комментариев, о которой следует помнить, является то, что их нельзя вкладывать; это означает, что один многострочный комментарий нельзя вложить в другой. При попытке применения вложенного комментария внешний комментарий закроется после обнаружения первой пары символов */, относящейся к внутреннему комментарию, а остальная часть текста внешнего комментария, которая должна была рассматриваться как конец комментария, вместо этого будет интерпретироваться как код, что может привести к серьезному нарушению в работе. Следует учитывать, что такую ошибку можно легко допустить непреднамеренно; обычно она возникает при попытке вывести из обработки фрагмент содержащего комментарий кода, закомментировав (т.е. обозначив как комментарий) этот блок.

Создание однострочных комментариев с помощью символов # и //

Кроме многострочных комментариев в формате /* ... */, язык PHP поддерживает два других способа ввода комментариев, размещаемых в конце какой-то конкретной строки. Один из этих способов унаследован от языков С++ или Java, а другой — из языка Perl и сценариев командного интерпретатора. Комментарий в стиле сценариев командного интерпретатора начинается со знака диеза (#), а комментарий в стиле языка С++ начинается с двух символов косой черты (//). Ввод в текст тех или других символов приводит к тому, что остальная часть текущей строки рассматривается как комментарий. Ниже приведены примеры комментариев в указанном стиле:

Исходный код

<!DOCTYPE HTML>  <html>  <head>  <meta charset="utf-8">  <title>Основы PHP</title>  </head>    <body>  <?php  	 #	Это - комментарий, а ниже  	 #	приведена вторая часть комментария.  	   	 //	Это - также комментарий. Комментарий, оформленный в этом стиле и   	 //	в стиле командного интерпретатора, распространяется только на одну   	 //	строку, поэтому последнее слово данного комментария поступит на   	 //	обработку к интерпретатору и вызовет серьезное нарушение в   	 работе  ?>  </body>  </html>

Лексические особенности языка PHP

Невосприимчивость языка PHP к пробельным символам

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

Например, все приведенные ниже операторы PHP, в которых значение суммы 2 + 2 присваивается переменной $four, являются эквивалентными:

Исходный код

<?php  	 $four = 2 + 2; // Одинарные пробелы  	 $four 		=	2	+	2; // Пробелы и знаки табуляции   	 $four =  2   +    2; // Размещение на нескольких строках  ?>

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

Разные требования к регистру символов в языке PHP в разных контекстах

Язык PHP не предъявляет слишком жесткие требования к синтаксису, но PHP иногда требует соблюдения правильного регистра символов (т.е. учитывает различия между строчными и прописными буквами). В частности, все имена переменных чувствительны к регистру. Например, если в HTML-страницу будет включен код:

Исходный код

<!DOCTYPE HTML>  <html>  <head>  <meta charset="utf-8">  <title>Основы PHP</title>  </head>    <body>  <?php  	 $capital = 198;  	 print "Вывод в нормальном регистре: $capital руб.";  	 print "Вывод в измененном регистре: $CapitaL руб.";  ?>  </body>  </html>

то вывод будет выглядеть таким образом:

Php синтаксис
Переменная CapitaL не найдена

Из-за того, что в разных именах применялись символы разного регистра, переменные стали разными. С другой стороны, имена функций в языке PHP не чувствительны к регистру, и таковыми являются также основные языковые конструкции (if, then, else, while и т.д.).

Установка сервера для разработки
Переменные и константы

addphp.ru

Примеры объявления переменных в PHP:

 //Объявление переменных $var_string = "This is my text"; $var_int = 10;  //Вывод их значений в браузер echo $var_string; echo "<br>"; echo $var_int; 

Сохраните и перезагрузите страницу, и Вы увидите, что отобразится в Вашем браузере!

Константы - это по сути те же переменные, только такие, значения которых задаются только 1 раз и дальше их нельзя изменять (Например, когда нам нужно задать значение PI). Чтобы избежать случайного изменения переменной, которую нельзя изменять - используют константы.
В PHP константы создаются с помощью функции define(). Вот пример создания и работы с константами в PHP:

 //Объявляем константу define("PI", 3.14);  //Складываем константу с цифрой 10 и выводим результат echo 10 + PI;  //Запись ниже - ошибочна, нельзя пере присвоить второй раз значение константы PI = 25; 

Обратите внимание, что в отличие от переменных, с константами не используется знак $.

Еще одно правило хорошего тона: Названия констант всегда пишутся БОЛЬШИМИ_БУКВАМИ!

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

В предыдущем примере Вы должны были заметить такие конструкции: //.
Две такие косые черты свидетельствуют о начале комментария в тексте программы. В комментариях можно писать любой текст, они используются для разъяснения участков кода программы. В PHP есть 3 типа комментариев, и все они работают по-разному:

  1. // - Такой комментарий распространяется только на ОДНУ строку в коде программы, при переносе строки, новая часть перестанет интерпретироваться как комментарий, потребуется заново поставить в начале строки //.
     //Эта строка является комментарием, теперь нажмем Enter и эта строка уже НЕ комментарий, и приведет к ошибке в программе, если оставить ее таким образом  
  2. /* ... */ - Такая конструкция позволяет писать внутри себя абсолютно любой текст, не зависимо от количества занимаемых им строк. Выглядит это так:
  3.  /* Первая строка комментария Вторая Третья, поставим знак завершения - */ 
  4. # - Если поставить этот символ в начале строки, то работать он будет аналогично с //
     #Комментарий Не комментарий 

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

codrob.ru

Поделиться:
Нет комментариев

Добавить комментарий

Ваш e-mail не будет опубликован. Все поля обязательны для заполнения.

×
Рекомендуем посмотреть
Adblock
detector