Содержание

База данных для сайта, организованного на основе php-кода

База данных для сайта применяется для хранения больших объемов информации.

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

Содержание:
  1.  Структура PHP-сайта
  2.  База данных для сайта
  3.  Заключение

Если посмотреть на каком-нибудь сайте на адреса страниц одной рубрики, то можно заметить, что они практически остаются одинаковыми, за исключением числа в самом конце адреса.

То есть, мы наблюдаем при этом один php-файл, который заканчивается значением, например, ?direct=, а дальше идет изменяющееся числовое значение, в зависимости от открываемой страницы.

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

Именно запись ?direct= в адресе страницы означает, что файлу php передается параметр, который имеет имя direct и некоторое числовое значение.

Если бы этот сайт состоял исключительно из html-страниц, то для каждой страницы с новой статьей нужен отдельный файл, которых на сайте было бы очень много.

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

Структура php-сайта

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

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

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

Представим, что страниц на сайте несколько сотен и понадобилось сменить какую-то надпись в футере или в сайдбаре. Для этого понадобится сделать правки в каждом из этих сотен файлов. Сколько нужно времени…

PHP предлагает простое решение. Создаются три php-файла для неизменных частей сайта и в них помещается html-код этих частей.

Теперь в код каждой страницы вместо кода хедера, сайдбара и футера помещается php-инструкция, которая подключает в нужное место html-код данных частей.

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

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

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

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

Основное отличие HTML от PHP-сайтов заключается именно в том, как известно, что в HTML-сайте имеются серьезные трудности при необходимости внесения каких-то изменений в сайт.

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

База данных для сайта на основе php

Может возникнуть вопрос, а где, собственно говоря, хранится содержимое всех статей сайта?

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

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

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

Одна таблица может хранить, допустим, контент сайта. В других таблицах может храниться информация какого-то другого типа, например, имена категорий, либо комментарии к каждой статье и т. д.

То есть ограничений тут нет и в рамках одной базы данных сайта может быть создано много таблиц и в каждой такой таблице хранится какая-то однородная информация.

Каким образом база данных сайта организована? Разобрать это можно на примере таблицы Excel.

У каждой статьи имеется числовой идентификатор, дата добавления статьи на сайт, автор и тест статьи.

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

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

Одним из более очевидных преимуществ можно назвать возможность хранения всей информации в одном месте и избавления от огромного количества html-файлов.

Итоги

Подводя итог, можно сказать следующее:

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

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

Структура каталогов (Laravel 8.x) — Laravel Framework Russian Community

  • Введение
  • Корневой каталог
    • Каталог app
    • Каталог bootstrap
    • Каталог config
    • Каталог database
    • Каталог public
    • Каталог resources
    • Каталог routes
    • Каталог storage
    • Каталог tests
    • Каталог vendor
  • Каталог пространства
    App
    • Каталог пространства Broadcasting
    • Каталог пространства Console
    • Каталог пространства Events
    • Каталог пространства Exceptions
    • Каталог пространства Http
    • Каталог пространства Jobs
    • Каталог пространства Listeners
    • Каталог пространства Mail
    • Каталог пространства Models
    • Каталог пространства Notifications
    • Каталог пространства Policies
    • Каталог пространства Providers
    • Каталог пространства
      Rules

Структура приложения Laravel по умолчанию предназначена для обеспечения отличной отправной точки как для больших, так и небольших приложений. Но вы можете организовать свое приложение так, как вам нравится. Laravel почти не налагает ограничений на расположение любого конкретного класса, до тех пор, пока Composer может автоматически загружать класс.

Каталог
app

Каталог app содержит основной код вашего приложения. Вскоре мы рассмотрим этот каталог более подробно; однако почти все классы в вашем приложении будут в этом каталоге.

Каталог
bootstrap

Каталог bootstrap содержит файл app.php, который загружает фреймворк. В этом каталоге также находится каталог cache, содержащий файлы, сгенерированные фреймворком для оптимизации производительности, например, файлы кеша маршрутов и служб. Обычно вам не нужно изменять какие-либо файлы в этом каталоге.

Каталог
config

Каталог config, как следует из названия, содержит все файлы конфигурации вашего приложения. Отличная идея прочитать все эти файлы и ознакомиться со всеми доступными вам параметрами.

Каталог
database

Каталог database

содержит миграции ваших баз данных, фабрики моделей и наполнители. При желании вы также можете использовать этот каталог для хранения SQLite БД.

Каталог
public

Каталог public содержит файл index.php, который является точкой входа для всех запросов, поступающих в ваше приложение, и конфигурирует автозагрузку. В этом каталоге также находятся ваши ресурсы, например, изображения, JavaScript и CSS.

Каталог
resources

Каталог resources содержит ваши шаблоны, а также ваши необработанные, нескомпилированные ресурсы, например, JavaScript или CSS. В этом каталоге также находятся все ваши языковые файлы.

Каталог
routes

Каталог routes содержит все определения маршрутов для вашего приложения. По умолчанию в Laravel входит несколько файлов маршрутов:

web.php, api.php, console. php и channels.php.

Файл web.php содержит маршруты, которые RouteServiceProvider размещает в группе посредников web, обеспечивающие состояние сессии, защиту CSRF и шифрование файлов куки. Если в вашем приложении не предполагается сохранение состояния и RESTful API, то, скорее всего, все ваши маршруты будут определены в файле web.php.

Файл api.php содержит маршруты, которые

