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

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

Преимущество серверных скриптов:

  • Отсутствие проблем, связанных с совместимостью с браузерами (в браузер загружается стандартный HTML-код).
  • Доступ к серверным ресурсам. Например отображение текущего времени (дата), получается от сервера. JavaScript отображает дату, которая установлена на компьютере пользователя.
  • Снижение нагрузки на клиентскую часть. JavaScript может существенно замедлить отображение веб-страницы (особенно на мобильных устройствах), поскольку, перед тем как вывести ее содержимое, браузеру необходимо выполнить скрипт. Серверный код переносит всю нагрузку на веб-сервер.

Для разработки и тестирования веб-приложений (web-app) на локальном компьютере необходимо установить NetBeans IDE, PHP и MySQL.

PHP-скрипт состоит из наборов команд, или выражений. Каждое из них представляет собой инструкцию, которая должна быть выполнена, прежде чем веб-сервер перейдет к следующей команде.
<?php - начало встроенного PHP-скрипта, а ?> — его окончание.
Любое выражение в PHP всегда заканчивается точкой с запятой ;.
Запуск функции в PHP называется вызовом. В результате проделанной работы большинство функций возвращают значение.
echo date('l, F jS Y.');

Sunday, January 15th 2017

В PHP кавычки используются для обозначения начала и окончания строк. Скобки выполняют две задачи. Во-первых, сообщают о том, что date — это функция, которая вызвается. Во-вторых, обозначают начало и конец списка аргументов, которые предоставляются функции.
Имена всех переменных в PHP начинаются со значка $.
PHP не является строго типизированным языком. Это значит, что конкретная переменная на протяжении своего жизненного цикла может содержать данные любого типа.
Константа — это переменная, значение которой остается неизменным. Ее имя не должно начинаться со знака $.
По принятому соглашению, имена констант всегда пишутся в верхнем регистре (ENT_QUOTES).
Знак равенства = называется оператором присваивания.
Знак == называется оператором равенства.
Правильное имя переменной и константы начинается с буквы или символа подчеркивания и состоит из букв, цифр и подчеркиваний. Арифметические оператораторы +, -, *, /.
Комментарии начинаются с символов // и заканчиваются вместе с текущей строкой. Если комментарий занимает несколько строк, его следует выделить символами /* и */.
Конструкция, которая соединяет части текста, называется оператором конкатенации строк.

$helloWorld = 'Привет ' . 'всем!'; // присваивает значение 'Привет всем!'

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

"$var world";	Hello world  
'$var world';	$var world   

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

$myArray = array('один', 2, '3');

Как и в случае с переменными, значение каждого элемента массива может быть любого типа.
Доступ к значению, хранящемуся в массиве, доступно по индексу, индексация значений внутри массива начинается с нуля. Каждое значение, хранящееся в массиве, называется элементом массива. Элементы в конец массива можно добавлять с помощью обычного оператора присваивания. Как правило, в качестве индексов массива чаще используются числа, но их можно заменить и строками. В этом случае массив будет называться ассоциативным, поскольку он ассоциирует (сопоставляет) значения с индексами, имеющими определенный смысл. Ассоциативные массивы также создаются с помощью команды array.

$phone = array('Alex' => '1-111-111', 'Stefany' => '2-222-222', 'Yakov' => '3-333-333');
echo 'Phone Alex ' . $phone['Alex'];	Phone Alex 1-111-111 

Переменные можно передвать через ссылки, например, найти в Google строку ihome:
http://www.google.com/search?hl=en&q=ihome

Сcылка на файл с именем name.php при нажатии которой выполнится запрос страницы и отправка переменной как части строки запроса входящей в URL, после знака ?, которая помещается в ассоциативный массив параметров, переданных скрипту через URL ($_GET):

<a href="name.php?name=Ihor">Hi, I&rsquo;m Ihor!</a>

в файле name.php переменной $name присваивается значение переменной 'name' из массива $_GET, которое потом выводится как часть текстовой строки:

<?php
$name = $_GET['name'];
echo 'Welcome to our website, ' . $name . '!';

$name получает значение из строки запроса по ссылке на странице и может содержать HTML код или JavaScript, что может отрицательно сказаться на безопасности сайта. Для устранения данной проблемы можно воспользоваться функцией, которая преобразует специальные символы в HTML-сущности:

htmlspecialchars($name, ENT_QUOTES, 'UTF-8')

$name - текст, который нужно преобразовать
ENT_QUOTES - константа которая указывает, что нужно преобразовывать как двойные, так и одинарные кавычки
'UTF-8' - кодировка для интерпретации заданного текста.

Разделяя каждую пару имя=значение амперсандом, можно передавать несколько переменных.

