Задачи на основы языка php

Содержание

Установка и использование

На нашем интенсиве мы будем работать с версией PHP 7.1


Где скачать PHP?

Мы рекомендуем использовать программную сборку OpenServer. После загрузки и установки на вашем компьютере появятся свежая версия PHP, веб-сервер, база данных, и много других программ и инструментов для удобной работы. Подробнее об установке и использовании мы рассказываем на первой лекции.

Как выглядит PHP-сценарий

Типичный PHP-сценарий — это набор выражений. Каждое выражение начинается с новой строчки и заканчивается точкой с запятой.

Выражение — это инструкция, которая приказывает PHP-интерпретатору выполнить одно действие, например, сложить два числа или вывести на экран информацию. Давайте посмотрим на самый простой сценарий. Он будет выводить на экран одну строку: «Привет, Мир!»:

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

В нашем примере сценарий состоит из всего одной инструкции:

Здесь мы просим функцию вывести на экран наш текст — «Привет, Мир!». Это можно рассматривать как подлежащее и сказуемое в русском языке, где функция  — это сказуемое, а «Привет, Мир!» — подлежащее.

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

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

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

Интерактивный подход

Большую роль играет и метод преподнесения изучаемого материала. Например, сухой технический текст, насколько бы полезным он ни был, весьма труден для восприятия. Именно поэтому наряду с ним необходимо использовать файлы мультимедиа, и в частности – видеоматериалы. Ролики с участием живых людей задействуют сразу несколько чувств (слух и зрение), а также позволяют повторить на практике то, что только что было продемонстрировано на экране.

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

Отправка формы

Рассмотрим один типичный пример — форма обратной связи. Для связи пользователей с авторами сайта, как правило, используются формы обратной связи, где человек указывает имя, почту для обратной связи и текст своего сообщения. Такая форма в HTML может выглядеть следующим образом:

Это очень простая форма, состоящая из трёх полей и одной кнопки отправки.

Почти весь приведённый код описывает внешний вид и содержание формы, но следует обратить внимание на два атрибута тега , которые нужны для указания на способ обработки данных:

  • — этот атрибут используется для определения метода HTTP, который будет использован для передачи данных на сервер. Вы уже знакомы с HTTP-методом , предписывающим серверу просто вернуть определённый документ. Метод сообщает о намерении передать на сервер некоторую информацию, что, впрочем, не отменяет последующее получение контента.
  • — содержит адрес PHP-скрипта, который должен обработать эту форму.

После нажатия на кнопку «отправить», браузер выполняет POST запрос со введёнными данными на адрес, указанный в атрибуте .

С чего начать новичку

Учитесь на практике

Переводите свой проект на один из них — советуем Laravel и Yii. Если знаете один, то выучить смежные будет проще: смысл везде одинаковый, разница в нюансах. Вы столкнётесь с огромным количеством подводных камней, но именно это и будет ценным опытом.

Устройтесь на стажировку

Вы внимательно изучили документацию, прочитали все статьи о PHP, начали писать свой сайт, но что дальше?

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

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

Изучайте программирование в целом

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

Рекомендуем прочесть книгу Мэта Зандстра «PHP. Объекты, шаблоны и методики программирования». Она углубит понимание структуры языка. В целом же при изучении старайтесь избегать устаревшей информации — читайте статьи, вышедшие не ранее 2015 года.

Последний совет


Но почти первый по значимости. Поймите: зачем вам учить PHP как первый язык? Это инструмент, выбирать который нужно под конкретные задачи. Подход к обучению тоже может быть разным в зависимости от ваших целей.

  1. Стать фрилансером и делать сайты на CMS для заказчиков.
  2. Получить должность в известной компании.
  3. Создать свой проект, развивать и зарабатывать с его помощью.

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

Если вы ищете способы, как быстро выучить PHP и сделать это максимально применимым на практике образом, обратите внимание на наш курс по PHP-разработке

Уроки

Урок 1: Как работает сайт, сервер, HTTP. Настройка рабочего окружения

Длительность: 20 минут Сложность: Легко

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

Урок 2: Основы

Длительность: 26 минут Сложность: Легко

Фундаментальные знания. В занятии рассматриваются PHP теги, переменные, операторы, константы и другое.

Урок 3: Типы данных

Длительность: 28 минут Сложность: Легко

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

Урок 4: Условный оператор

Длительность: 27 минут Сложность: Средне

Условный оператор (оператор ветвления) — важнейший инструмент в Вашем арсенале. В занятии подробно рассматривается принцип работы условного оператора в PHP, его разновидности.

Урок 5: Циклы

Длительность: 21 минута Сложность: Средне

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

Урок 6: Пользовательские функции