RouteServiceProvider размещает в группе посредников api. Эти маршруты не предполагают сохранения состояния, поэтому запросы, поступающие в приложение через эти маршруты, предназначены для аутентификации с помощью токенов и не имеют доступа к состоянию сессии.

В файле console.php вы можете определить все ваши анонимные консольные команды. Каждое замыкание привязано к экземпляру команды, что обеспечивает простой подход к взаимодействию с методами ввода-вывода каждой команды. Несмотря на то, что этот файл не определяет маршруты HTTP, он определяет точки входа (маршруты) в ваше консольное приложение.

В файле channels.php вы можете зарегистрировать все каналы трансляции событий, которые поддерживает ваше приложение.

Каталог
storage

Каталог storage содержит ваши журналы (логи), скомпилированные шаблоны Blade, файлы сессий, кеша и другие файлы, созданные фреймворком. Этот каталог разделен на каталоги app, framework, и logs. Каталог app может использоваться для хранения любых файлов, созданных вашим приложением. Каталог framework используется для хранения файлов и кешей, сгенерированных фреймворком. Наконец, каталог

logs содержит файлы журнала вашего приложения.

Каталог storage/app/public может использоваться для хранения файлов, созданных пользователями, таких как аватары профиля, которые должны быть общедоступными. Вы должны создать символическую ссылку (ярлык) в public/storage, которая указывает на этот каталог. Вы можете создать ссылку, используя команду php artisan storage:link Artisan.

Каталог
tests

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

Test. Вы можете запускать свои тесты с помощью команд phpunit или php vendor/bin/phpunit. Или, если вы хотите более подробное и красивое отображение результатов ваших тестов, вы можете запускать свои тесты с помощью команды php artisan test Artisan.

Каталог
vendor

Каталог vendor содержит ваши Composer-зависимости.

Большая часть вашего приложения находится в каталоге app. По умолчанию этот каталог находится в пространстве имен App и автоматически загружается Composer с использованием автозагрузчика стандарта PSR-4.

Каталог app содержит множество дополнительных каталогов, например, имеющих пространство Console, Http, и Providers. Думайте о каталогах Console и Http как о API-проводнике ядра вашего приложения. Протокол HTTP и интерфейс командной строки являются механизмами взаимодействия с вашим приложением, но фактически не содержат логики приложения. Другими словами – это два способа передачи команд вашему приложению. Каталог Console содержит все ваши Artisan-команды, тогда как каталог Http содержит контроллеры, посредники и запросы.

Множество других каталогов будет создано внутри каталога app, когда вы будете использовать команды make Artisan для создания классов. Так, например, каталог app/Jobs не будет существовать, пока вы не выполните команду make:job Artisan для создания класса задания.

Многие классы в каталоге app могут быть созданы с помощью команд Artisan. Чтобы просмотреть доступные команды, выполните команду php artisan list make в консоли.

Каталог пространства
Broadcasting

Каталог Broadcasting содержит все классы широковещательных каналов для вашего приложения. Эти классы генерируются с помощью команды make:channel. Этот каталог не существует по умолчанию, но будет создан для вас, когда вы создадите свой первый канал. Чтобы узнать больше о каналах, ознакомьтесь с документацией по трансляции событий.

Каталог пространства
Console

Каталог Console содержит все ваши Artisan-команды приложения. Эти команды могут быть созданы с помощью команды make:command. В этом каталоге также находится ядро вашей консоли, в котором регистрируются ваши пользовательские команды Artisan и определены ваши запланированные задачи.

Каталог пространства
Events

Этот каталог не существует по умолчанию, но будет создан для вас, если вы выполните команды event:generate или make:event Artisan. В каталоге Events находятся классы событий. События могут использоваться для предупреждения других частей вашего приложения о том, что произошло определенное действие, обеспечивая большую гибкость.

Каталог пространства
Exceptions

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

Каталог пространства
Http

Каталог Http содержит ваши контроллеры, посредники и запросы форм. Практически вся логика обработки запросов, поступающих в ваше приложение, будет размещена в этом каталоге.

Каталог пространства
Jobs

Этот каталог не существует по умолчанию, но будет создан для вас, если вы выполните команду make:job Artisan. В каталоге Jobs находятся планировщики заданий вашего приложения. Задания могут быть поставлены в очередь вашим приложением или выполняться синхронно в рамках жизненного цикла текущего запроса. Задания, которые выполняются синхронно во время текущего запроса, иногда называют «командами», поскольку они являются реализацией шаблона команды.

Каталог пространства
Listeners

Этот каталог не существует по умолчанию, но будет создан для вас, если вы выполните команды event:generate или make:listener Artisan. Каталог Listeners содержит классы, которые обрабатывают ваши события. Слушатели событий получают экземпляр события и выполняют логику в ответ на запускаемое событие. Например, событие UserRegistered может обрабатываться слушателем SendWelcomeEmail.

Каталог пространства
Mail

Этот каталог не существует по умолчанию, но будет создан для вас, если вы выполните команду make:mail Artisan. Каталог Mail содержит все ваши классы для работы с электронными письмами, отправляемыми вашим приложением. Почтовые объекты позволяют вам инкапсулировать всю логику создания электронной почты в один простой класс, который может быть отправлен с помощью метода Mail::send.

Каталог пространства
Models

Каталог Models содержит все ваши классы моделей Eloquent. Laravel содержит библиотеку Eloquent ORM, предоставляющую красивую и простую реализацию ActiveRecord для работы с вашей базой данных. Каждая таблица базы данных имеет соответствующую «Модель», которая используется для взаимодействия с этой таблицей. Модели позволяют запрашивать данные в таблицах, а также вставлять новые записи в таблицу.