<a href="name.php?name=Ihor&amp;phone=111-111-111">Hi, I&rsquo;m Ihor! Phone number </a>

  <?php
  $name = $_GET['name'];
  $phone = $_GET['phone'];
  echo ' Phone number: ' .
      htmlspecialchars($name, ENT_QUOTES, 'UTF-8') . ' ' .
      htmlspecialchars($phone, ENT_QUOTES, 'UTF-8') . '!';
  ?>

Результатом выполнения перехода по ссылке будет строка:

Phone number: Ihor 111-111-111!

Для передачи переменных вместо ссылки можно использовать форму:

<!DOCTYPE html>
<html lang="en">
 	 <head>
 	   <meta charset="utf-8">
    <title>Query String Link Example</title>
  </head>
 	 <body>
    <form action="name.php" method="get">
<div><label for="name">Name:&nbsp;
<input type="text" name="name" id="name"></label>
</div>
<div><label for="phone">Phone:
<input type="text" name="phone" id="phone"></label>
</div>
<div><input type="submit" value="Go"></div>
</form>
 	 </body>
</html>

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

Form for input name

После нажатия на кнопку отправки (Go), браузер загрузит скрипт name.php, автоматически добавив переменные и их значения в строку запроса.
Имена переменных будут получены из атрибутов name, принадлежащих тегам
<input type= " text " >,
а значения — из текста, набранного пользователем в полях ввода.
С помощью атрибута method, принадлежащего тегу form, браузер получает информацию о методе передачи данных (get, post). Доступ к переменной можно получить вне зависимости от того каким метдом ее отправили при с помощью массива $_REQUEST. Он содержит все значения, которые передаются в массивы $_GET и $_POST.

Циклы и итерации (Loops and Iterators)

Цикл - управляющая конструкция, предназначенная для многократного выполнения набора инструкций.
Тело цикла - набор инструкций, предназначенный для многократного выполнения.
Итерация - одно выполнение тела цикла.
while:

while(_условие_){  
_тело цикла_;}   

do-while:

do {_тело цикла_;  
} while (условие)  

for:

for(выражение-1; выражение-2; выражение-3){  
_тело цикла_;  
}  

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

foreach:

foreach($arrey as $value){  
_тело цикла_;  
}  

или

foreach($arrey as $key => value){  
_тело цикла_;  
}  

break - прерывает выполнение текущей структуры;
continie - используется внутри циклических структур для пропуска оставшейся части итерации.

Использование шаблонов

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

index.php

	<?php
	/* скрипт добавляет значения в переменную с именем $output, 
	которой в самом начале кода присваивается пустая строка. */

	$output = '';	
	for ($count = 1; $count <= 10; ++$count)
	{
		$output .= "$count ";
	}
	/* команда include сообщает PHP, что в данном месте нужно 
	выполнить содержимое файла count.html.php */  

include 'count.html.php';

count.html.php

	<!DOCTYPE html>
	<html lang="en">
	  <head>
	    <meta charset="utf-8">
	    <title>Counting to Ten</title>
	  </head>
	 <body>
 	     <p>Counting to Ten</p>
	    <p>
 	     <?php echo $output; ?>
	    </p>
	  </body>
	</html>

Команда include в одном скрипте может применятся несколько раз, выводя разные шаблоны. PHP-скрипт, который отвечает на запросы браузера, выбирает для заполнения нужный шаблон и отправляет результат обратно, называют контроллером.

form.html

<!DOCTYPE html>
<html lang="en">
 	 <head>
 	   <meta charset="utf-8">
 	   <title>Form Example</title>
 	 </head>
 	 <body>
 	   <form action="" method="post">
 	     <div><label for="firstname">First name:
 	       <input type="text" name="firstname" id="firstname"></label>
 	     </div>
 	     <div><label for="lastname">Last name:
 	       <input type="text" name="lastname" id="lastname"></label>
  	    </div>
  	    <div><input type="submit" value="GO"></div>
 	   </form>
 	 </body>
</html>

index.php

	<?php
	/* проверяем является ли текущий запрос отправкой формы 
	из файла form.html.php (наличие в запросе переменной firstname,
	eсли она присутствует, то PHP должен был поместить ее значение в 
	$_REQUEST['firstname']. */
	if (!isset($_REQUEST['firstname'])) 
	{
		include 'form.html.php';
	}
	else
	{
		$firstName = $_REQUEST['firstname'];
		$lastName = $_REQUEST['lastname'];
	
		$output = 'Welcome to our website, ' .
		htmlspecialchars($firstName, ENT_QUOTES, 'UTF-8') . ' ' .
		htmlspecialchars($lastName, ENT_QUOTES, 'UTF-8') . '!';
	
		include 'welcome.html.php';
	}

welcome.html.php

	<!DOCTYPE html>
	<html lang="en">
	  <head>
	    <meta charset="utf-8">
	    <title>Form Example</title>
	  </head>
	  <body>
	    <p>
 	     <?php echo $output; ?>
 	   </p>
	  </body>
	</html>