php практика для начинающих
Задачи на основы языка PHP
Учебник PHP
Практика
Важное
Регулярки
Работа с htaccess
Файлы, папки
Сессии и куки
Работа с БД
Практика по работе с БД в PHP
Перед чтением см. новые уроки раздела «Важное», которые появились выше.
Практика
Движок PHP
Продвинутые БД
Аутентификация
Практика
ООП и MVC
Абстрактные классы и интерфейсы
Трейты
ООП Магия
Практика
Практика: классы как набор методов
Перед решением задач изучите теорию к данному уроку.
Примеры решения задач
Задача
Задача. Создайте переменную $var и присвойте ей значение ‘hello’. Обращаясь к отдельным символам этой строки выведите на экран символ ‘h’, символ ‘e’, символ ‘o’.
Задача
Задача. Напишите скрипт, который считает количество секунд в часе.
Если нам нужно получить количество секунд в сутках, то умножим еще и на 24 (так как в сутках 24 часа):
Задача
Задачи для решения
Работа с переменными
Создайте переменную $a и присвойте ей значение 3. Выведите значение этой переменной на экран.
Создайте переменные $a=10 и $b=2. Выведите на экран их сумму, разность, произведение и частное (результат деления).
Создайте переменные $c=15 и $d=2. Просуммируйте их, а результат присвойте переменной $result. Выведите на экран значение переменной $result.
Создайте переменные $a=10, $b=2 и $c=5. Выведите на экран их сумму.
Создайте переменные $a=17 и $b=10. Отнимите от $a переменную $b и результат присвойте переменной $c. Затем создайте переменную $d, присвойте ей значение 7. Сложите переменные $c и $d, а результат запишите в переменную $result. Выведите на экран значение переменной $result.
Работа со строками
Создайте переменную $text и присвойте ей значение ‘Привет, Мир!’. Выведите значение этой переменной на экран.
Создайте переменные $text1=’Привет, ‘ и $text2=’Мир!’. С помощью этих переменных и операции сложения строк выведите на экран фразу ‘Привет, Мир!’.
Создайте переменную $name и присвойте ей ваше имя. Выведите на экран фразу ‘Привет, %Имя%!’. Вместо %Имя% должно стоять ваше имя.
Создайте переменную $age и присвойте ей ваш возраст. Выведите на экран ‘Мне %Возраст% лет!’.
Обращение к символам строки
Создайте переменную $text и присвойте ей значение ‘abcde’. Обращаясь к отдельным символам этой строки выведите на экран символ ‘a’, символ ‘c’, символ ‘e’.
Дана произвольная строка, например, ‘abcde’. Поменяйте первую букву (то есть букву ‘a’) этой строки на ‘!’.
Создайте переменную $num и присвойте ей значение ‘12345’. Найдите сумму цифр этого числа.
Практика
Напишите скрипт, который считает количество секунд в часе, в сутках, в месяце.
Создайте переменную, присвойте ей число. Возведите это число в квадрат (это значит нужно умножить его само на себя). Выведите его на экран.
Работа с присваиванием и декрементами
Переделайте этот код так, чтобы в нем использовалась операция .=. Количество строк кода при этом не должно измениться.
Переделайте этот код так, чтобы в нем использовались операции ++ и —. Количество строк кода при этом не должно измениться.
Минипроекты PHP для новичков
Учебник PHP
Практика
Важное
Регулярки
Работа с htaccess
Файлы, папки
Сессии и куки
Работа с БД
Практика по работе с БД в PHP
Перед чтением см. новые уроки раздела «Важное», которые появились выше.
Практика
Движок PHP
Продвинутые БД
Аутентификация
Практика
ООП и MVC
Абстрактные классы и интерфейсы
Трейты
ООП Магия
Практика
Практика: классы как набор методов
Перед решением задач изучите теорию к данному уроку.
Задачи для решения
Над формой должны выводится сообщения, оставленные предыдущими посетителями сайта (видны всегда, отсортированы по убыванию даты, то есть в начале самые новые).
Все должно работать аналогично предыдущей задаче, но для сообщений нужно реализовать пагинацию, пусть по 5 сообщений на странице.
Реализуйте гостевую книгу, как показано в следующем образце:
Вы можете открыть этот пример в отдельной вкладке браузера.
Реализуйте гостевую книгу с пагинацией, как показано в следующем образце:
Вы можете открыть этот пример в отдельной вкладке браузера.
Реализуйте записную книгу, как показано ниже.
Образец главной страницы:
Вы можете открыть этот пример в отдельной вкладке браузера.
Образец страницы просмотра одной записи:
Вы можете открыть этот пример в отдельной вкладке браузера.
Образец страницы добавления записи:
Вы можете открыть этот пример в отдельной вкладке браузера.
Образец страницы редактирования записи:
Вы можете открыть этот пример в отдельной вкладке браузера.
Реализуйте органайзер, как показано в следующем образце:
Вы можете открыть этот пример в отдельной вкладке браузера.
Реализуйте форум, как показано ниже.
Образец главной страницы:
Вы можете открыть этот пример в отдельной вкладке браузера.
Образец страницы с темой:
Вы можете открыть этот пример в отдельной вкладке браузера.
Реализуйте опрос, как показано ниже. Результаты опроса должны храниться в базе данных.
Образец главной страницы:
Вы можете открыть этот пример в отдельной вкладке браузера.
Образец страницы с результатом:
Вы можете открыть этот пример в отдельной вкладке браузера.
🐘 Самоучитель для начинающих: как освоить PHP с нуля за 30 минут?
PHP (от англ. препроцессор гипертекста) – язык программирования общего назначения, широко используемый в веб-разработке. Сценарии PHP можно внедрять непосредственно в код HTML. В этой статье мы пройдемся по основам программирования на PHP: синтаксису, объявлению переменных, массивам, условным операторам, циклам и функциям. Также запустим двумя способами веб-сервер на локальной машине и соберем страничку из нескольких файлов PHP и фреймворка Bootstrap. В конце статьи приведем список литературы и бесплатные курсы по PHP для новичков.
Редакторы кода
Для удобного кодинга нам понадобится редактор кода (IDE). Популярные:
Как запустить PHP в Atom
Устанавливать PHP на компьютер и запускать веб-сервер мы будем в конце статьи в разделе «Собираем HTML-страницу». А пока для запуска PHP-сценариев достаточно добавить плагин Script в редакторе Atom.
Рис. 1. Запуск php-скрипта в редакторе Atom
1. Синтаксис
Выведем на экран строку Hello World (заключена в кавычки) с помощью команды echo :
через функцию print :
через функцию printf (выводит отформатированную строку):
2. Объявление переменной
Выведем на экран переменную animal :
Одно значение можно присвоить нескольким переменным:
Комментарии
3. Типы данных
3.1. Строки
Строка – набор символов, заключенный в одиночные » или двойные кавычки «» :
Конкатенация строк
3.2. Числа
Целое число (integer) не имеет дробной части:
Число с плавающей точкой
Число с плавающей точкой имеет дробную часть и задается следующий образом:
Арифметические операторы
Оператор | Операция |
+ | Сложение |
— | Вычитание |
* | Умножение |
/ | Деление |
% | Деление по модулю |
** | Возведение в степень |
Таблица 1. Арифметические операторы
Операторы сравнения
Чтобы сравнить значения используют операторы сравнения, которые возвращают true или false :
Если строка не содержит число, то интерпретатор PHP приводит значение строки к 0. Если в строке есть число и оно стоит после буквенных символов, то значение всей строки также приводится к 0. Е сли число стоит перед буквенными символами, то для сравнении берется только число.
Таблица 2. Операторы сравнения
Порядок операций
Сначала считается выражение в скобках:
4. Условный оператор if-else
Оператор if выполняет код, если выполняется условие. В противном случае выполняется код после else, который переводится, как «иначе», «в другом случае».
Синтаксис оператора if-else
Напишем несколько условий с оператором if и if-else :
для проверки дополнительных условий используется оператор elseif :
Таблица 3. Логические операторы
5. Тернарный оператор
Тернарный оператор сокращает запись проверяемого условия и имеет следующий синтаксис:
6. Переключатель switch
Синтаксис переключателя switch
Напишем конструкцию из переключателя switch и двух операторов case :
7. Цикл while
Оператор while выполняет код до тех пор, пока значение условия не станет ложным.
Синтаксис цикла while
while – обозначение цикла.
$m – условие, которое проверяется перед началом цикла.
$m++ – инкрементирование, то есть увеличение переменной на единицу.
Другой способ записи с помощью декремента в условии:
8. Цикл do..while
Синтаксис цикла do..while
Напишем цикл, выводящий на экран четыре раза слово Hello :
9. Цикл for
Цикл выполняется, до тех пор, пока условие истинно, то есть значение i не станет равным 4:
10. Цикл foreach
Цикл foreach последовательно перебирает элементы массива.
Синтаксис цикла foreach
На каждой итерации переменной присваивается значение текущего элемента последовательности. Переберем все элементы массива и умножим каждый элемент на 3:
11. Массивы
Массивы – упорядоченная коллекция элементов с доступом по индексу или ключу. Индексный массив создается двумя способами:
Через функцию array() :
и через квадратные скобки []:
Рекомендуется объявлять массив через квадратные скобки, так как эта запись компактнее.
Создадим пустой массив:
Добавим в него несколько элементов и выведем на экран его содержимое:
Для удаления элемента из массива воспользуемся функцией unset() :
unset($array[2]) – удаление третьего элемента массива.
В качестве индекса также используют строки:
В таком случае мы получаем что-то напоминающее словари в других языках программирования с ключами и значениями. В PHP такой массив называют ассоциативным.
Ассоциативный массив объявляется через символы => :
Создадим ассоциативный массив:
Для поиска ключа по значению используем функцию array_search():
Чтобы подсчитать количество элементов в массиве воспользуемся функцией count() :
Также можно создать многомерный массив:
12. Функции
Функция – подпрограмма, которая на входе принимает аргументы (бывают функции без входных аргументов), выполняет код и возвращает результат. Функциональное программирование упрощает жизнь программиста, так как не нужно копировать и вставлять фрагменты кода снова и снова. Достаточно обратиться к функции когда нужно и сколько угодно раз.
Как объявить функцию
function – мы говорим интерпретатору, что отсюда начинается функция.
аргументФункции – переменные, которые передаются функции для выполнения кода.
имяФункции – чтобы вызывать функцию, ей нужно присвоить имя.
return – выдает результат работы функции.
Аргументы функций
До этого мы рассматривали функции без аргументов – переменных, которые функция получает извне. Напишем функцию с аргументами, которая считает сумму трех чисел:
13. Собираем HTML-страницу
Чтобы просмотреть HTML-страницу, собранную из нескольких PHP-файлов, установим и запустим веб-сервер, разместим файлы в определенной папке и обратимся к файлу через браузер.
Запуск веб-сервера
Веб-сервер можно запустить несколькими способами:
Встроенный в PHP веб-сервер
Инструкция для Windows:
Инструкция для Ubuntu:
Чтобы проверить запущен ли сервер, перейдем по адресу http://localhost:8000/:
Рис. 6. Запуск встроенного в PHP веб-сервера
Если мы получили ошибку 404, значит сервер запущен.
XAMPP
Рис. 7. Запуск сервера с помощью XAMPP
Рис. 8. Запуск сервера с помощью XAMPP на Windows
14. Собираем страничку
Структура простого HTML-документа выглядит следующим образом:
Воспользуемся фреймворком Bootstrap, чтобы ускорить создание странички. Скачивать ничего не нужно, просто вставим ссылку на Bootstrap в тег :
Откроем файл header.php и вставим в него следующий код:
Рис. 9. HTML-страница, собранная из php-файлов
Литература
Шпаргалки
YouTube-каналы и курсы
Бесплатные курсы на русском языке:
Базовый PHP | упражнения с решением
1. Отобразите текст «Hello World!» в браузере
Внутри тега создайте раздел PHP, в котором будет отображаться текст «Hello World!» в браузере. Проверьте свою работу, открыв страницу в браузере. Если вы получили пустую страницу, убедитесь, что вы заканчиваете каждое утверждение точкой с запятой «;» и что вы включили открывающие и закрывающие PHP-теги.
2. Информация о версии и конфигурации PHP
Напишите сценарий PHP, чтобы получить информацию о версии и конфигурации PHP.
3. Отображение строк
Напишите сценарий PHP для отображения следующих строк:
«Я использую одинарную кавычку ‘ в коде»
«Это плохая команда: del c:\*.*»
4. Вывод переменной
Ожидаемый результат:
5. Вывод имени, введенного в поле ввода
Создайте простую HTML-форму, которая принимает имя пользователя и отображает его с помощью оператора PHP echo
Ожидаемый результат: Посмотреть решение
6. Получить IP-адреса клиента
Напишите сценарий PHP для получения IP-адреса клиента.
7. Определить браузер и операционную систему пользователя
Напишите простой сценарий определения браузера и операционной системы пользователя.
8. Как узнать имя файла веб-страницы?
Напишите сценарий PHP, чтобы получить текущее имя файла веб-страницы.
9. Получить имя хоста, протокол, путь из url
Напишите сценарий PHP, который будет возвращать следующие компоненты URL-адреса
Список компонентов: Протокол, Хост, Путь
10. Изменение цвета первого символа слова
Напишите сценарий PHP, который изменяет цвет первого символа слова.
11. Как с помощью PHP определить протокол (например, HTTP или HTTPS) url’а?
Напишите сценарий PHP, чтобы проверить, вызывается ли страница с https или http
12. Как перенаправить пользователя на другую страницу
Напишите сценарий PHP для перенаправления пользователя на другую страницу.
13. Проверка валидности email-адреса
Напишите простой код PHP, чтобы проверить валидность email-адреса.
Подсказка : используйте фильтр FILTER_VALIDATE_EMAIL, который проверяет значение как валидный адрес электронной почты.
14. Отображение строк и переменных в таблице
Напишите сценарий PHP для отображения строк и переменных в таблице
Зарплата Ивана | 1000$ |
Зарплата Карла | 1200$ |
Зарплата Степана | 1400$ |
Примечание. Используйте элементы таблицы HTML и оператор echo.
15. Отобразить исходный код веб-страницы
Напишите сценарий PHP для отображения исходного кода веб-страницы (например, https://wm-school.ru/).
16. Получить информации о последних изменениях файла
Напишите сценарий PHP для получения информации о последних изменениях файла
17. Посчитать количества строк в файле
Напишите сценарий PHP для подсчета количества строк в файле.
Примечание. Сохраните имя текстового файла в переменной и подсчитайте количество строк текста в нем.
18. Отобразить текущую версию PHP
Напишите сценарий PHP для вывода текущей версии PHP.
19. Как отложить выполнение программы на указанное количество секунд
Напишите сценарий PHP, чтобы отложить выполнение программы на заданное количество секунд.
20. Использование переменных символьного типа для вывода чисел
21. Как узнать последнюю произошедшую ошибку PHP
Напишите сценарий PHP, чтобы узнать последнюю произошедшую ошибку.
22. Проверить больше ли число чем 30, 20 или 10
Напишите функцию PHP, которая принимает в качестве параметра число и проверяет, больше ли оно чем 30, 20 или 10. Используйте тернарный оператор.
23. Как получить полный URL
Напишите сценарий PHP, чтобы получить полный URL
24. Сравните версию PHP
Напишите сценарий PHP для сравнения версии PHP.
25. Получить имя владельца текущего сценария PHP
Напишите сценарий PHP, чтобы получить имя владельца текущего скрипта PHP
26. Как получить корневой каталог документов, в котором выполняется текущий скрипт
Напишите сценарий PHP для получения корневого каталога документов, в котором выполняется текущий скрипт, как определено в файле конфигурации сервера.
27. Получить информацию об операционной системе, в которой работает PHP
Напишите сценарий PHP для получения информации об операционной системе, в которой работает PHP.
28. Выведите список всех разработчиков PHP
Напишите сценарий PHP, чтобы распечатать список всех разработчиков PHP.
29. Получить путь к каталогу, используемому для временных файлов
Напишите срипт PHP, чтобы получить путь к каталогу, используемому для временных файлов.
30. Напишите сценарий PHP, чтобы получить имена функций модуля.
Напишите сценарий PHP, чтобы получить имена функций модуля XML.
31. Как узнать время последней модификации текущей страницы
Напишите PHP-скрипт, чтобы узнать время последней модификации текущей страницы.
32. Как поменять значения между двумя переменными PHP
Напишите программу PHP для обмена значениями между двумя переменными.
PHP: 20+ практик, которым стоит следовать
Эта статья постарается научить вас нескольким лучшим практикам одного из самых популярных языков программирования в мире. Проблема в том, что многие разработчики, не только начинающие, но даже опытные PHP программисты, не уделяют им должного внимания.
Не так редки случаи, когда люди теряли высокооплачиваемую работу только потому, что не заостряли свое внимание на особенностях языка. Помните, что довольно сложно разобраться во всем за одну ночь.
1. Комментируйте свой код
Комментирование намного важнее, чем вы могли подумать. Очень грустно видеть начинающих разработчиков, да и закалённых программеров, которые не комментируют свой код просто потому что им лень.
Комментарии не только позволяют другим разработчикам понять ваш код, но и помогут разобраться вам самим, если придется вернуться к нему спустя какое-то время. Допустим, сегодня вы написали критически-важную функцию, и вы помните как она работает спустя день, два или даже неделю. Но, скорее всего, вы забудете о ней через пару месяцев.
Комментирование сделает ваш код понятным каждому (даже самим себе).
2. Используйте стандарты оформления кода
Стандартов оформления кода необходимость придерживаться (см. PSR-2, прим. пер.). Если разработчики в одном проекте будут использовать разные стандарты, репозиторий может превратиться в сущий ад.
Исходный код может стать абсолютно не поддерживаемым, если каждый, работая над ним, будет изобретать свой собственный стандарт оформления. Есть даже разработчики, которые не потрудились придерживаться хоть какого-нибудь стандарта, их код начал выглядеть как большая куча мусора и не более того.
Строгое следование определенному стандарту в оформлении кода даёт возможность другим программистам провести отладку вашего кода, и позволит вам самим присоединиться к сторонним проектам.
3. Никогда не используйте короткие теги
Это простое злоупотребление может стать причиной конфликтов с xml парсерами, а также может сделать ваш код несовместимым с будущими версиями PHP.
4. Используйте осмысленные названия переменных и функций
Если вы не применяете стандарты присвоения имен переменных, а используете общие и ничего не значащие имена, это может стать болезненным опытом для программистов, разбирающихся в вашем коде. Это очень плохая тенденция, которой ни в коем случае не стоит придерживаться.
5. Отступы и длина строк
Я уже говорил о важности следования стандарту оформления кода, но отдельно стоит сказать про отступы и длину строк.
6. Одинарные или двойные кавычки
Запомните разницу в их работе и используйте должным образом.
7. Никогда не используйте функции внутри циклов
8. Используйте одинарные кавычки в индексах массивов
Особенность PHP в том, что он воспринимает индексы без кавычек как константы, и, если эти константы не были объявлены ранее, они будут самоопределены (self-defined), что вызовет предупреждение (warning). Это не остановит выполнение кода, но ошибка есть ошибка.
9. Лучший способ вывода строк
Взгляните на кусок кода, представленный ниже, и попробуйте догадаться, какое выражение выполнится быстрее, а какое окажется медленнее.
Представьте, но последняя запись, та, которую реже всего можно встретить в коде, выигрывает в тестах производительности. Первая запись, очевидно, проигрывает, потому что функция «print» работает медленнее, чем «echo». Третья строка выигрывает у второй за счет того, что операция конкатенации обрабатывается быстрее, чем переменные внутри строки.
Малоизвестный четвертый вариант побеждает, потому что в нем нет операций работы со строками, а всего лишь список строк, разделенных запятыми.
10. Включайте вывод ошибок (Error Reporting) в процессе разработки
В PHP есть очень полезная функция, error_reporting(), которая может помочь найти различные проблемы в вашем приложении.
PHP поддерживает несколько уровней показа ошибок: E_NOTICE, E_WARNING, E_PARSE и тд., но вы должны использовать E_ALL для вывода всех типов уведомлений. Не забудьте выключить показ ошибок, когда закончите работу над кодом, чтобы пользователи не испугались невразумительных сообщений.
11. Не забывайте о принципе DRY
Это концепция применима не только к PHP, но и к любому другому языку программирования, таким как Java, C++ и тд. Простой пример кода позволит вам понять принцип DRY.
После применения принципа DRY, код будет выглядеть так:
12. Избегайте излишнюю вложенность
Используйте условные операторы таким образом, чтобы избежать множественного вложения. Это не только очень плохая практика, но и выставит ваше код в неудобном свете перед другими разработчиками.
13. Никогда не кладите phpinfo() в корневую директорию
Вы всего лишь размещаете файл на вашем сервере и получаете исчерпывающую информацию. Но множество разработчиков допускают ошибку, помещая файл в корневую директорию, т.к. это может открыть множество лазеек для хакеров.
Лучшим вариантом будет удалить файл, как только вы закончите с ним. Не так уж и страшно потратить пару секунд, если он понадобится вам снова.
14. Сделайте документацию по PHP вашим лучшим другом
У них есть новый дизайн (в бэта версии), если хотите. Другой полезной чертой документации PHP являются крайне полезные комментарии.
15. Время использовать IDE
IDE расшифровывается как Integrated Development Environment (интегрированная среда разработки). Она может существенно облегчить процесс разработки. IDE обладает такими крутыми штуками как: Подсветка синтаксиса, Автодополнение кода, Навигация, Отладка и др., что сделает вас намного продуктивнее и поможет вам писать хороший код с минимумом ошибок.
Вот несколько IDE для PHP: NetBeans, phpDesigner, phpStormи т.д. Выбери то, что больше понравится.
16. Попробуйте PHP фреймворки
Если вы изучили основы PHP, значит самое время перейти к фреймворкам. Их для PHP целые десятки, большинство из них основано на модели MVC (Model-View-Controller).
Из них вы подчерпнете много новых интересных вещей для изучения. CakePHP, CodeIgniter, Zend, Symphony позволят вам создать потрясающие приложения на PHP.
17. Запускайте PHP локально
Если вы работаете над PHP приложением, то вам хотелось бы вести весь процесс разработки на своем компьютере, без подключения к удаленному серверу.
Для этого вам нужны лишь веб-сервер Apache и PHP. Если появится необходимость в базе данных, воспользуйтесь MySQL.
Конечно, вы можете установить их раздельно, но лучше будет воспользоваться готовым решением: XAMPP, WAMP, MAMP. Они очень просты в настройке и позволят развернуть локальный сервер за считанные минуты.
18. ООП
Концепция объектно-ориентированного программирования впервые была представлена в PHP 4, но полноценная его поддержка появилась в PHP 5.
Но сейчас самое время перейти к объектно-ориентированному программированию, поскольку оно обеспечивает более высокий уровень гибкости и может значительно сократить размер исходного кода. Ваш код станет выглядеть намного более организованным.
19. Обновляйте PHP
Это очевидный пункт, но множество программистов неохотно берутся за обновление. Вместе с новой версией мы можете получить улучшение производительности и новые возможности. Нет абсолютно ни единой причины, пропускать обновления.
Эти новые возможности могут сделать вашу программистскую жизнь намного интереснее и проще. И не стоит забывать, что в новых версиях появляются исправления багов и улучшения, связанные с безопасностью.
20. Взаимодействуйте с другими разработчиками
Но если вы будете думать также, то перекроете себе путь в мир изучения новых замечательных технологий.
Спрашивайте ваших друзей или опытных разработчиков на всевозможных форумах, таких как Stack Overflow, Dream In Code и т.п. В мире много людей, которые всегда готовы протянуть вам руку помощи.
От автора перевода:
Пост является переводом оригинальной статьи Aritra Roy (https://www.corephp.com/blog/php-best-practices-that-you-must-follow/), опубликованной в августе 2013, но до сих пор сохранившей актуальность.
Помогаю развивать интернет-проекты. Пишу про веб-разработку, маркетинг и дизайн.