Каталог пространства
Notifications

Этот каталог не существует по умолчанию, но будет создан для вас, если вы выполните команду make:notification Artisan. Каталог Notifications содержит все «транзакционные» уведомления, которые отправляются вашим приложением. Например, простые уведомления о событиях, которые происходят в вашем приложении. Уведомления Laravel позволяют абстрагироваться от отправки уведомлений по различным драйверам, таким как электронная почта, Slack, SMS, или сохранение в базе данных.

Каталог пространства
Policies

Этот каталог не существует по умолчанию, но будет создан для вас, если вы выполните команду make:policy Artisan. Каталог Policies содержит классы политик авторизации вашего приложения. Политики используются для определения того, может ли пользователь выполнить определенное действие с ресурсом.

Каталог пространства
Providers

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

В новом приложении Laravel этот каталог уже будет содержать несколько провайдеров. При необходимости вы можете добавить свои собственные провайдеры в этот каталог.

Каталог пространства
Rules

Этот каталог не существует по умолчанию, но будет создан для вас, если вы выполните команду make:rule Artisan. Каталог Rules содержит пользовательские объекты правил валидации вашего приложения. Правила используются для инкапсуляции сложной логики проверки в простой объект. Для получения дополнительной информации ознакомьтесь с документацией по валидации.

Как разобраться в структуре сайта на php

Урок 17: Ядро, структура сайта, MVC

MVC — Модель, Вид (представление), Контроллер. Правила следующие:
— В Модели и Контроллере отсутствует вывод информации на экран.
— В Виде мы допускаем PHP в размере необходимом для вывода информации на экран. То есть это будут условные конструкции, циклы, сопутствующие функции обработки вроде htmlspecialchars (о котором будет в следующих уроках).
У нас есть код, не читай ответа ниже ответьте как разделить его:

Ответ очень прост, первую часть мы помещаем в наш контроллер, а вторую в вид.

Наш сайт делится на разделы (Модули, — это не модели!), а внутри разделов страницы. Разделы — это объединённые по смыслу и общему контенту нескольких страниц сайта. Хочу заметить, что в разделе может быть и одна лишь страница. Если мы создаём модуль «новости», то у нас будут страницы: вывод свежих новостей, вывод всех новостей, страница для чтения определённой новости. Если у нас игра, то это отдельный модуль game, в котором присутствуют 2 страницы: главная страница с игрой, и страница с gameover.
В каждом модуле есть основная (главная) страница и называется main , в ней находится код по открытию раздела. В модуле GAME главной страницей будет игра, а вывод результатов как дополнительная страница. Главная страница main, значит у нас создаются main.php и main.tpl в папке модуля game (в случае рассмотрения раздела сайта game).
Давайте на примере GAME рассмотрим какие файлы мы должны создать:
1) Папки модуля GAME:
/modules/game/
/skins/default/game/

2) Игра состоит из двух страниц: битва и результат, значит мы создаём main.php и gameover.php
/modules/game/main.php
/skins/default/game/main.tpl

3) В адресной строке открываем главную страницу БЕЗ УКАЗАНИЯ page=main , потому что если мы не укажем page=main, он определится автоматически в файле variables. php . Итого мы получаем 2 страницы:
/index.php?module=game
/index.php?module=game&page=gameover

4) Чтобы работал модуль, его необходимо прописать в variables.php в переменной допустимых модулей. Страницы мы не прописываем, так как это будет тема отдельного урока.

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

Ещё одна ошибка учеников — если форма авторизации находится на главной странице, то обработчик формы должен быть в index.php или variables.php. Это не так. Авторизация и кнопка выхода относятся к разделу (модулю) cab (кабинет) или user (пользователь) или login. Называйте как хотите, но суть остаётся прежней, именно в этом модуле должен располагаться код авторизации и код выхода в разных файлах. Чтобы форма отправляла данные на указанную страницу модуля достаточно в теге FORM для атрибута action указать путь к этой странице на примере авторизации:

С exit ещё проще, так как не надо никаких данных заполнять, а достаточно переправить пользователя на отдельную страницу, то мы пишем обычной ссылкой:

Пошаговый алгоритм создания архитектуры PHP-сайта

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

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

Прежде чем писать код, вооружитесь листочком с ручкой, вордпадом, вордом, райтером или даже вашим редактором кода и выполните пару шагов.

Шаг 1. Постановка главной задачи

Архитектура разрабатывается сверху вниз. Что это значит? Это значит, что сперва вы продумываете самые главные подсистемы, прежде чем приступить к обслуживающим их или более техническим.

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

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

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

Итак, вам нужен блог, интернет-магазин, сайт стоматологической клиники.

Определитесь, что на вашем сайте самое главное, ради чего всё затевается.

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

Уже можем написать немного кода, с которого и начнётся разработка сайта:

или class товары <>, или class услуги<>

Это ваша главная подсистема. Сразу же можно написать, чем именно она будет управлять.

или class товар <>, или class услуга<>

Шаг 2. Определить, что ваша система умеет делать

Мы создали главную подсистему «записи». Следующий шаг: определить, что она будет уметь, чему мы хотим научить наш сайт.

Очевидно, она должна уметь создавать записи, удалять записи и получать записи.

Забудьте, что вы пишите код сайта, забудьте про пользователей, url-адреса, оформление страниц. Работайте с голыми данными: строками, числами, массивами, объектами.

