Не пропусти свежие посты, подпишись:

В сети есть много обучающих материалов по 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 курсоры

CSS курсоры

В статье рассмотрены возможности изменения курсоров пользователя при помощи CSS

Работа с регистром строк в php

Работа с регистром строк в php

В статье рассмотрены примеры работы с регистром строк в языке PHP, проверка регистра, изменение, инверсия


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