PHP Советы: различия между версиями
(→Советы опытным разработчикам: Полезные фичи) |
(→Советы опытным разработчикам: продолжение) |
||
Строка 30: | Строка 30: | ||
TBD | TBD | ||
{| class="wikitable" | {| class="wikitable" | ||
|+Полезные фичи | |+Полезные фичи по обработке null значений | ||
!Версия | !Версия | ||
!Что добавлено | !Что добавлено | ||
Строка 37: | Строка 37: | ||
|- | |- | ||
|7.0 | |7.0 | ||
|Null | |Null coalescing <code>??</code> | ||
|Позволяет кратко записывать проверки на <code>null</code> в одну строчку с присвоением альтернативного значения переменной | |Позволяет кратко записывать проверки на <code>null</code> в одну строчку с присвоением альтернативного значения переменной | ||
|Пример кода | |Пример кода | ||
|- | |- | ||
|7.4 | |7.4 | ||
|Null | |Null coalescing assignment <code>??=</code> | ||
|Позволяет выполнять присваивание в одну строчку с условием, если переменная не была до этого равна <code>null</code> | |Позволяет выполнять присваивание в одну строчку с условием, если переменная не была до этого равна <code>null</code> | ||
|Пример кода | |Пример кода | ||
|- | |- | ||
|8.0 | |8.0 | ||
|Nullsafe | |Nullsafe operator <code>?-></code> | ||
|В середине цепочки последовательных вызовов методов может встретиться null. В этом случае выполнение цепочки прерывается, конечное значение остается равным <code>null</code>. | |В середине цепочки последовательных вызовов методов может встретиться null. В этом случае выполнение цепочки прерывается, конечное значение остается равным <code>null</code>. | ||
|Пример кода | |Пример кода | ||
|} | |||
{| class="wikitable" | |||
|+Полезные фичи для строгой типизации | |||
!Версия | |||
!Что добавлено | |||
!Краткое описание | |||
!Примеры использования | |||
|- | |||
|7.4 | |||
|Typed properties | |||
|Можно ограничить типы у свойств (полей) класса | |||
|Пример кода | |||
|- | |||
|8.0 | |||
|Union types <code><nowiki>x|y</nowiki></code> | |||
|В выражениях определяющих тип можно использовать разделить <code><nowiki>|</nowiki></code> и перечислить несколько допустимых типов. Должен подходить один из списка. | |||
| | |||
|- | |||
|8.1 | |||
|Intersection Types <code>x&y</code> | |||
|В выражениях определяющих тип можно использовать разделить <code>&</code> и перечислить несколько допустимых типов. Должны подходить все указанные. | |||
| | |||
|} | |||
{| class="wikitable" | |||
|+Полезные фичи по ООП | |||
!Версия | |||
!Что добавлено | |||
!Краткое описание | |||
!Примеры | |||
|- | |||
|8.0 | |||
|<code>$object::class</code> | |||
|Теперь класс объекта можно получить без использования дополнительных функций | |||
| | |||
|- | |||
|8.0 | |||
|Promoted properties | |||
|Свойства (поля) объекта теперь можно инициализировать прямо в параметрах конструктора класса. Значения заполняются без необходимости определять присвоение в самом конструкторе. | |||
| | |||
|- | |||
|8.1 | |||
|Enums | |||
|Перечисляемый тип или другими словами — это типизированные константы | |||
|Пример кода | |||
|- | |||
|8.1 | |||
|<code>readonly</code> properties | |||
|Признак <code>readonly</code> у свойства (поля) класса означает, что значение в него можно записать только один раз. После записи изменить значение нельзя. | |||
| | |||
|- | |||
| | |||
| | |||
| | |||
| | |||
|} | |} |
Версия от 13:06, 22 октября 2022
Советы новичкам
Большое количество проектов на PHP, означает и большое количество вакансий для работы. Хорошо зная PHP, вы не останетесь без работы. Но не стоит рассчитывать на высокую зарплату, так как порог входа в технологию низкий и у вас будет много конкурентов (в том числе и из стран третьего мира).
Рекомендуемый план обучения (от простого к сложному)
- Найдите актуальные учебные онлайн-материалы и используйте самую последнюю версию PHP. Не учитесь по старым учебникам.
- Сначала попробуйте написать простой одностраничное веб-приложение с нуля в любом текстовом редакторе, чтобы понять базовые принципы работы.
- Тестируйте на практике примеры из учебных материалов. Старайтесь не копировать, а писать код самостоятельно.
- На данном этапе начните использовать профессиональную разработки IDE.
- Для более глубокого погружения в технологию создайте учебный проект с базой данных MySQL на базе фреймворка, например Laravel.
- Разберитесь как работает пакетный менеджер Composer и добавьте с его помощью функционал из сторонних библиотек.
- Изучите PSR: PHP Standards Recommendations и примените его, внеся исправления и улучшения в ваш код.
- Установите систему контроля версий git, создайте репозиторий и выложите ваш код на GitHub.
- Создайте Docker образ вашего приложения и загрузите его в Docker Registry.
- Запустите Docker контейнер вашего приложения на внешнем хостинге.
Избегайте типовых ошибок по информационной безопасности
- Не вставляйте в ваш проект скопированный код, который не до конца понимаете.
- Готовые PHP-приложения или модули к ним скачивайте только с официальных сайтов или из официальных публичных репозиториев.
- Любые входящие снаружи данные могут быть подделаны злоумышленником или содержать инъекции чужого кода. Всегда проверяйте их формат и корректность перед использованием.
- При загрузке файлов на сервер от сторонних пользователей, как минимум проверяйте расширение файла на допустимые. А лучше загружайте файлы в отдельную папку с установленными ограничениями на возможность запуска любых скриптов и программ.
- Не храните файлы с конфиденциальной информацией в публично доступных папках вашего проекта и не загружайте их в репозитории.
Советы системным администраторам
TBD
Советы опытным разработчикам
TBD
Версия | Что добавлено | Краткое описание | Примеры использования |
---|---|---|---|
7.0 | Null coalescing ??
|
Позволяет кратко записывать проверки на null в одну строчку с присвоением альтернативного значения переменной
|
Пример кода |
7.4 | Null coalescing assignment ??=
|
Позволяет выполнять присваивание в одну строчку с условием, если переменная не была до этого равна null
|
Пример кода |
8.0 | Nullsafe operator ?->
|
В середине цепочки последовательных вызовов методов может встретиться null. В этом случае выполнение цепочки прерывается, конечное значение остается равным null .
|
Пример кода |
Версия | Что добавлено | Краткое описание | Примеры использования |
---|---|---|---|
7.4 | Typed properties | Можно ограничить типы у свойств (полей) класса | Пример кода |
8.0 | Union types x|y
|
В выражениях определяющих тип можно использовать разделить | и перечислить несколько допустимых типов. Должен подходить один из списка.
|
|
8.1 | Intersection Types x&y
|
В выражениях определяющих тип можно использовать разделить & и перечислить несколько допустимых типов. Должны подходить все указанные.
|
Версия | Что добавлено | Краткое описание | Примеры |
---|---|---|---|
8.0 | $object::class
|
Теперь класс объекта можно получить без использования дополнительных функций | |
8.0 | Promoted properties | Свойства (поля) объекта теперь можно инициализировать прямо в параметрах конструктора класса. Значения заполняются без необходимости определять присвоение в самом конструкторе. | |
8.1 | Enums | Перечисляемый тип или другими словами — это типизированные константы | Пример кода |
8.1 | readonly properties
|
Признак readonly у свойства (поля) класса означает, что значение в него можно записать только один раз. После записи изменить значение нельзя.
|
|