Шаг 3. Понять, с чем имеем дело

Что такое запись? Что такое услуга? Что такое товар? Для вас, как программиста — это просто совокупность данных. В третьем шаге определяем, что это за совокупность.

Не стремитесь предусмотреть всё, что понадобится когда-то в будущем. Берите самый-самый минимальный набор. Для этого мы и строим архитектуру приложения, чтобы в будущем её было легко нарастить.

Очевидно, запись — это заголовок и текст записи. Услуга и товар — название, описание и цена.

Компьютер — не очень умное создание, по сравнению с человеком, вы не сможете сказать ему: «а покажи-ка мне запись, ту, где про зелёного котёнка написано», поэтому ему всегда необходим какой-то уникальный код, чтобы он среди множества записей узнал именно ту, которую вы хотите.

Это либо порядковый номер (id), уникальный для каждой записи или некое, столь же уникальное, строковое значение.

Значит наша запись — это идентификатор записи (id), заголовок, текст.

Больше нам ничего не нужно.

Шаг 4. Определение необходимых знаний

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

Для действия «создать_запись» нужно знать заголовок и текст записи. Внутренний идентификатор нужен только компьютеру, поэтому пусть сам его и придумывает.

Для действий «удалить_запись» и «получить_запись» нужно знать только тот самый идентификатор записи, который был ей присвоен компьютером при создании.

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

Шаг 5. Определение результатов

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

  • создать_запись: будет создана новая запись, а мы получим её идентификатор.
  • удалить_запись: будет удалена конкретная запись, а мы получим сообщение ‘готово’
  • получить_запись: получим нужную запись
  • создать_запись: будет выброшено исключение.
  • удалить_запись: будет выброшено исключение
  • получить_запись: будет выброшено исключение

Для всех ситуаций, когда что-то не получилось поведение программы должно быть одинаковым во всех модулях/классах/подсистемах вашей системы. PHP предоставляет всего два варианта: trigger_error и throw new Exception. Можете придумать свой, но не стоит изобретать велосипеды, пока вы не научились ездить на существующих. throw new Exception — самый оптимальный вариант.

Читайте раздел «исключения» в официальном мануале.

Шаг 6. Снова с начала

В шаге первом, кроме создания системы управления записями, мы создали ещё класс и самой записи: class запись <>

Для неё нужно сделать тоже самое, что и для главной, те же самые шаги с 1 по 5.

Если вы всё сделали правильно, то у вас должно получиться что-то похожее.

Шаг 7. Пишем код

Теперь, когда всё создано можно приступать к кодированию. Если вы знакомы с PHP никаких проблем у вас не возникнет.

Сколько затратили времени? Совсем чуть-чуть, и ещё ощутите в будущем всюпользу от произошедшего.

То, что у вас получится в итоге скрывается под буквой M в страшной аббревиатуре MVC.

Заключение

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

C M разобрались. Что касается V и C. Это тема для других статей. Поэтому вкратце. Если вы достаточно сообразительны, то другие статьи вам и не понадобятся.

C — это место, в котором система реагирует на действия пользователя. Вот там и нужно думать, что будет делать пользователь. Захотел пользователь создать запись в блоге, заполнил форму создания, а у вас уже всё готово, чтобы выполнить его команду. Захотел, прочитать запись и снова вы выполняете его просьбу в одну строчку. Там главная задача (шаг 1) — понять, что хочет пользователь.

V — изучите любой шаблонизатор: Smarty или Twig. Много споров ведётся про то использовать шаблонизаторы или нет, много убедительных доводов с той и с другой стороны. Правда в том, что для web-разработчика непростительно не уметь работать с шаблонизаторами. Поэтому осваивайте их, а потом уже откажетесь, если не понравится.

Как уже было отмечено выше, на русском языке почти нет достойный литературы на эту тему.
Единственную книгу, которую могу посоветовать прочитать: Стив МакКоннелл «Совершенный код».

Если кто-то знает другие материалы киньте в меня ссылочкой. С удовольствием прочитаю и буду рекомендовать новичкам.

Правильная конструкция файлов сайта

Доброе время суток. Интересует правильная конструкция файлов сайта. То есть:

1) Из чего состоит index.php на профессиональном уровне. Насколько я понимаю там html кода уже не будет, а будут только подключаться разные файлы с хедером, футером, контентом и т. д ? Что еще?

2)Как убирается в адресной строке этот самый index.php? то есть когда мы заходим на некоторые сайты — то там сразу пишется: www.site.ru. а не www.site.ru/index.php

3) Остальные страницы же тоже должны включать в себя все подключенные футеры и хедеры. А если нужно заменить некоторые вещи? То есть хочу я например в хедере выделить «о себе» другим цветом, когда я уже нахожусь на ссылке «о себе», что для этого нужно? Я имею ввиду, что если подключить, допустим, файл с телом сайта, как написать внутри этого тела обычный текст?

Я весьма неопытна в этом деле, но все очень интересно. Была бы во многом благодарна, если бы вы прислали мне архив с каким-либо сайтом, который сделан не на уровне новичка, просто чтобы посмотреть как выглядит сама конструкция

Правильная структура сайта
Здравствуйте. Имеются теоретические знания по PHP, но практических навыков увы — нет. В чем суть -.

Правильная структура сайта
Народ у меня такой вопрос к вам. Решил написать сайт и сделать полностью все с помощью 3 файлов это.

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

Правильная структура взамодействия модулей сайта?
Делал-делал, теперь задумался, а правильно ли. Какой вариант более правильный/удобный и т.д. и.

