Сферы применения PHP
Язык очень популярен, потому что очень быстро обрабатывает коды, прост в использовании и функционален, распространяет исходные коды с собственной лицензией, обладает кроссплатформенностью. Чтобы разрабатывать и раскручивать сайты на его основе, PHP предлагает встроенные инструменты, имеющие:
- способность автоматически извлекать переменные окружения сервера, параметры GET и POST в предопределенные массивы;
- умение взаимодействовать со многими системами управления базами данных, в том числе SQLite, MySQL, DBX, Microsoft SQL Server, dBase, DB+++ и пр.;
- автоматический режим отправки HTTP-заголовков, благодаря чему поисковая оптимизация сайта становится легче;
- способность обработки файлов, которые загружаются на сервер;
- возможность работать как с удаленными, так и с локальными файлами, сессиями, сокетами, HTTP-авторизацией, cookies, XForms.
Возможности языка PHP также требуются для продвижения сайтов, когда нужно создать пользовательский интерфейс или скрипты, собирающие статистику.
15.16. Автозагрузка собственных классов с помощью composer. Стандарт PSR-4
Вы даже можете добавить свой код в автозагрузчик, добавив поле autoload в
{ "autoload": { "psr-4": { "App\\": "src/" } } }
После добавления поля в необходимо повторно выполнить команду для повторной генерации файла
Composer зарегистрирует автозагрузчик PSR-4 для пространства имен .
В таблице ниже представлены примеры соответствий полностью определённого имени класса, префикса пространства имён, базового каталога и итогового пути к файлу.
Fully Qualified Class Name | Namespace Prefix | Base Directory | Resulting File Path |
---|---|---|---|
\Acme\Log\Writer\File_Writer | Acme\Log\Writer | ./acme-log-writer/lib/ | ./acme-log-writer/lib/File_Writer.php |
\Aura\Web\Response\Status | Aura\Web | /path/to/aura-web/src/ | /path/to/aura-web/src/Response/Status.php |
\Symfony\Core\Request | Symfony\Core | ./vendor/Symfony/Core/ | ./vendor/Symfony/Core/Request.php |
\Zend\Acl | Zend | /usr/includes/Zend/ | /usr/includes/Zend/Acl.php |
5 последних уроков рубрики «PHP»
Когда речь идёт о безопасности веб-сайта, то фраза «фильтруйте всё, экранируйте всё» всегда будет актуальна. Сегодня поговорим о фильтрации данных.
Обеспечение безопасности веб-сайта — это не только защита от SQL инъекций, но и протекция от межсайтового скриптинга (XSS), межсайтовой подделки запросов (CSRF) и от других видов атак
В частности, вам нужно очень осторожно подходить к формированию HTML, CSS и JavaScript кода.
Expressive 2 поддерживает возможность подключения других ZF компонент по специальной схеме. Не всем нравится данное решение
В этой статье мы расскажем как улучшили процесс подключение нескольких модулей.
Предположим, что вам необходимо отправить какую-то информацию в Google Analytics из серверного скрипта. Как это сделать. Ответ в этой заметке.
Подборка PHP песочниц
Подборка из нескольких видов PHP песочниц. На некоторых вы в режиме online сможете потестить свой код, но есть так же решения, которые можно внедрить на свой сайт.
Конструктор класса
Далее мы создаём конструктор класса, через функцию «__construct».
<php class Point{ public $x; public $y; public function __construct($x, $y){ $this->x = $x; $this->y = $y; } } >?
$this — обращаемся к данному объекту. В данном случае к переменным.
Теперь попробуем создать объект.
<php $point = new Point(5,7); echo $point->x.""; echo $point->y.""; >?
Мы получили значения элементов через класс. На экран выводиться значения переменных.
Также мы можем манипулировать свойствами объекта, попробуем присвоить значение x=50 и выведем его.
<php $point = new Point(5,7); $point->x = 50; echo $point->x.""; >?
На экране увидим новое значение.
Инструменты
Инструменты для тестов здесь: на гитхабе.
Запуск создаёт каталог , а в нём следующие вещи.
Структура наших тестируемых классов. Всё по стандарту PSR-0.
Создаётся 5 пространств имён со случайными именами. В каждом создаётся 5 случайных классов со случайным набором методов.
И в каждом из глобальный пространств создаётся ещё 5 вложенных и в них ещё по 5 классов.
Итого 150 классов. Стандартный такой средненький фреймворк.
Файл
Весь «фреймворк» одним файлом.
Файл получился размером 85 K. А общий вес каталога (за счёт большого количества маленьких файлов) 725 К (файловая система ext4).
Несколько спичек уже сэкономили.
Файл
Это исполняемый скрипт, в котором вызываются нужные классы.
Чтобы добиться какого-то подобия с обычными сценариями: в одном сценарии задействованы не все классы фреймворка, а только 50 (треть). Но к каждому классу может быть несколько обращений.
Работа с каждым классом проста: вызывается статический метод, который выполняет простейшее арифметическое действие. Таким образом время потраченное на работу с классами не должно намного превзойти время потраченное на их подключение (которое мы и тестируем).
Phar-архивы
Из каталога создаётся три phar-архива: , , (без компрессии, gz, bz).
Размер : 99 К. Больше чем за счёт дополнительной информации.
Сжатые файлы: 51 К (gz) и 61 К (bz). Нормальные то архиваторы сжимают и получше.
(Нужно расширение Phar и должна быть сброшена настройка в php.ini)
Файлы и
В req.php подключаются все используемые в exec.php файлы (50 штук).
В phar-req.php тоже самое, только подключаются они не из каталога, а из phar-архива.
Создаем переменные класса
Теперь, когда мы уже умеем создавать классы и объекты классов, давайте посмотрим, как создавать переменные класса. Есть 3 идентификатора доступа для переменных класса, которые можно добавлять в класс:
- Открытые переменные класса (public): доступны — т.е. их можно прочитать и/или изменять — в любом месте скрипта, независимо от того, где находится этот код — внутри класса или за его пределами
- Частные переменные класса (private): доступны только методам класса. Лучше всего делать переменные класса именно частными, чтобы отделить объекты от остальной части кода.
- Защищенные переменные класса (protected): доступны методам собственного класса, а также методам наследуемых классов (мы поговорим о наследовании позже).
Чтобы создать переменную класса, напишите ключевое слово public, private или protected, а затем введите имя переменной:
class ClassName { public $propertyName; private $propertyName; protected $propertyName; }
Давайте добавим переменную класса public нашему классу Member для хранения имени пользователя:
class Member { public $username = ""; }
Обратите внимание на то, что мы инициализировали нашу переменную класса, его значение — пустая строка, “”. Это значит, что при создании нового пользователя значение его имени по умолчанию будет равняться пустой строке
Так же, как и в случае с обычными переменными в PHP, переменные класса не обязательно инициализировать, но лучше все-таки не лениться. Если вы не инициализируете переменную класса, то по умолчанию ее значение равно null.
Деструкторы
Деструктор вызывается при уничтожении объекта. В некоторых языках программирования нужно вручную избавиться от созданных объектов, но в PHP это делает сборщик мусора, который следит за объектами и автоматически уничтожает их, когда они больше не нужны. Посмотрите на следующий пример, который является расширенной версией предыдущего PHP class:
<?php class Animal { public $name = "No-name animal"; public function __construct($name) { echo "I'm alive!"; $this->name = $name; } public function __destruct() { echo "I'm dead now :("; } } $animal = new Animal("Bob"); echo "Name of the animal: " . $animal->name; ?>
Как видите, деструктор такой же как конструктор, только имя отличается. Если попробуете запустить этот пример, то сначала увидите сообщение конструктора, а затем название животного, которое мы вручную выводим в последней строке. После этого сценарий заканчивается, объект уничтожается деструктором, и выводится сообщение о нашем бедном умершем животном.
Вадим Дворниковавтор-переводчик статьи «Defining and using a class»
Указание типа аргумента в методах
По умолчанию метод может принимать аргументы любого типа, но бывают случаи, когда необходимо сделать так, чтобы метод мог принимать в качестве аргумента только экземпляры определенного класса. Для указания типа принимаемого аргумента, просто поместите в определении метода перед именем параметра название класса:
<?php // определяем два пустых класса class cat {} class wrong {} class write { // метод, который принимает аргументы только типа cat function getobj(cat $getCat) { // определяем параметр типа cat echo 'Получен объект типа cat'; } } // создаем экземпляр типа write $kitty = new write(); // работает: передали в качестве аргумента экземпляр типа cat $kitty->getobj( new cat() ); // здесь будет ошибка: передали в качестве аргумента экземпляр типа wrong $kitty->getobj( new wrong() ); ?>
Теперь в качестве аргумента методу можно передавать только экземпляры типа . Поскольку метод содержит уточнение типа класса, передача ему объекта типа wrong приведет к ошибке.
Указание типа нельзя использовать для определения параметров элементарных типов, таких как строки, числа и т.д. Для этой цели в теле метода следует использовать функции проверки типов, например . Также есть возможность определить, что передаваемый аргумент является массивом:
<?php class write { $my_arr; // аргументом для метода может быть только массив function setArray(array $some_arr) { this->my_arr = $some_arr; } } ?>
И последнее о чем осталось сказать: если параметр метода определяется с указанием определенного класса, разрешается указать значение по умолчанию, на случай, если методу не было передано никакого объекта. В качестве значения по умолчанию может быть использовано только значение :
function getobj(cat $getCat = null) { $this->someVar = $getCat; }
Если вместо указать какое-либо другое значение по умолчанию, будет выдана ошибка.
Добавление методов в класс
Что скажете насчет создания методов? Как я ранее упоминал, методы — это обычные функции, являющиеся частью класса. Так что вы, возможно, не удивитесь тому, что и создаются они с помощью того же ключевого слова function. Единственное отличие от создания обычных функций заключается в том, что вы также можете добавить один из идентификаторов доступа (public, private, protected) в ее объявлении. В этом методы схожи с переменными класса:
class ClassName { public function methodName() { // (код) } private function methodName() { // (код) } protected function methodName() { // (код) } }
На заметку: так же, как и в случае с переменными класса, методы public могут быть вызваны откуда угодно, методы private могут вызываться только в пределах класса, а методы protected — из самого класса и его наследника.
Давайте попробуем добавить в наш класс некоторые методы и переменные класса:
- переменная класса private $loggedIn для идентификации пользователя, т.е. зашел он или нет,
- метод login(), который будет осуществлять вход на форум, устанавливая значение переменной класса $loggedIn в true,
- метод logout(), который будет осуществлять выход из форума, устанавливая значение переменной класса $loggedIn в false,
- метод isLoggedIn(), который будет возвращать значение переменной класса $loggedIn.
Вот наш код:
<?php class Member { public $username = ""; private $loggedIn = false; public function login() { $this->loggedIn = true; } public function logout() { $this->loggedIn = false; } public function isLoggedIn() { return $this->loggedIn; } } ?>
Вы наверное заметили, что мы использовали новое ключевое слово $this. В контексте методов объекта специальная переменная $this ссылается на сам объект. Используя $this в методе объекта, метод может получить доступ к любой переменной класса и методу объекта.
Например, метод login() может получить доступ к переменной класса $loggedIn объекта через $this->loggedIn.
Кстати, наша переменная класса — частная (private), поэтому ее нельзя вызывать из любой части скрипта, а только из методов login(), logout() и isLoggedIn(). Это хороший подход, так как внутренняя часть объекта (например, то, как именно записывается, авторизовался ли пользователь или нет) находится отдельно от остального кода. По возможности старайтесь использовать именно переменные класса private, чтобы ваши объекты были автономными, мобильными и защищенными.
На заметку: переменная класса $username в нашем примере — public. Я это сделал только для того, чтобы продемонстрировать, как можно получать доступ к переменным класса объекта. В реальных проектах скорее нужно сделать эту переменную частной и создать специальные переменные класса public для задания значений имени пользователя, если это необходимо.
15.15. Composer
Composer — это менеджер зависимостей для PHP. Вы можете описать от каких библиотек зависит ваш проект и Composer установит нужные библиотеки за вас.
В качестве репозитория пакетов Composer по умолчанию использует packagist.org.
При установке php пакетов Composer не просто устанавливает их, он также устанавливает все зависимости, от которых эти пакеты зависят. Т.е., например, если загружаемая библиотека будет зависеть от 3 других пакетов, а каждая из них, ещё в свою очередь от нескольких, то Composer всё это установит автоматически.
Загрузку сторонних библиотек Composer выполняет в папку , которую данный php скрипт создаёт в корневой директории проекта. Также composer создаёт специальный файл . Если вы подключите этот файл в проекте, вы сразу сможете использовать все загруженные библиотеки.
Пример:
вызываем в консоли команду
Появятся файлы , и папка .
Файл — это главный файл Composer. В нем содержится описание основных пакетов, включая требования к их версиям.
{ "require": { "symfony/routing": "^5.2" } }
Файл — это файл, содержащий уже не требования, а реальные версии пакетов, которые были установлены на компьютер пользователя.
Основное назначение файла заключается в полном сохранении среды, в которой осуществлялась разработка и тестирование проекта.
Например, если вы захотите скопировать проект в какое-то другое место без переноса файла , то выполнив в нём команду , вы можете получить другие версии пакетов. Это может случиться из-за выхода новых версий основных пакетов, описанных в файле , их зависимостей, зависимостей их зависимостей и т.д.
Если же вы разворачиваете проект, включающий в себя , то вы получите те же версии зависимостей, которые были при разработке и тестировании.
Поэтому необходимо добавлять в git.
В папке располагаются исходники библиотек и файл .
Вы можете подключить и начать использовать классы, которые эти библиотеки предоставляют:
require __DIR__ . '/vendor/autoload.php'; $log = new Monolog\Logger('name'); $log->pushHandler(new Monolog\Handler\StreamHandler('app.log', Monolog\Logger::WARNING)); $log->addWarning('Foo');
Специальный метод — конструктор
У класса может быть определен специальный метод — конструктор, который вызывается каждый раз при создании нового экземпляра класса (объекта) с целью инициализировать его, например установить значения свойств. Конструктор, как и любой другой метод может иметь параметры. Чтобы определить метод в качестве конструктора его необходимо назвать
Обратите внимание на то, что имя метода должно начинаться с двух символов подчеркивания. Посмотрим, как это работает:
<?php class first { // определяем два свойства public $num1 = 0; public $num2 = 0; // определяем конструктор класса function __construct($num1, $num2) { $this->num1 = $num1; $this->num2 = $num2; } // метод, который складывает два числа function summa() { return $this->num1 + $this->num2; } } // создаем объект и передаем два аргумента $obj = new first(15, 35); // вызываем метод и сразу выводим результат его работы echo $obj->summa(); ?>
Метод вызывается, когда создается объект с помощью оператора . Указанные в скобках аргументы передаются конструктору. В методе конструктора используется псевдопеременная для присвоения значений соответствующим свойствам создаваемого объекта.
Примечание: если конструктор не имеет параметров и при создании новых экземпляров класса не передаются никакие аргументы, круглые скобки после имени класса можно опустить:
$obj = new first;
Ограничить использование $GLOBALS rfc
Небольшое изменение способа использования $GLOBALS существенно повлияет на производительность всех операций с массивами. Никита Попов отлично справляется с объяснением проблемы и решения в RFC . Это изменение означает, что в некоторых крайних случаях работать с $GLOBAL больше нельзя.
Все нижеперечисленное вызовет ошибку времени компиляции:
Никита проанализировал 2000 лучших пакетов на сайте packagist и нашел только 23 случая, на которые повлияет это изменение. Можно сделать вывод, что влияние этого технически критического изменения будет незначительным, поэтому internals решили добавить его в PHP 8.1. Помните, что большинство из нас выиграет от этого изменения, учитывая положительное влияние на производительность, которое оно оказывает во всем нашем коде.
С чего начать изучение
PHP легко изучить самостоятельно за счет низкого порога входа. Буквально за вечер можно прочитать документацию и написать скрипт, который будет возвращать данные на сайт. Другие языки (C#, Java) имеют более высокий порог вхождения, и одного дня мало, чтобы создать работающий код. Сегодня на российском рынке труда из-за низкого порога входа PHP-кодеров много, и большинство — невысокого уровня.
PHP стабильно находится в топе популярных языков программирования, а в 2004 году получил звание «Язык года», несмотря на предсказания о его скорой смерти на всем пути развития. Источник.
Хороший разработчик PHP фактически применяет те же паттерны программирования, что и в статически типизированных языках. На PHP даже сложнее программировать, и вот почему. Если в Java или C# допустить алгоритмическую ошибку, например, присвоить переменной не тот тип, — они «дадут по рукам». PHP же это пропустит, и программист сломает голову: что не так? Ведь все работает, но неправильно. Из-за этого на современном рынке хорошим программистам PHP готовы платить чек не ниже, чем другим разработчикам. Но хорошего специалиста сложно найти.
Чтобы учить язык, нужно задать себе вопрос: «Для чего он мне?» Учить ради процесса учебы — бесполезно, ведь без практического применения знания забудутся. Нужно поставить конкретную задачу и искать решение.
Что такое ключевое слово $ this в PHP ООП?
$ Этой ключевое слово относится к текущему объекту в PHP ООП. Ключевое слово может использоваться либо для установки значения для текущего объекта, либо для получения значения.
Есть два метода обновления значения атрибуты класса.
- Использование ключевого слова $ this
- Установите значение напрямую с помощью объекта.
Посмотрите на следующий пример, в котором мы используем $ это ключевое слово внутри функции, чтобы установить значение цвета питомца.
Убедитесь, что в приведенном выше примере псевдоним будет установлен для объекта, вызывающего эту функцию. В следующем примере мы установим псевдоним без использования ключевого слова $ this.
Зарплата и востребованность
Зарплата PHP-разработчика зависит от его квалификации, опыта и вида работы. Под типом работы мы подразумеваем фриланс или устройство в штат. У фрилансера сдельная оплата, которая зависит от количества клиентов и заказов.
Работа в офисе оплачивается по окладу, и начинается от 50 тысяч рублей для джуниоров. Стажеры получают от 30 тысяч рублей. Средний уровень заработной платы составляет 67 717 рублей по данным портала Trud.com.
Можно принять эти суммы как немного заниженные, так как на графике видно, что бо́льшая часть вакансий имеет зарплату в 74 600 рублей и более. Есть и второй фактор.
Информация с Trud.com проанализирована с 549 вакансий в России. Если перейти на самый востребованный сайт с вакансиями в стране HeadHunter, на нем можно найти почти 4000 вакансий по профессии PHP-разработчик. К слову, это и великолепный показатель востребованности.
Итак, выборка на Хэд Хантере больше, и если проанализировать хотя бы первые несколько страниц, видно, что средняя зарплата составляет 70-80 тысяч рублей. Есть и впечатляющие цифры, такие как 300 тысяч рублей в месяц.
Теперь о востребованности специалиста на PHP. Известный интернет-портал VC.ru провел собственный анализ летом 2020 года, по итогу которого выяснилось, что PHP занимает третье место по востребованности на территории России. Язык проиграл лишь Java и Javascript.
Под конец 2020 года, самый популярный русскоязычный IT-портал Habr выложил статью с самыми популярными языками программирования за прошедший год по нескольким индексам. По индексу TIOBE PHP занял восьмое место. По рейтингу PYPL — пятое место. По опросам на DOU (среди разработчиков из постсоветских стран) — пятое место. Ссылка на статью: https://habr.com/ru/company/skillfactory/blog/531360/
Зарплата за рубежом
Что касается заработной платы за границей, то в Соединенных Штатах Америки суммы намного больше, чем в России. Это обусловлено и экономикой, и курсом доллара по отношению к рублю, и уровнем развития IT-индустрии и PHP в целом. В США намного больше веб-студий и компаний, которые нанимают PHP-программистов, и труд их оценивается выше.
Перейдем к конкретным цифрам. По данным американского портала Zip Recruiter, средняя зарплата в этой профессии составляет 86 тысяч долларов США в год, 41 доллар в час.
Даже если сравнить с самыми высокооплачиваемыми вакансиями в России, а это 4 000 долларов в месяц, то получится 48 тысяч долларов США в год. И это самые большие цифры! Даже они в 2 раза меньше, чем средняя зарплата в Америке.
Define a Class
A class is defined by using the
keyword, followed by the name of the class and a pair of curly braces ({}). All
its properties and methods go inside the braces:
Syntax
<?phpclass Fruit { // code goes here…}?>
Below we declare a class named Fruit consisting of two properties
($name and $color) and two methods set_name() and
get_name() for setting and getting the $name property:
<?phpclass Fruit { // Properties public
$name; public $color; // Methods function
set_name($name) {
$this->name = $name; } function get_name() {
return $this->name; }}?>
Note: In a class, variables are called properties and functions are called methods!
Что такое объект PHP?
Объект — это экземпляр класса. Из класса мы можем создать столько объектов, сколько может понадобиться для проекта. Каждый объект имеет все свойства и методы, определенные в классе, но у них будут разные значения свойств.
Для объявления объекта необходимо использовать ключевое слово .
Далее создадим из класса два объекта — и .
$bmw = new Car(); $mercedes = new Car();
Процесс создания объекта также известен как создание экземпляра.
Объекты, для чего они нужны?
В то время как в процедурном стиле программирования все функции и переменные находятся вместе в глобальной области видимости таким образом, чтобы их можно было использовать, просто вызывая их имя, использование классов делает манипуляции с кодом внутри классов скрытыми от глобальной области. Это происходит потому, что код внутри классов инкапсулируется в пределах класса, вне досягаемости глобальной области. Итак, нам нужен способ, позволяющий коду из глобальной области видимости использовать код внутри класса, и этот способ базируется на создании объектов из класса.
Мы можем создать столько объектов, сколько захотим, из одного и того же класса, и все они будут совместно использовать методы и свойства класса. См. изображение ниже:
Из одного и того же класса Car мы создали три отдельных объекта с названиями: Mercedes , Bmw и Audi .
Хотя все объекты были созданы из одного и того же класса и, следовательно, имеют методы и свойства класса, они все же разные. Это не только потому, что они имеют разные названия, но и потому, что их свойствам могут быть присвоены разные значения. Например, на изображении выше они различаются свойством цвета: Mercedes зеленый, Bmw синий, а Audi оранжевый.
Примечание: Класс содержит методы и свойства, общие для всех созданных из него объектов.
Хотя объекты используют один и тот же код, они могут вести себя по-разному, поскольку им могут быть присвоены разные значения.
Как получить свойства объекта?
Создав объект, мы можем получить его свойства. Например:
echo $bmw -> color; echo $mercedes -> color;
Когда объект создан, мы можем получить доступ к свойствам класса с помощью оператора .
Обратите внимание, что имя свойства не начинается со знака ; только имя объекта начинается с символа. Попробуй сам
Попробуй сам
Результат выполнения кода:
greengreen
Свойство было установлено в классе по умолчанию (green), поэтому все объекты его унаследовали.
Как установить свойства объекту?
Чтобы установить свойство объектe, мы используем аналогичный подход.
Например, установим синий цвет объекту :
$bmw -> color = 'blue';
Таким же способом установим значение свойства для обоих объектов:
$bmw ->name = "BMW"; $mercedes ->name = "Mercedes Benz";
Установив значение свойства, мы можем получить его значение.
Чтобы получить цвет объекта , мы используем следующую строку кода:
Используйте функцию json_dencode() для создания объекта без создания класса в PHP
Функция конвертирует строку JSON в объект PHP. Функция принимает строковый параметр, который будет преобразован в объект. Функция также принимает необязательный логический параметр. Значение этого логического параметра по умолчанию — , что преобразует объект JSON в объект PHP. Если значение равно , он преобразует объект JSON в ассоциативный массив.
Например, создайте переменную и сохраните в ней объект JSON. Объект содержит , и в качестве ключей и целочисленные значения , и в качестве соответствующих значений. Пары “ключ-значение” заключаются в фигурные скобки. Объект JSON заключен в кавычки в виде строки. Затем используйте функцию для переменных . Примените функцию к функции для отображения информации о закодированном объекте.
В приведенном ниже примере функция преобразует объект JSON в объект PHP . Функция показывает свойство и значение объекта. Таким образом, мы создали объект без создания класса в PHP. Он также отображает тип значения. Пожалуйста, ознакомьтесь с Руководством по PHP, чтобы узнать больше о функции .
Пример кода:
Выход:
Обучение языку PHP
Язык можно изучить, если получить специальность «программист PHP» на курсах GeekBrains. HeadHunter сообщает, что разработчики, освоившие эту профессию, занимают одно из трех ведущих мест по востребованности в сфере IT. Для начинающих язык PHP изучить не составит труда, даже школьного уровня знаний хватает, чтобы овладеть основами HTML/CSS, которые позволят разрабатывать серверы сайтов на PHP и Laravel.
После обучения вы будете:
- уверенно использовать принципы ООП;
- знать PHP инфраструктур и организацию веб-приложений;
- внедрять шаблоны проектирования MVC;
- работать с шаблонами, файлами, сессиями, куками;
- знать базовый синтаксис MySQL и принципы объединения таблиц;
- разбираться в чужом коде;
- разрабатывать безопасные и быстрые сайты любой сложности;
- иметь практический опыт выполнения большинства актуальных функциональных решений, в том числе авторизация, каталогизация, галереи, блоги, личные кабинеты, ленты новостей и др.;
- защищать скрипты от SQL-инъекций и других способов взлома;
- проектировать бизнес-логику веб-сайтов;
- проектировать БД в нормальной форме.
Чтобы учиться, требуется компьютер с любой современной операционной системой, соответствующий минимальным требованиям: двухъядерный процессор частотой 1,8 ГГц и выше, оперативка 2 Гб и больше, не менее 20 Гб свободного места на жестком диске. Кроме того, на устройстве должно быть установлено следующее ПО:
- Редактор кода (Notepad++, IDE).
- SQL-клиент (HeidiSQL).
- Сборка веб-сервера (Open Server / XAMPP) или виртуальная машина VirtualBox.
Специалисты прогнозируют активное развитие языка в сторону объектно-ориентированного программирования, где будет и далее развиваться сильная типизация. Она позволит максимально просто работать с крупными проектами. Это значит, что разработчики на PHP в ближайшее время будут решать очень интересные задачи, а вы всегда можете войти в их число.