0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>Большая часть веба построена по так называемой клиент-серверной модели. Клиент (например, браузер) делает запрос на сервер, сервер готовит ответ и отправляет его обратно. Причем сама обработка зависит, как правило, от того, какой был запрошен адрес и с каким методом http. Чаще всего используются post и get запросы. Ничего страшного, если сейчас вы не до конца понимаете, что значит "метод http". В соответствующем курсе они рассматриваются достаточно подробно.</p>
1
<p>Большая часть веба построена по так называемой клиент-серверной модели. Клиент (например, браузер) делает запрос на сервер, сервер готовит ответ и отправляет его обратно. Причем сама обработка зависит, как правило, от того, какой был запрошен адрес и с каким методом http. Чаще всего используются post и get запросы. Ничего страшного, если сейчас вы не до конца понимаете, что значит "метод http". В соответствующем курсе они рассматриваются достаточно подробно.</p>
2
<p>Грубо говоря, каждому url соответствует определенная функция-обработчик. Типичное веб-приложение можно представить как набор обработчиков, связанных с определенными урлами:</p>
2
<p>Грубо говоря, каждому url соответствует определенная функция-обработчик. Типичное веб-приложение можно представить как набор обработчиков, связанных с определенными урлами:</p>
3
<p>Если начать реализовывать эту идею на практике, то окажется что любой веб-сайт содержит в себе много общей логики, которая структурирует приложение:</p>
3
<p>Если начать реализовывать эту идею на практике, то окажется что любой веб-сайт содержит в себе много общей логики, которая структурирует приложение:</p>
4
<ol><li>Принять запрос.</li>
4
<ol><li>Принять запрос.</li>
5
<li>Определить, какой обработчик должен выполниться.</li>
5
<li>Определить, какой обработчик должен выполниться.</li>
6
<li>Выполнить обработчик и подготовить ответ.</li>
6
<li>Выполнить обработчик и подготовить ответ.</li>
7
<li>Вернуть ответ клиенту.</li>
7
<li>Вернуть ответ клиенту.</li>
8
</ol><p>Такую логику действительно выделяют и обзывают каркасом или, по-умному,<strong>фреймворком</strong>.</p>
8
</ol><p>Такую логику действительно выделяют и обзывают каркасом или, по-умному,<strong>фреймворком</strong>.</p>
9
<p>Фреймворки - центральная тема профессионального веба. Вот как выглядит код с использованием фреймворка:</p>
9
<p>Фреймворки - центральная тема профессионального веба. Вот как выглядит код с использованием фреймворка:</p>
10
<p>Если не обращать особое внимание на кучу незнакомого синтаксиса, можно увидеть общую структуру. Описываются обработчики для метода GET (часть $app->get) с адресами / и /about. На каждый адрес определяется функция-обработчик, которая возвращает строку.</p>
10
<p>Если не обращать особое внимание на кучу незнакомого синтаксиса, можно увидеть общую структуру. Описываются обработчики для метода GET (часть $app->get) с адресами / и /about. На каждый адрес определяется функция-обработчик, которая возвращает строку.</p>
11
<p>Пример выше сделан с использованием микрофреймворка Slim. Отличие микрофреймворков от фреймворков в том, что все они (на всех языках) устроены подобным образом. Сам код на них простой и требует создания буквально одного файла. Микрофреймворки практически ничего не могут самостоятельно. Любая новая функциональность достигается сторонними библиотеками.</p>
11
<p>Пример выше сделан с использованием микрофреймворка Slim. Отличие микрофреймворков от фреймворков в том, что все они (на всех языках) устроены подобным образом. Сам код на них простой и требует создания буквально одного файла. Микрофреймворки практически ничего не могут самостоятельно. Любая новая функциональность достигается сторонними библиотеками.</p>
12
<p>С фреймворками ситуация другая. Как правило, они содержат внутри себя большое количество возможностей, необходимых в повседневной разработке. С ними сложнее стартануть, и базовая установка может содержать десятки файлов. Проще всего начать изучение с микрофреймворков и постепенно двигаться к полнофункциональным фреймворкам.</p>
12
<p>С фреймворками ситуация другая. Как правило, они содержат внутри себя большое количество возможностей, необходимых в повседневной разработке. С ними сложнее стартануть, и базовая установка может содержать десятки файлов. Проще всего начать изучение с микрофреймворков и постепенно двигаться к полнофункциональным фреймворкам.</p>
13
<p>Пример, который мы видим, представляет собой полноценный веб-сайт. Да, он примитивный, но все же полноценный. И несмотря на небольшое количество кода и отсутствие какой-либо логики, в ход идут возможности PHP, которые ранее не изучались. К ним относятся аспекты как объектно-ориентированного кода, так и функционального. Причем, что первое, что второе - не просто новый синтаксис, а подходы, существенно влияющие на способ мышления и разработки.</p>
13
<p>Пример, который мы видим, представляет собой полноценный веб-сайт. Да, он примитивный, но все же полноценный. И несмотря на небольшое количество кода и отсутствие какой-либо логики, в ход идут возможности PHP, которые ранее не изучались. К ним относятся аспекты как объектно-ориентированного кода, так и функционального. Причем, что первое, что второе - не просто новый синтаксис, а подходы, существенно влияющие на способ мышления и разработки.</p>
14
<p>Именно по этой причине обучение фреймворку на первых порах создает больше проблем, чем приносит пользы. Подробно ни одна тема не раскроется и не будет отработана, все действия превратятся в повторение за учителем без особого понимания. Шаг влево или вправо от заученных конструкций приведет к полному ступору.</p>
14
<p>Именно по этой причине обучение фреймворку на первых порах создает больше проблем, чем приносит пользы. Подробно ни одна тема не раскроется и не будет отработана, все действия превратятся в повторение за учителем без особого понимания. Шаг влево или вправо от заученных конструкций приведет к полному ступору.</p>
15
<p>Вот лишь некоторые из понятий, которые присутствуют в данном коде:</p>
15
<p>Вот лишь некоторые из понятий, которые присутствуют в данном коде:</p>
16
<ul><li>Класс</li>
16
<ul><li>Класс</li>
17
<li>Объект</li>
17
<li>Объект</li>
18
<li>Метод</li>
18
<li>Метод</li>
19
<li>Функции как объекты первого рода</li>
19
<li>Функции как объекты первого рода</li>
20
<li>Функции высшего порядка</li>
20
<li>Функции высшего порядка</li>
21
</ul><p>Возможно, чисто синтаксически это не очевидно, но в примере функции-обработчики не просто создаются, но и передаются в другие функции (конкретно в вызов get). Другими словами, определение функции выступает как выражение, а сами функции - данные, точно такие же, как и числа или строки. Именно с этой темы мы начнем наше погружение в язык в следующем курсе.</p>
21
</ul><p>Возможно, чисто синтаксически это не очевидно, но в примере функции-обработчики не просто создаются, но и передаются в другие функции (конкретно в вызов get). Другими словами, определение функции выступает как выражение, а сами функции - данные, точно такие же, как и числа или строки. Именно с этой темы мы начнем наше погружение в язык в следующем курсе.</p>