Длительность: 47 минут Сложность: Средне

Учимся писать собственные функции. В занятии показано как описывать и вызывать функции. Для любопытных рассмотрен пример работы рекурсивной функции.

Урок 7: Встроенные возможности

Длительность: 43 минуты Сложность: Легко

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

Урок 8: HTTP — продолжение. Формы

Длительность: 42 минуты Сложность: Средне

Формы на сайте — это основа обмена данными между пользователем и системой (сайтом)

Для веб-программиста очень важно понимать как устроены формы.В этом занятии Урок содержит полезную теоретическую информацию. Также показано как используются формы на практике

Урок 9: Cookie

Длительность: 24 минуты Сложность: Средне

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

Урок 10: Сессии

Длительность: 17 минут Сложность: Средне

Сессии предназначены для хранения сведений о пользователях на сервере во временных файлах.В занятии рассмотрены принципы работы сессий и задачи, которые решает этот механизм.

Урок 11: Базы данных #1

Длительность: 40 минут Сложность: Сложно

Работа любого современного веб-сайта немыслима без использования базы данных.Занятие посвящено изучению общих принципов и устройства баз данных.Кроме того, большое внимание уделяется процессу проектирования и создания БД

Урок 12: Базы данных #2

Длительность: 51 минута Сложность: Сложно

Для взаимодействия с базой данных используется специальный язык запросов — SQL.В уроке изложены основы написания запросов к БД на языке SQL с применением основных операторов, описан процесс использования этих запросов в коде PHP.

Урок 13: Объектно-ориентированное программирование #1

Длительность: 32 минуты Сложность: Сложно

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

Урок 14: Объектно-ориентированное программирование #2

Длительность: 35 минут Сложность: Очень сложно

Второй шаг на пути освоения ООП. Изучение основных идей концепции: наследование, инкапсуляция.

Урок 15: Объектно-ориентированное программирование #3

Длительность: 20 минут Сложность: Очень сложно

Еще один основной механизм в ООП — полиморфизм.Для понимания принципа работы и смысла его использования я подготовил отличный пример.

Урок 16: Объектно-ориентированное программирование #4

Длительность: 25 минут Сложность: Очень сложно

Заключительное занятие по ООП. Изучаются такие возможности: контроль типа, интерфейсы и абстрактные классы.

Урок 17: Шаблоны проектирования, стандарты кодирования

Длительность: 18 минут Сложность: Сложно

Урок состоит из двух частей:1) стандарты кодирования — это то, что сделает Вашу работу комфортнее и позволит легче находить общий язык с коллегами по цеху.2) шаблоны проектирования — лучшие решения типичных проблем программирования.

Абсолютные и относительные пути


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

Абсолютный путь включает в себя полный адрес файла от корня диска. Пример:

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

Полезные константы

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

— Полный путь к директории, в которой находится текущий сценарий — Полный путь к текущему сценарию

Почему программисты ненавидят PHP

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

10 худших языков программирования

Одна из причин ненависти к PHP — переменные. Если в других языках их нужно объявить заранее, да еще и указав тип, то в PHP можно просто поставить знак «$» в любой части кода.

Сравните код на C:

int a; //Объявляем числовую переменную

a = 5*10; //Проводим с ней операции

И код на PHP

$a = 5*10; //Объявляем и сразу же начинаем вычисления

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

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

Другие языки, вроде JavaScript, можно выносить в отдельный файл и оттуда взаимодействовать со страницей. В PHP же это будет выглядеть так:

<div>

<?

$queryResult = mysql_query(“SELECT id,title FROM articles ORDER BY id”);

if(mysql_num_rows($queryResult) >= 1) {

while($article = mysql_fetch_array($queryResult)) {

echo “<a href=’blog.php?id=$article’>$article</a><br>”;

}

} else {echo “Здесь пока нет статей”;}

?>

</div>

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

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

Новички любят всё усложнять и пишут так:

<?

echo “<!DOCTYPE html>”;

echo “<html>”;

echo “<head>”;

echo “<title>”.$title.”</title>”;

echo “</head>”;

echo “<body>”;

echo $text;

echo “</body>”;

echo “</html>”;

?>

Хотя можно написать так:

<!DOCTYPE html>

<html>

<head>

<title><? echo $title; ?></title>

</head>

<body>

<? echo $text; ?>

</body>

</html>

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

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

В старых версиях была уязвимость, которая позволяла создать переменную через ссылку. То есть если сейчас из ссылки ?var=5 мы получим ячейку в супермассив $_GET, раньше создавалась еще и переменная $var. И если программист забывал выполнить проверку всех данных, то его сайт был в опасности. Сейчас этой уязвимости нет, как и многих других, но мнение людей все равно не меняется.