Сообщение было отмечено Aidera как решение

Решение

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

Каталог

— Структура проекта для PHP

Спросил

Изменено 6 месяцев назад

Просмотрено 73k раз

36

Новинка! Сохраняйте вопросы или ответы и организуйте свой любимый контент.
Узнать больше.

Я новичок в PHP и хочу знать структуру каталогов для проектов php. У меня есть опыт работы с Java, и в java у нас есть src, содержащий исходные файлы java, WEB-INF, содержащий страницы lib и jsp. Есть ли у нас аналогичная стандартная структура каталогов в PHP? Также у нас есть слои в php, как у нас есть слои в java (например, веб-уровни, сервисы, уровни DAO)

Я просмотрел несколько ссылок. Но каждый дает разные ответы.

Не уверен, что мы можем сравнить два языка. Я просто хочу придерживаться некоторых стандартов.

Заранее спасибо.

  • php
  • каталог
  • структура

1

Нет. PHP — это то, что вы делаете из него. Это могут быть очень простые плоские файлы или как вам угодно.

При этом существует несколько согласованных стандартов кодирования, но нет «принудительного соблюдения» указанных стандартов. Они называются PSR (рекомендация стандартов PHP). Здесь есть предыстория: http://net.tutsplus.com/tutorials/php/psr-huh/
Вы можете просмотреть стандарты один за другим здесь: http://www.php-fig.org/psr/

Большинство основных фреймворков следуют этим стандартам, и если вы собираетесь использовать один из них, вам будет проще поток.

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

 -framework_dir
-public_html
    -js
    -img
    -css
    -index.php
    -защищенный/частный
        -контроллеры
        -модели
        -Просмотры
        -так далее
 

Затем они используют файл .htaccess для блокировки доступа к защищенным каталогам. Опять же, это просто обычное представление, которое я видел в нескольких фреймворках. Если вы делаете личный проект, просто используйте то, что вам удобно. Каждый фреймворк предоставит вам другую библиотеку или способ доступа к данным. Нет никаких «слоев», но опять же, у каждого фреймворка есть объекты, которые обрабатывают разные области (электронная почта, база данных, кеш, http, журналы и т. д.). Поскольку существуют десятки популярных, вам остается только найти то, что соответствует вашей философии или проекту. Посмотрите несколько 5-минутных видеороликов в блоге, посмотрите, что вам нравится, а затем протестируйте их в течение пары дней. Если не нравится, переключитесь на другой.

1

С изобретением Composer у людей теперь есть центральное место для регистрации своих проектов для всего мира, и другие люди теперь могут просматривать эту кодовую базу и видеть сходство.

Результат такой: https://github.com/php-pds/skeleton

Вкратце:

.
Если пакет имеет корневой каталог для , то он ДОЛЖЕН называться
исполняемые файлы командной строки бин/
файлы конфигурации конфиг/
файлы документации документов/
файлы веб-сервера публичный/
другие файлы ресурсов ресурсов/
Исходный код PHP источник /
тестовый код тестов/

Этот стандарт не дает никаких дополнительных рекомендаций относительно того, какие каталоги должны существовать ниже источник или общедоступный .

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

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

Я предпочитаю использовать структуру папок Feature-based для своих серверных проектов. Каждая папка функций имеет свой собственный контроллер, менеджер и файл маршрутов. Это хорошо работает для api -backends. Выглядит примерно как https://blog. nikolaposa.in.rs/2017/01/16/on-structuring-php-projects/

Например, у нас есть функция Customer с CustomerController, CustomerRepository, CustomerRoutes,..

Моя структура папок выглядит так:

 - build/
-- phpdox.xml
-- phpmd.xml
-- phpunit.dist.xml
- конфиг/
- общественный/
-- .htaccess
-- index.php
-- ресурсы/
- источник/
-- Покупатель/
--- КлиентКонтроллер.php
--- CustomerRepository.php
--- Клиент.php
--- клиент.routes.php
- тесты/
- продавец/
композитор.json
.gitignore
 

К сожалению (или нет?), вы очень свободно работаете с PHP. Тебе решать.

Вот моя структура:

 framework/
контроллеры/
модели/
конфиги/
файлы/
шаблоны/
темы/
температура/
index.php
init.php
.htaccess
 

Вы можете управлять доступом через .htaccess.

6

Для библиотеки я использую следующую структуру… плюс я включил рекомендации, которые я не использую (пока)

 PROJECT ROOT
|--composer. json
|--README.md
|--docs //для файлов документации
|--тесты //для модульных тестов
|--vendor //для внешних библиотек (если не все подключается через composer)
|--examples //примеры используемой библиотеки
|--config //любые файлы конфигурации, которые у вас могут быть
|--src //где "живет" фактический код библиотеки
   |--php //исходный код php, классы, любые другие скрипты
   |--Просмотр //html-представлений, но на самом деле php-файлов, которые выводят html
   |--Стиль //содержит файлы .css
   |--Script //содержит файлы .js
   |--Res //содержит другие файлы ресурсов для доставки. Это могут быть файлы mp3, json и т. д.
 

В настоящее время я использую только composer.json , README.md и src среди корневых файлов. Но я, вероятно, буду использовать другие, как я описал, когда доберусь до этого момента.

Я ни в коем случае не считаю это «правильным». И эта настройка работает только потому, что у меня есть php-маршрутизатор на каждый запрос. С .htaccess вы можете перенаправить файл .css на /src/Style/requested_file.css .

