Php 7.3. что нового

Содержание:

Плюсы, минусы и особенности PHP

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

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

Плюсы

  1. PHP бесплатный, а его код лежит в открытом доступе.
  2. Для PHP создано множество библиотек, баз данных и фреймворков.
  3. PHP совместим почти со всеми современными серверами.
  4. PHP гибкий и даёт много свободы.
  5. PHP хорош для новичков, ему легко научиться.
  6. Простая и элегантная система классов и объектов.
  7. Простой синтаксис. Вот пример кода, выводящего надпись «Hello, World», в PHP:

Как видите, синтаксис очень простой, но обычно PHP вставлен в HTML, и тогда то же самое выглядит вот так:

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

Как работает HTTP, и зачем нам это знать

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

Протокол HTTP очень прост и состоит, по сути, из двух частей:

  • Заголовков запроса/ответа;
  • Тела запроса/ответа.

Сначала идёт список заголовков, затем пустая строка, а затем (если есть) тело запроса/ответа.

И клиент, и сервер могут посылать друг другу заголовки и тело ответа, но в случае с клиентом доступные заголовки будут одни, а с сервером — другие. Рассмотрим пошагово, как будет выглядеть работа по протоколу HTTP в случае, когда пользователь хочет загрузить главную страницу социальной сети «Вконтакте».

1. Браузер пользователя устанавливает соединение с сервером vk.com и отправляет следующий запрос:

GET / HTTP/1.1
Host: vk.com

2. Сервер принимает запрос и отправляет ответ:

3. Браузер принимает ответ и показывает готовую страницу

Больше всего нам интересен самый первый шаг, где браузер инициирует запрос к серверу vk.com
Рассмотрим подробнее, что там происходит. Первая строка запроса определяет несколько важных параметров, а именно:

  • Метод, которым будет запрошен контент;
  • Адрес страницы;
  • Версию протокола.

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

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

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

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

Больше всего здесь интересен именно код состояния, он же код ответа сервера.
В этом примере код ответа — 200, что означает: сервер работает, документ найден и будет передан клиенту. Но не всегда всё идет гладко.
Например, запрошенный документ может отсутствовать или сервер будет перегружен, в таком случае клиент не получит контент, а код ответа будет отличным от 200.

  • 404 — если сервер доступен, но запрошённый документ не найден;
  • 503 — если сервер не может обрабатывать запросы по техническим причинам.

Спецификация HTTP 1.1 определяет 40 различных кодов HTTP.

После стартовой строки следуют заголовки, а затем тело ответа.

Что такое PHP скрипт

PHP-скрипт — это обычный текстовый файлик с расширением .php. Точно такой же, как html и css.

Но есть одно важное отличие:

Скрипты запускаются только через http-запросы в браузере. Это значит, что для запуска скрипта script.php необходимо в адресной строке браузера написать site.ru/script.php

Если скрипт не работает — проверь текущий URL. Если там будет что-то вроде file:///D:/openserver/domains/site.ru/script.php — это значит, что ты пытаешься не перейти на страницу сайта, а открыть сам PHP файлик в браузере. Это неправильно.

Веб-серверы чаще всего настроены так, что при заходе на главную страницу (например site.ru) автоматически запускается файл index.php или index.html, лежащий в корне сайта.

Создай в корневой папке сайта файл с названием index.php и открой его в своём текстовом редакторе. При наличии файла index.html его нужно удалить.

Если у тебя пока нет текстового редактора — рекомендую лёгкий и бесплатный Notepad++, он гораздо удобней встроенного в Windows блокнота.

Обязательно следи за кодировкой скриптов. Кодировка должна быть либо UTF-8 без BOM (если такая доступна в твоём редакторе), либо просто UTF-8.

Выбор кодировки в Notepad++

Логическое ИЛИ (OR и ||)

Оператор логическое ИЛИ обозначается как или . Он выполняет операцию «логическое ИЛИ» над двумя операндами. Если один или оба операнда имеют истинное значение, он возвращает . Если оба операнда имеют ложные значения, он возвращает . У вас вероятно возник вопрос, зачем же сделали два варианта одного оператора? Смысл двух разных вариантов оператора «логическое ИЛИ» в том, что они работают с различными приоритетами.

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

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

