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

Что такое php

Как гласит определение на сайте php.net,  PHP (рекурсивный акроним словосочетания PHP: Hypertext Preprocessor) — это распространенный язык программирования общего назначения с открытым исходным кодом. PHP изначально сконструирован для веб-разработок. С его помощью так же удобно взаимодействовать с базами данных, работать с изображениями, текстовыми документами, электронными таблицами и т.д.

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

Принцип работы веб-сервера

Вообще понятие «Веб-сервер» можно отнести как к аппаратному обеспечению или «железу», так и к программному обеспечению.

  • С точи зрения «железа», веб-сервер это компьютер, часто очень мощный, многопроцессорный, с большим объёмом оперативной памяти и твердотельными быстрыми жёсткими дисками (SSD) на котором установлено ПО и хранятся все файлы сайта (php и javascript скрипты, статичные html файлы, картинки, видео, аудио файлы, документы, файлы баз данных).
  • С точки зрения программного обеспечения, веб-сервер это набор взаимодействующих между собой программ, которые контролируют доступ пользователей к файлам сайта, обеспечивают работу баз данных, следят за актуальностью кеша, распределяют нагрузку и т.д.

В общем виде работу веб-сервера можно описать следующей схемой:

Схема клиент-серверной архитектуры

  1. Клиент (ваш браузер) отправляет запрос (вбиваете название сайта, например yandex.ru)
  2. Сервер обрабатывает запрос и формирует ответ в виде веб-страницы, которую отображает ваш браузер (чаще для этого необходимо обращение в БД)

Вот так просто, вопрос-ответ. Иногда для ответа требуется последовательно выполнить ряд операций, например:

  • Существует ли страница на которую хочет попасть пользователь
  • А есть ли у него на это права
  • Если есть то что ему можно показать (иногда это часть страницы)
  • Извлечение информации из БД
  • Генерация страницы на основе шаблонов (например Smarty)
  • Отдача готовой страницы для отображения в браузере клиента

Но в общем виде это просто вопрос (или точнее запрос от браузера) и ответ.

Установка локального веб-сервера

Для обучения нам не нужно брать в аренду веб-сервер, достаточно установить локальный пакет, такой как WAMP или Denwer, однако я последнее время работал с пакетом OpenServer и для пользователей Windows нахожу его наиболее удобным. OpenServer — бесплатный пакет, однако если вы закинете туда 100 рублей, то скачаете его на много быстрее.

Я не буду детально расписывать установку OpenServer, он устанавливается как обычная программа для Windows. Единственное хочу сказать, что если у вас есть возможность установить его на отдельный SSD диск на котором будут хранится все ваши проекты, то сделайте именно так. Это повысит быстродействие веб-сервера и работу IDE (о которых мы поговорим дальше) и сделает вашу работу гораздо приятнее.

После установки у вас появится 2 ярлыка для запуска OpenServer, для 32-x и 64-х разрядной операционной системы. Чтобы узнать какой разрядности ваша система, перейдите в раздел (в Windows 10) «Панель управления -> Все элементы панели управления -> Система», там в блоке «Система» вы найдёте свойство «Тип системы»:

Система Windows 10


У меня это 64-х разрядкая операционная система, следовательно я запускаю OpenServer с ярлыка x64.

Так же, следует сразу настроить запуск OpenServer от имени администратора, т.к. он будет изменять файл windows/etc/system32/hosts когда вы будете создавать локальные доменные имена. А для правки hosts нужны права админа. Чтобы сделать это перейдите в свойства ярлыка программы:

Настройка запуска OpenServer

На вкладке «Ярлык», кнопка «Дополнительно», открывает дополнительные свойства ярлыка.

Запуск OpenServer от имени администратора

В окне дополнительных свойств отметьте флажок «Запуск от имени администратора» и сохраните параметры ярлыка. Теперь OpenServer будет корректно запускаться и перегружаться.

Выбор редактора кода (или IDE)

И так, затрону холиварную тему, «в каком редакторе писать код».  За 10 лет работы я перепробовал много разных программ, но на данный момент использую несколько прострых редакторов для работы с FTP и одну IDE для работы над локальными проектами под OpenServer. Давайте рассмотрим их по порядку:

Notepad ++