У PHP на самом деле много недостатков:

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

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

Отправка файлов

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

Тут есть два важных отличия от первого примера:

  • Добавился новый атрибут , который всегда должен иметь значение. Если его не будет, то файл не отправится.
  • Сам файл загружается при помощи поля с типом «file».

В PHP загруженный файл будет доступен в другом специальном массиве — .

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

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

Перемещение загруженного файла

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

Код для перемещения файла в новую папку:

Функция выполняет два действия:

  1. Проверяет, что файл действительно загружен через форму.
  2. Перемещает загруженный файл по новому адресу.

Функция var_dump

Бывают ситуации, когда нам нужно посмотреть содержимое переменной, чтобы понять, почему наш код работает не так, как мы хотели. Обычно на помощь приходит функция echo, однако, бывают ситуации, когда echo не работает.

Например, если переменная является пустой строкой », то выведя ее содержимое на экран с помощью echo, мы ничего не увидим.

Вторая ситуация — когда переменная содержит строку с пробелами по краям, например:

Для решения описанных выше проблем следует использовать функцию var_dump(), которая предназначена для отладки кода и позволяет выводить значения переменных и их тип.

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

Пример использования var_dump():

Первый сайт на PHP

Последнее обновление: 1.11.2015

Сейчас мы создадим небольшой сайтик, который призван дать начальное понимание работы с PHP.

Перейдем к ранее созданному каталогу C:\localhost, который будет хранить все документы сайта. Создадим текстовый файл и назовем его index.html. Откроем его в текстовом редакторе и добавим в него следующий код:

<!DOCTYPE html>
<html>
<head>
<title>Первый сайт на PHP</title>
<meta charset="utf-8">
</head>
<body>
<h2>Введи свои данные:</h2>
<form action="display.php" method="POST">
<p>Введите имя: <input type="text" name="firstname" /></p>
<p>Введите фамилию: <input type="text" name="lastname" /></p>
<input type="submit" value="Отправить">
</form>
</body>
</html>

Код html содержит форму с двумя текстовыми полями. При нажатии на кнопку данные этой формы отсылаются скрипту display.php, так как он указан в атрибуте .

Теперь создадим этот скрипт, который будет обрабатывать данные. Добавим в папку C:\localhost новый текстовый файл. Переименуем его в display.php. По умолчанию файлы программ на php имеют расширение .php. Итак, добавим в файл display.php следующий код:

<!DOCTYPE html>
<html>
<head>
<title>Первый сайт на PHP</title>
<meta charset="utf-8">
</head>
<body>
<?php
$name = $_POST;
$surname = $_POST;
echo "Ваше имя: <b>".$name . " " . $surname . "</b>";
?>
</body>
</html>

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

Каждое отдельное выражение PHP должно завершаться точкой с запятой. В данном случае у нас три выражения. Два из них получают переданные данные формы, например, .

— это переменная, которая будет хранить некоторое значение. Все переменные в PHP предваряются знаком $. И так как форма на странице index.html использует для отправки метод POST, то с помощью выражения мы можем получить значение, которое было введено в текстовое поле с атрибутом . И это значение попадает в переменную $name.

С помощью оператора echo можно вывести на страницу любое значение или текст, которые идут после оператора. В данном случае () с помощью знака точки текст в кавычках соединяется со значениями переменных $name и $surname и выводится на страницу.

Теперь обратимся к форме ввода, перейдя по адресу http://localhost:8080:

Введем какие-нибудь данные и нажмем на кнопку отправить:

Итак, у нас сработал скрипт display.php, который получил и вывел отправленные данные на страницу.

НазадВперед

Объекты

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

Но отличие от массивов всё-таки есть, и при этом достаточно важное — объекты могут иметь внутреннее состояние

Особенности объектов и их отличия от массивов

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

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

Но самая большая особенность объектов — это то, как они создаются. Если массив создается либо пустым, либо сразу с набором значений, то объекты устроены иначе. Дело в том, что объекты не существуют сами по себе. Чтобы создать новый объект, вам придётся вначале создать его описание — класс. Класс — это как бы чертёж объекта. Класс описывает то, из чего состоит объект. Мы разберёмся с классами чуть позже.

Анатомия объекта

Как же устроен объект изнутри? Его содержимое можно поделить на две группы: свойства и методы. Свойства могут быть двух видов: публичные и скрытые. К публичным свойствам можно обращаться за пределами объекта, точно так же, как вы обращаетесь к элементам массива по его ключам. Скрытые свойства не имеют аналогов в массиве. Они доступны для чтения и изменения только внутри самого объекта — и это могут делать его методы.

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


С этим читают