Чтобы стало понятнее, как они работают, приведем следующий пример:

<?php

  // Оператор "||" имеет больший приоритет, чем "or"

  // Результат выражения (false || true) будет присвоен переменной $var1
  // Действие приоритета: $var1 = (false || true)
  $var1 = false || true;

  echo $var1; // => 1

  // Сначала переменной присваивается значение false, а затем вычисляется второй операнд
  // Действие приоритета: ($var2 = false) or true
  $var2 = false or true;  

  echo $var2;  // false не выводится

  // ($var3 = 0) or 3
  $var3 = 0 or 3; 

  echo "<br>$var3";   // => 0

?>

Любые операторы сравнения и логические можно комбинировать в более сложные конструкции:

<?php

  $a = (6 == 6) || (4 <= 9);

  // или так
  echo ('c' != 'd') or ('A' === 'A');

?>

Стоит упомянуть еще об одном важном моменте, касательно обоих операторов и. Оператор «логическое ИЛИ» начинает свои вычисления со своего левого операнда, если он возвращает , то правый операнд вычисляться не будет

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

Классы

Класс — это шаблон, по которому создаются объекты.

Напомню, что классы — это описания объектов. Мы не можем создать объект «на лету», как это происходит с массивами. Объект может быть создан только на основе своего описания — класса. Этим, кстати, реализация объектов в PHP отличается от JavaScript. В JS объектам не нужны никакие классы, и они могут быть созданы и модифицированы когда угодно и как угодно.

Класс как чертёж

Зачем же нужны классы, и почему объекты не могут существовать без них?

Здесь аналогия очень простая: класс – это чертёж, максимально подробное описание того, как должно выглядеть изделие. Сам по себе класс не является чем-то физическим и осязаемым, то есть мы не можем использовать его в коде непосредственно. Вместо этого класс является схемой, структурой, на основе которой будет создан объект.

Жизненный цикл объекта

Любая работа с объектами в PHP состоит из следующих этапов.
Начинается всё с создания класса. В классе мы фиксируем из каких свойств и методов будет состоять каждый его экземпляр. Также в классе можно задать начальные значения для каждого свойства.
Имея класс, возможно создать его экземпляр — объект.

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

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

Описание класса:

Создание объекта на основе класса:

Разбор примера

Разберёмся с тем, что здесь происходит.
Начнём с целей создания данного класса. Его задача — хранить в объекте данные о погоде за конкретный день, а также предоставлять сводку за этот день в текстовом виде.

В классе определено четыре скрытых свойства. Это значит, что к ним не будет доступа за пределами объекта. Читать и записывать эти свойства могут только внутренние методы объекта. Сами свойства хранят температурные параметры (температуру, осадки), дату и дополнительный комментарий к записи. Некоторым свойствам задано значение по умолчанию.

Далее идёт перечисление методов. И начинается всё с метода, у которого особое имя и значение — .

Что такое конструктор объекта

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

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

Обращение к свойствам и методам объекта

Посмотрим, как внутри метода происходит обращение к его свойствам.
Во-первых, для этого используется специальная переменная this, которая всегда присутствует внутри объекта и ссылается на него самого.

Во-вторых, для обращения к методам и свойствам объекта нужен специальный синтаксис: «стрелочка». Такая стрелочка отделяет имя свойства или метода от имени объекта. Это аналог квадратных скобок при работе с массивами.

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

Создание объекта на основе класса

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

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

Что такое базы данных (БД) и зачем они нужны

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

Пример использования

Базы данных нужны для хранения информации. Чтобы получить полное понимание необходимости использования БД в современном веб-программировании, необходимо ответить на три вопроса:

  1. Какую информацию и зачем мы храним?
  2. В каком виде и как надо хранить эту информацию?
  3. Как и каким способом можно получить доступ к этой информации?

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

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

Зачем разделять и подключать php-сценарии

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