Я хотел, чтобы корень проекта был очищен, и я этого добился. PHP Fig не имеет PSR для структур каталогов… насколько я знаю. Я надеялся, что у автозагрузчика PSR-4 будут какие-то стандарты, но… не совсем, в отношении структуры каталогов.

Вы можете просмотреть laravel, wordpress, PHP Mailer и другие библиотеки php, чтобы увидеть примеры и выбрать то, что вам больше всего понравится

1

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя адрес электронной почты и пароль

Опубликовать как гость

Электронная почта

Обязательно, но не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Как выбрать структуру каталогов проекта PHP?

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

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

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

Сложность и характер проекта влияют на необходимые каталоги. Например, веб-приложение будет иметь дополнительный общедоступный каталог по сравнению с приложение командной строки.

Структурируйте свой проект так, как вы считаете наиболее логичным и полезным.

Пример структуры каталога

Давайте рассмотрим следующий пример.

 корень проекта/
  .git/ # Конфигурация Git и исходный каталог
  assets/ # Нескомпилированный/необработанный CSS, LESS, Sass, JavaScript, изображения
  bin/ # Скрипты командной строки
  config/ # Конфигурация приложения
  node_modules/ # Модули Node. js для управления внешним интерфейсом
  public/ # Общедоступные файлы на http://example.com/
      index.php # Основная точка входа — фронт-контроллер
      ...
  src/ # файлы исходного кода PHP
      Контроллер/ # Контроллеры
      ...
  templates/ # Файлы шаблонов
  тесты/ # Модульные и функциональные тесты
  translations/ # Файлы перевода
      en_US.yaml
  var/ # Временные файлы приложения
      cache/ # Файлы кеша
      log/ # Файлы журнала приложения
  поставщик/# сторонние пакеты и компоненты с Composer
  .gitignore # Игнорируемые файлы и каталоги в Git (node_modules, var, vendor...)
  composer.json # файл зависимостей Composer
  phpunit.xml.dist # Файл конфигурации PHPUnit
 

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

Общедоступный каталог

Веб-приложениям требуется общедоступный каталог. В приведенном выше примере используется имя общедоступный . Вы можете легко использовать pub , web , public_html или любое другое имя.

Этот каталог будет доступен для внешнего мира при использовании веб-сервера. Из соображений безопасности следует помещать только минимальный набор файлов, необходимых для ваше приложение для работы. Это включает, например, один фронт-контроллер, index.php и статические файлы внешнего интерфейса (CSS, JavaScript, изображения…).

Конфигурация

Если у вас несколько файлов конфигурации, рекомендуется поместить конфигурационные файлы в отдельном каталоге. Несколько примеров: config или и т. д. или app/config … Не помещайте файлы конфигурации в общедоступный каталог.

Composer

Composer помогает упростить и улучшить многие аспекты вашего PHP-приложения. Например, автозагрузка классов PHP, выполнение скриптов, автоматизация установка, управление сторонними зависимостями и многое другое.

Специальный файл composer.json по умолчанию находится в верхнем корневом каталоге проэкт. В этом файле указаны все настройки и зависимости Composer. определенный.

Composer создает каталог поставщика в корневом каталоге проекта, который содержит сторонние зависимости (библиотеки, компоненты, плагины…).

Файлы исходного кода PHP

Когда речь идет о многих проектах классов PHP, добавьте их в каталог с именем src или приложение .

Приведенный выше пример включает все файлы PHP в каталоге src . К ним в основном относятся классы. Композитор также включает в себя очень интересную функцию — автозагрузку PSR-4. Добавление autoload и autoload-dev части в composer.json будут автозагрузка всех классов для вас:

 {
    "автозагрузка": {
        "пср-4": {
            "Приложение\\": "источник/"
        }
    },
    "автозагрузка-разработчик": {
        "пср-4": {
            "Приложение\\Тесты\\": "тесты/"
        }
    }
}
 

В современных приложениях PHP структурирование файлов PHP в каталоге src является частью объектно-ориентированного программирования и шаблонов проектирования. Каждое пространство имен представлено с подкаталогом в src каталог.

Например:

 корень проекта/
  ...
  источник/
      Controller/ # Классы для управления запросом и ответом путем отображения
                  # шаблоны с логикой из сервисов и/или данных из БД
      Model/ # Классы для хранения значений из базы данных
      Utils/ # Службы приложений — бизнес-логика
      ...
  ...
 

Следуйте принципам шаблонов проектирования ООП при добавлении классов в пространства имен.

Испытания

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

Передняя часть

В зависимости от сложности проекта рекомендуется разделить переднюю часть файлы (CSS, Sass, LESS, JavaScript, изображения…) и внутренние файлы PHP (исходный код PHP код, шаблоны, конфигурация приложения, модульные тесты…) на два отдельных репозитории.

В приведенном выше примере каталог node_modules является стандартным каталогом (аналогично к Композиторскому поставщик ), управляемый системой инструментов Node. js — npm или yarn.

Вместо разделения проекта на два репозитория каталог assets используется для хранения нескомпилированного необработанного одного или нескольких JavaScript, CSS, SaSS, LESS, изображений и аналогичные файлы активов, которые компилируются и обрабатываются в общедоступном каталоге .

В случае, если вам не требуется более сложная и сложная передняя часть, вы можете поместите эти веб-ресурсы непосредственно в общедоступный каталог .

Как изменить каталог поставщиков Composer по умолчанию?

