HTML Diff
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-&gt;get) с адресами / и /about. На каждый адрес определяется функция-обработчик, которая возвращает строку.</p>
10 <p>Если не обращать особое внимание на кучу незнакомого синтаксиса, можно увидеть общую структуру. Описываются обработчики для метода GET (часть $app-&gt;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>