Кладезь мудрости от PHP-разработчиков

  • Много теории без практики не приводит ни к чему хорошему, как и наоборот. Старайся соблюдать баланс.
  • Выбор языка — это выбор правильного инструмента, стоит отталкиваться от решаемых им задач, всех плюсов и минусов.
  • Бери PHP, поработай с ним пару лет, а потом уже появится понимание, что тебе необходимо от языка программирования, и будут критерии для сравнения.
  • Выбирай популярный язык за который хорошо платят.

Попробуйте свои силы в PHP прямо сейчас на интерактивном курсе «Основы PHP». Курс поможет понять, подходит ли вам этот язык. Ещё можно оформить подписку — сразу после этого станут доступны все наши интерактивные курсы, они есть не только по PHP.

Структура РНР 7

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

Есть и другая часть — код, созданный на РНР, который условно можно поделить на следующие типы:

компоненты — библиотеки на РНР, которые собираются при помощи менедже­ра пакетов Composer;
фреймворки — готовые сборки, зачастую из компонентов, при помощи которых можно создавать сайты любой степени сложности. В книге, к сожалению, мы их не касаемся, однако если вы выберите РНР 7 в качестве основного языка разра­ботки, то не пройдете мимо них

На следующие РНР-фреймворки стоит обра­тить внимание: , ,. Всего их сотни, если не тысячи;
готовые приложения — готовые к использованию разработки на РНР

Это сис­темы управления контентом (, ), форумы (), Web- интерфейсы управления базами данных (, ).

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

Как стать PHP-программистом? Что нужно знать для начала работы?

В данный момент сайты редко пишут «с нуля». Чаще проекты разрабатывают на базе готовых систем управления (CMS) или фреймворков (наборов программ, из которых можно собрать сайт).

Если вы хотите стать PHP-программистом, вначале вам потребуется:

  • Освоить язык разметки HTML и каскадные таблицы стилей CSS. Данные технологии применяются для создания внешнего вида страниц сайтов (макетов). В небольших студиях, куда берут новичков, PHP-программисты часто занимаются версткой макетов либо что-то в них правят. Поэтому вам потребуется знать HTML и CSS.
  • Освоить язык JavaScript. Он позволяет создавать различные сценарии на страницах, формы, интерактивные элементы. Без знания JavaScript вы не сможете заниматься разработкой сайтов.
  • Освоить язык PHP и стандарты написания кода PSR (PHP Standarts Recomendations).
  • Освоить работу с базами данных MySQL.
  • Основательно разобраться в работе одной или нескольких популярных систем управления сайтами (CMS). Примеры таких систем: 1С Битрикс, WordPress, OpenCart и другие. Каждая система имеет свои особенности, которые необходимо знать.

Обучиться азам можно самостоятельно по курсам, выложенным на YouTube. Посмотрите список образовательных каналов по программированию, на которых имеются уроки по HTML, CSS, PHP, MySQL.

Где можно научиться программированию на языке PHP?

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

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

В университете «Нетология» есть платные и бесплатные программы для желающих стать PHP-разработчиками:

  • Основы HTML и CSS – бесплатный курс для новичков, которые ранее никак не сталкивались с веб-разработкой. Советую записаться на него, чтобы получить общее представление о работе в сфере веб-разработки.
  • HTML-верстка: с нуля до первого макета – поможет разобраться с версткой веб-страниц. Это платный курс, который можно проходить после изучения основ. Вы не научитесь на нем языку PHP, но сможете освоить верстку, что пригодится вам в дальнейшем обучении.
  • Профессия веб-разработчик – курс длится 8 месяцев. Студенты изучают 6 технологий, в том числе программирование на PHP и JavaScript. Он дает серьезную подготовку. По окончании вы получаете диплом и можете пройти стажировку в крупной компании.

Как оставаться востребованным специалистом?

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

Для дальнейшего развития нужно осваивать востребованные в веб-разработке навыки и технологии:

  • Ajax.
  • jQuery.
  • Популярные фреймворки, на которых создают сайты.
  • Основы администрирования, чтобы уметь настраивать сервера, корректировать команды в файле .htaccess.

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

Чтобы быть востребованным PHP-программистом, также необходимо:

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

Как видите, работа PHP-программиста не так проста, как казалось. Объем знаний, который требуется разработчику, велик. На освоение востребованных технологий может уйти длительное время.