По умолчанию Composer создает каталог поставщика . Изменение имени не распространенный подход, потому что это стандартное имя, используемое в экосистеме PHP. Однако переименование можно сделать, установив специальную переменную окружения COMPOSER_VENDOR_DIR :

 COMPOSER_VENDOR_DIR=lib composer требует phpunit/phpunit
 

или вручную добавив конфигурацию vendor-dir в композитор. json :

 {
    ...
    "конфигурация": {
        "вендор-дир": "библиотека"
    }
    ...
}
 

Как настроить структуру каталогов при использовании виртуального хостинга?

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

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

Некоторые панели управления могут позволить вам определить корень документа, отличный от по умолчанию:

 public_html/ # Корневой каталог документов панели управления по умолчанию
  your-project/ # Ваш проект с предпочитаемой структурой каталогов
    ...
    конфиг/
    ...
    public/ # Установите этот каталог в качестве нового корня документа
    источник/
    . ..
 

См. также

  • Глава «Конфигурация» — подробнее о PHP подходы к настройке приложений.
  • Структура CakePHP
  • Структура Laravel
  • Структура Symfony
  • Каркас приложения Zend Framework

Структура каталогов — Laravel — PHP Framework для веб-мастеров

Версия

Master9.x8.x7.x6.x5.85.75.65.55.45.35.25.15.04.2

  • Введение
  • Корневой каталог
    • Приложение Каталог
    • Начальный каталог
    • Каталог конфигурации
    • База данных Каталог
    • Каталог языков
    • Общедоступный каталог
    • Каталог ресурсов
    • Каталог маршрутов
    • Каталог хранилища
    • Каталог тестов
    • Справочник поставщиков
  • Каталог приложений
    • Справочник вещания
    • Каталог консоли
    • Каталог событий
    • Каталог исключений
    • Каталог Http
    • Каталог вакансий
    • Каталог слушателей
    • Каталог Mail
    • Каталог моделей
    • Уведомления Справочник
    • Каталог политик
    • Справочник провайдеров
    • Справочник правил

Введение

Структура приложения Laravel по умолчанию предназначена для обеспечения отличной отправной точки как для больших, так и для малых приложений. Но вы можете организовать свое приложение так, как вам нравится. Laravel почти не накладывает ограничений на то, где находится тот или иной класс, пока Composer может автоматически загружать класс.

Примечание Новичок в Laravel? Посетите Laravel Bootcamp для практического ознакомления с фреймворком, пока мы познакомим вас с созданием вашего первого приложения Laravel.

Корневой каталог

Каталог приложений

Каталог приложения содержит основной код вашего приложения. Вскоре мы рассмотрим этот каталог более подробно; однако почти все классы вашего приложения будут находиться в этом каталоге.

Каталог начальной загрузки

Каталог начальной загрузки содержит файл app.php , который загружает фреймворк. В этом каталоге также находится каталог кэша , который содержит созданные фреймворком файлы для оптимизации производительности, такие как файлы кэша маршрутов и служб. Обычно вам не нужно изменять какие-либо файлы в этом каталоге.

Каталог конфигурации

Каталог config , как следует из названия, содержит все файлы конфигурации вашего приложения. Это отличная идея, чтобы прочитать все эти файлы и ознакомиться со всеми доступными вам вариантами.

Каталог базы данных

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

Каталог языков

Каталог lang содержит все языковые файлы вашего приложения.

Общий каталог

Общедоступный каталог содержит файл index.php , который является точкой входа для всех запросов, поступающих в ваше приложение, и настраивает автозагрузку. В этом каталоге также хранятся ваши активы, такие как изображения, JavaScript и CSS.

Каталог ресурсов

Каталог ресурсов содержит ваши представления, а также необработанные, нескомпилированные активы, такие как CSS или JavaScript.

Каталог маршрутов

Каталог маршрутов содержит все определения маршрутов для вашего приложения. По умолчанию в Laravel включены несколько файлов маршрутов: web.php , api.php , console.php и channels.php .

web.php содержит маршруты, которые RouteServiceProvider помещает в группу промежуточного программного обеспечения web , которая обеспечивает состояние сеанса, защиту CSRF и шифрование файлов cookie. Если ваше приложение не предлагает RESTful API без сохранения состояния, то все ваши маршруты, скорее всего, будут определены в файле web.php .

Файл api.php содержит маршруты, которые RouteServiceProvider помещает в группу промежуточного программного обеспечения api . Эти маршруты предназначены для сохранения состояния, поэтому запросы, поступающие в приложение через эти маршруты, предназначены для аутентификации с помощью токенов и не будут иметь доступа к состоянию сеанса.

В файле console.php вы можете определить все ваши консольные команды на основе закрытия. Каждое замыкание привязано к экземпляру команды, что обеспечивает простой подход к взаимодействию с методами ввода-вывода каждой команды. Несмотря на то, что этот файл не определяет маршруты HTTP, он определяет точки входа (маршруты) на основе консоли в ваше приложение.

В файле channels.php вы можете зарегистрировать все каналы трансляции событий, которые поддерживает ваше приложение.

Каталог хранилища

Каталог хранилища содержит ваши журналы, скомпилированные шаблоны Blade, сеансы на основе файлов, кэши файлов и другие файлы, созданные платформой. Этот каталог разделен на app , framework и logs каталогов. Каталог app может использоваться для хранения любых файлов, созданных вашим приложением. Каталог framework используется для хранения файлов и кешей, сгенерированных фреймворком. Наконец, logs Каталог содержит файлы журналов вашего приложения.