Notepad ++
Лёгкий, простой редактор немного фунциональнее блокнота Windows, понимает большинство форматов файлов (от HTML до XML) которые могут потребоваться вам в работе над сайтом. В основном использую как вспомогательный редактор, когда нужно временно сохранить какой-то кусок кода или для быстрой правки локального файла, когда лень запускать IDE. Редактор бесплатный имеет ряд расширений. Скачать можно на официальном сайтe.

SublimeText 2

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

Основной редактор кода, который я использую при работе с одиночными файлами, быстрыми правками и в работе над сайтом по FTP. Рекомендую.

PhpStorm IDE

PhpStorm
Да, это платный редактор. Но за 9 баксов в месяц вы получаете отличный инструмент. Если вы планируете заниматься разработкой профессионально, то PhpStorm на мой взгляд — это лучший выбор IDE. За время карьеры мне довелось поработать с другими программами, такими как NetBeans, IDE Eclipse и VisualStudio Code. Все они бесплатные, полностью или частично и имеют ряд своих проблем.

Наиболее удобным из бесплатных редакторов был IDE Eclipse с рядом расширений для работы с php, FTP, Git + расширение которое анализирует весь проект, позволяет связать классы используемые в клиентском коде и легко «передвигаться» по коду при его анализе. Так вот, настроить всё это корректно не всегда получается. Расширения написаны разными людьми и иногда взаимодействуют некорректно, к тому же быстродействие IDE хромает. А вот в phpStorm это всё уже встроено и работает отлично! Скачать пробную версию на месяц, можно на официальном сайте.

Знакомство с синтаксисом

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

Щёлкните левой кнопкой мышки по значку OpenServer в трее, в контекстном меню выберете пункт «Настройки» и перейдите на вкладку «Домены». Укажите имя домена, например mysite.local и укажите путь к папке проекта на сервер. Обычно это папка где установлен OpenServer, у меня это F:\OSPanle\domains\тут_имя_папки_проекта.

Настройка доменов в OpenServer

Сохраните настройки и перезапустите OpenServer. После запуска сервера, в контекстном меню OpenServer-а (в трее) в пункте «Мои сайты» появиться только что созданный домен. Теперь можно создать в папке с доменом (F:\OSPanle\domains\mysite.local) файл index.php и познакомиться с синтаксисом этого языка.

Переменные

Базовый элемент любого языка программирования. В языке php, правильное имя переменной должно начинаться с буквы или символа подчеркивания и состоять из букв, цифр и символов подчеркивания в любом количестве. Есть ряд зарезервированных имён переменных, например $this — это специальная переменная которой нельзя ничего присваивать.

В общем правила именования переменных в php можно описать так:

  • Имена переменных после знака доллара должны начинаться с буквы или с символа _ (подчеркивания).
  • Имена переменных могут содержать только символы: a–z, A–Z, 0–9 и _ (подчеркивание).
  • Имена переменных не должны включать в себя пробелы. Если имя переменной
    нужно составить более чем из одного слова, то в качестве разделителя рациональнее всего будет использовать символ подчеркивания (например $user_name).
  • Имена переменных чувствительны к регистру символов. Переменная $name отличается от переменной $Name.

Специальные справки есть в документации по php, раздел «Руководство по именованию». А сейчас давайте рассмотрим пару примеров:

Типы данных

PHP является языком с динамической типизацией и в отличии например от C/C++ вам не нужно заранее инициализировать переменную и следить за тем чтобы ей присваивалось значение того типа, которое вы указали при инициализации. Это даёт определённую свободу действия, но так же не редко приводит к ошибкам, т.к. в одну и ту же переменную по ходу выполнения программы могут попадать значения разных тивом, меняя при этом тип переменной.

В языке PHP поддерживается 8 типов данных:

  • boolean (логический тип)
  • integer (целочисленный)
  • double (числа с плавающей точной)
  • string (строковый тип)
  • array (массивы)
  • object (объекты)
  • resource (ресурсы)
  • NULL

$boolean = true; //Логический тип, true/false
$int = 123; // Целочисленный
$double = 123.57; //Дробный тип
$string = 'Иван Иванов'; //Строковый тип

//Массив
$array = [1, 2, 3, 4, 5];
$array1 = ['Иван', 'Пётр', 'Олег'];

//Объект
$object = new MyClass(); // Объект/экземпляр класса MyClass

//Ресурс
$dbh = new PDO('mysql:dbname=testdb;host=127.0.0.1', 'user_name', '123456'); //$dbh здесь это ресурс