Нужно ли обычным пользователям знать PHP чтобы пользоваться WordPress?

Нет! Совсем нет. Прекрасной особенностью WordPress является то, что весь необходимый PHP код уже написан для вас в виде основного программного обеспечения WordPress, тем WordPress, его плагинов.В то время, как опытные пользователи WordPress могут использовать PHP для более сложной настройки. Обычным пользователям нет никакой необходимости беспокоиться о изучении этого языка, если конечно они сами этого не хотят.

Но что бы там ни говорили, в изучении основ PHP определенно есть преимущества.

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

Подробнее: Как начать вести свой блог с нуля

Операторы «кораблей»

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

Крошечный космический корабль

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

X-истребители

Если вы хотите добавить огневую мощь к предыдущему флоту, вы можете вызвать истребителей типа X к источнику PHP: . Следующий код вычитает 3 у (в оригинальной статье написано, что оператор прибавит 3 (), но это не так, см. вывод примера ниже — прим. пер.)

Линейный корабль

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

Разве не лучший способ написать так?

Звезда Смерти

Многие из вас бы спросили, а был ли встроен в PHP оператор «звезда смерти», и ответ таков: в данный момент неизвестно. Есть планы на это, но никто никогда не видел реального экземпляра. Мне бы очень хотелось видеть оператор в три строки, так как PHP будет первым, кто будем иметь подобное (и, когда это произойдёт, надеюсь, не с моего счёта спишут стоимость этого оператора).

Настройка xdebug

  1. Вводим команду редактирования файла:
    sudo nano /etc/php/7.1/mods-available/xdebug.ini
  2. Добавляем в файл конфигурацию для xdebug.
    xdebug.remote_enable=1
    xdebug.remote_handler=dbgp
    xdebug.remote_mode=req
    xdebug.remote_host=localhost
    xdebug.remote_port=9000
    xdebug.var_display_max_depth = -1
    xdebug.var_display_max_children = -1
    xdebug.var_display_max_data = -1
    xdebug.idekey = "PHPSTORM":
    

    Сохраняем изменения ctrl + o и закрываем редактор nano ctrl + x.

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

    sudo nano /etc/php/7.1/fpm/php.ini
  4. Найдём, раскомментируем (уберём знак «;» или исправим значение) и установим значения для строк:

    display_errors = On
    display_startup_errors = On
    error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
    

    Сохраняем изменения ctrl + o, закрываем редактор ctrl + x.

  5. Запускаем . Выполняем команды:
    sudo service php7.1-fpm stop
    sudo service php7.1-fpm start
    
  6. Размещаем файлы проекта в директорию проекта. Директорию проекта вы указали в секции root, конфигурационного файла yeticave.local. Выставляем права:

    sudo chmod -R 755 /home/administrator/www/yeticave.local

    Открываем браузер и пробуем обратиться к .

Мифы о PHP

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

1. PHP — решето

«Программы на PHP небезопасны» — распространённый повод для критики PHP.

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

Кстати, на курсе «Профессиональный PHP, уровень 1» мы сразу объясняем студентам только «лучшие практики» разработки на PHP, в том числе подробно затрагиваем и вопросы безопасности.

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

2. PHP медленный

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

Facebook, Wikipedia и «ВКонтакте» строят на PHP приложения разного масштаба, а скорость их работы может легко оценить любой наш читатель. При этом повышение производительности всегда стоит среди приоритетных задач разработчиков. Например, при переходе с версии 5.6 на 7 производительность PHP выросла от 15 до 20%. В последних, минорных версиях языка, работа над повышением скорости исполнения кода продолжается.

3. Технология X скоро вытеснит PHP

Миф о серебряной пуле особенно любят муссировать в IT-сообществе: технология X скоро вытеснит Y, и тому подобное. Инструментов, с помощью которых можно выполнять те же самые задачи, что и на PHP, много: JavaScript, Ruby, Python, C#, да и мало ли что ещё.

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

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

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

4. На PHP пишут плохой код

Плохой код можно написать на любом языке программирования, и PHP здесь не исключение. Странно скрывать, что на нём действительно написано много плохого кода.