Каталог storage/app/public может использоваться для хранения файлов, созданных пользователями, таких как аватары профилей, которые должны быть общедоступными. Вы должны создать символическую ссылку по адресу public/storage , которая указывает на этот каталог. Вы можете создать ссылку с помощью команды php artisan storage:link Artisan.

Каталог тестов

Каталог тестов содержит ваши автоматические тесты. Примеры модульных тестов PHPUnit и функциональных тестов предоставляются из коробки. Каждый тестовый класс должен иметь суффикс со словом Тест . Вы можете запустить свои тесты, используя команды phpunit или php vendor/bin/phpunit . Или, если вам нужно более подробное и красивое представление результатов вашего теста, вы можете запустить свои тесты с помощью команды php artisan test Artisan.

Каталог поставщиков

Каталог поставщиков содержит ваши зависимости Composer.

Каталог приложений

Большая часть вашего приложения размещена в приложение каталог. По умолчанию этот каталог находится в пространстве имен App и автоматически загружается Composer с использованием стандарта автозагрузки PSR-4.

Каталог app содержит множество дополнительных каталогов, таких как Console , Http и Providers . Думайте о каталогах Console и Http как о предоставлении API в ядре вашего приложения. Протокол HTTP и интерфейс командной строки являются механизмами взаимодействия с вашим приложением, но фактически не содержат логики приложения. Другими словами, это два способа подачи команд вашему приложению. Каталог Console содержит все ваши команды Artisan, а каталог Http содержит ваши контроллеры, промежуточное ПО и запросы.

Множество других каталогов будет создано внутри каталога app , когда вы используете Artisan-команды make для создания классов. Так, например, каталог app/Jobs не будет существовать, пока вы не выполните Artisan-команду make:job для создания класса задания.

Примечание
Многие классы в каталоге app могут быть созданы Artisan с помощью команд. Чтобы просмотреть доступные команды, запустите команду php artisan list make в своем терминале.

Каталог вещания

Каталог Broadcasting содержит все классы каналов вещания для вашего приложения. Эти классы генерируются с помощью команды make:channel . Этот каталог не существует по умолчанию, но он будет создан для вас, когда вы создадите свой первый канал. Чтобы узнать больше о каналах, ознакомьтесь с документацией по трансляции событий.

Каталог консоли

Каталог консоли содержит все пользовательские команды Artisan для вашего приложения. Эти команды можно сгенерировать с помощью команды make:command . В этом каталоге также находится ядро ​​вашей консоли, где регистрируются ваши пользовательские команды Artisan и определяются ваши запланированные задачи.

Каталог событий

Этот каталог не существует по умолчанию, но будет создан для вас с помощью события : сгенерировать и make:event Мастерские команды. Каталог Events содержит классы событий. События могут использоваться для оповещения других частей вашего приложения о том, что данное действие произошло, что обеспечивает большую гибкость и разделение.

Каталог исключений

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

Каталог Http

Каталог Http содержит ваши контроллеры, промежуточное ПО и запросы форм. Почти вся логика для обработки запросов, поступающих в ваше приложение, будет размещена в этом каталоге.

Каталог вакансий

Этот каталог не существует по умолчанию, но он будет создан для вас, если вы выполните команду make:job Artisan. Каталог Jobs содержит задания, стоящие в очереди для вашего приложения. Задания могут быть поставлены в очередь вашим приложением или выполняться синхронно в рамках текущего жизненного цикла запроса. Задания, которые выполняются синхронно во время текущего запроса, иногда называют «командами», поскольку они являются реализацией шаблона команды.

Каталог слушателей

Этот каталог не существует по умолчанию, но будет создан для вас, если вы выполните Artisan-команды event:generate или make:listener . Каталог Listeners содержит классы, обрабатывающие ваши события. Слушатели событий получают экземпляр события и выполняют логику в ответ на запуск события. Например, событие UserRegistered может обрабатываться прослушивателем SendWelcomeEmail .

Почтовый каталог

Этот каталог не существует по умолчанию, но он будет создан для вас, если вы выполните команду make:mail Artisan. Каталог Mail содержит все ваши классы, которые представляют электронные письма, отправленные вашим приложением. Почтовые объекты позволяют инкапсулировать всю логику создания электронного письма в одном простом классе, который можно отправить с помощью метода Mail::send .

Каталог моделей

Модели 9Каталог 0046 содержит все ваши классы моделей Eloquent. Eloquent ORM, входящий в состав Laravel, представляет собой красивую и простую реализацию ActiveRecord для работы с вашей базой данных. Каждая таблица базы данных имеет соответствующую «Модель», которая используется для взаимодействия с этой таблицей. Модели позволяют запрашивать данные в ваших таблицах, а также вставлять в таблицу новые записи.

Каталог уведомлений

Этот каталог не существует по умолчанию, но будет создан для вас, если вы выполните make:notification Мастерская команда. Каталог Notifications содержит все «транзакционные» уведомления, отправляемые вашим приложением, например простые уведомления о событиях, происходящих в вашем приложении. Функция уведомлений Laravel абстрагирует отправку уведомлений по различным драйверам, таким как электронная почта, Slack, SMS или хранится в базе данных.

Каталог политик

Этот каталог не существует по умолчанию, но будет создан для вас, если вы выполните make:policy Мастерская команда. Каталог Policies содержит классы политик авторизации для вашего приложения. Политики используются для определения того, может ли пользователь выполнять данное действие с ресурсом.

Каталог поставщиков

Каталог Providers содержит всех поставщиков услуг для вашего приложения.