//NULL
$n = NULL; //Тип NULL

Мы подробнее разберём их на примерах в других статьях.
Если вы хотите узнать какого типа та или иная переменная, воспользуйтесь встроенной в язык функцией gettype(), передав ей саму переменную. Функция вернёт строку с названием типа данных этой переменной.

Выражения

Вся программа состоит из выражений. По сути это базовый строительный элемент вашей программы. Практически всё что вы пишите в php коде. является выражением. Самое простое выражения может выглядеть так:


$age = 18; //Простое выражение присваивание значения

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

Условия, ветвления

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


$sum = 150; //Общая сумма покупки (она может быть получена из формы корзины)
$discount = 0;

//Назначим пользователю скидку в зависимости от суммы покупки
if($sum == 200){
	//Даём скидку 5%
	$discount = 5;
} else {
	//Не даём скидку
}

//Можно использовать несколько вариантов скидок от суммы при помощи elseif

if($sum == 1000){ 
	//Даём скидку 15% 
	$discount = 15; 
} elseif($sum == 500) { 
	//Даём скидку 10% 
	$discount = 10;  
} elseif($sum == 200) {
	//Даём скидку 5% 
	$discount = 5;
} else { 
	//Не даём скидку
} 

//Для такого множественного условия лучше использовать конструкцию switch case
switch ($sum) {
    case 1000:
        //Даём скидку 15% 
		$discount = 15;
        break;
    case 500:
		//Даём скидку 10% 
		$discount = 10;
        break;
    case 200:
		//Даём скидку 5% 
		$discount = 5;
        break;

Функции

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


//Покажем сообщение о скидке
function showDiscount(int $discount, string $userName)
{
	if($discount > 0) {
		echo $userName . ' поздравляем! Ваша скидка: ' . $discount . '%';
	}
}

//Вызов функции
showDiscount(10, 'Александр'); //Результат: Александр поздравляем! Ваша скидка: 10%

В данном примере мы определили функцию showDiscount() которая принимает 2 параметра $discount — величина скидки и $userName — имя пользователя. Затем внутри (в теле) функции осуществляем проверку скидки, если она есть выводим сообщение пользователю.

Циклы

Циклы — крайне полезная языковая конструкция позволяющая обрабатывать или выводить на экран определённую коллекцию данных, например строки таблицы, список пользователей, группу товаров и т.д. Проще говоря цикл позволяет нам выполнить какой-нибудь блок кода несколько раз. Php поддерживает несколько видов циклов:

  1. Цикл с предусловием while;
  2. Цикл с постусловием do-while;
  3. Цикл со счетчиком for;
  4. Цикл для перебора массивов foreach

Я детальнее остановлюсь на циклах в отдельной статье, а сейчас приведу лишь небольшой пример:


//Массив пользователей
$users = ['Иван Иванов', 'Пётр Петров', 'Николай Николаев'];

//Выведем нумерованный список пользователей циклом foreach
echo '<ol>'

foreach($users as $key => $user) {
	/*	Тело цикла, оно будет выполнятся пока цикл не достигнет конца массива, 
		т.е. после вывода «Николай Николаев» цикл завершится и программа продолжит выполнение	*/
	echo '<li>'. $user .'</li>'; 
}

echo '</ol>'

В результате выведется нумерованный список пользователей из массива $users

  1. Иван Иванов
  2. Пётр Петров
  3. Николай Николаев

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

P.S. не верьте хейтерам которые говорят что php «умирает», они делают это последние 20 лет, однако 80%  всех сайтов в интернете работают на php, это хороший язык программирования со своими плюсами и минусами, его довольно легко освоить и начать работать в сфере web-разработки.
Функции и конструкции языка использованные в статьеforeach() , switch case
Полезная статья?
(Голосов: 3, Рейтинг: 3.25)
Вам также могут понравиться
Английский для программистов

Английский для программистов

Почему IT-специалисту необходимо освоить английский язык? Разбираем в статье.

Как подключить CSS и JS файлы к шаблону 1С Битрикс

Как подключить CSS и JS файлы к шаблону 1С Битрикс

Как правильно подключать стили и скрипты к шаблону 1С Битрикс.

Генерация оглавления статьи

Генерация оглавления статьи

В статье рассмотрен пример функции для генерации оглавления статьи блога или новости


Комментарии
Защита от автоматических сообщений
CAPTCHA
Введите слово на картинке