Начать программировать на PHP очень просто. Начинающий программист может легко решить многие задачи, но код будет с нюансами и вообще так себе. Помните — качество кода в первую очередь зависит от разработчика, его опыта и навыков. Чем он опытней, тем более качественный код напишет.

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

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

Установка на Linux

Настроить рабочее окружение для разработки на PHP в Linux возможно несколькими способами. Рассмотрим один из наиболее быстрых способов: настройка связки PHP плюс nginx.

Запустите приложение «Терминал». Ярлык на запуск доступен в менеджере приложений.

Рисунок 1. Окно терминала

Обновим локальный индекс пакетов APT
sudo apt-get update

Для работы с PHP нам потребуется веб-сервер. В репозиториях доступно несколько популярных веб-серверов, мы отдадим предпочтение nginx. Помимо высокой производительности его легче конфигурировать.
sudo apt-get install nginx

Следующим шагом выполним запуска nginx. Запомните эту команду. Она вам пригодится при добавлении новых виртуальных хостов.

sudo service nginx start

nginx установлен и теперь нам требуется выполнить базовое конфигурирование. Наша цель — создать новый виртуальный хост, который будет доступен по адресу , где вместо может быть название вашего проекта. Например: ,

Обратите внимание, имена доменов не могут содержать пробелы. Определитесь с именем домена (далее «имя хоста для проекта»)

Мы будем ориентироваться на проект , поэтому именно так будем называть конфигурационный файл.

Перейдите в директорию . В этой директории, nginx хранит конфигурационные файлы всех виртуальных хостов.

cd /etc/nginx/sites-available

Чтобы увидеть список всех доступных виртуальных хостов, выведите содержимое каталога:

ls -all

Рисунок 2. Список доступных виртуальных хостов

Название конфигурационного файла должно совпадать с именем хоста. Поскольку мы планируем сделать конфигурационный файл для хоста , нам потребуется создать файл . Сделаем это:

sudo touch yeticave.local

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

sudo nano yeticave.local

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

# Наш проект будет доступен на 80 порту
listen 80;

# Имя виртуального хоста
server_name yeticave.local;

# Корневая директория проекта. В этой папке будут находиться файлы проекта.
# Обратите внимание. Файлы находятся в домашней директории пользователя
# Administrator. Ваше имя наверняка отличается, поэтому обратите на это внимание
# при написании пути.
root /home/administrator/www/yeticave.local;

# Имя индексного файла.
index index.php;

# Настройки отдачи файлов

location ~* \.(jpg|jpeg|gif|css|png|js|ico|html)$ {
access_log off;
expires max;
log_not_found off;
}

location / {
try_files $uri $uri/ /index.php?$query_string;
}

location ~* \.php$ {
try_files $uri = 404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;

# Обратите внимание на номер версии PHP. На текущей момент в репозиториях
# Ubuntu доступна версия 7.1. Если вы пользуетесь более старой версии ОС,
# то не забудьте обновить номер версии на свой.

fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

location ~ /\.ht {
deny all;
}
}

Рисунок 3. Подготовка конфига

Для сохранения изменений в файле нажмите комбинацию клавиш ctrl + o. Затем закройте редактор nano сочетанием клавиш ctrl + x.

Протестируем созданный конфигурационный файл на наличие ошибок:

sudo nginx -t

Рисунок 4. Тестирование конфигурационного файла nginx

На этом процесс создания конфигурационного файла завершён. Активируем только что созданный виртуальный хост. Для этого перейдём в директорию и создадим в ней символическую ссылку на наш конфигурационный файл.
cd /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/yeticave.local

Если на текущем шаге попытаться открыть браузер и ввести в адресной строке , то ничего, кроме ошибки «Сервер не найден», мы не увидим. Исправим проблему добавлением новой записи в : sudo nano /etc/hosts

В самом начале файле добавьте строку:

127.0.0.1 yeticave.local

Обратите внимание, мы пишем только доменное имя без указания протокола (http). Сохраняем изменения ctrl + o и закрываем редактор nano сочетанием клавиш ctrl + x .

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *