Это структура для разработки команды малой и среднего размера
Простой личный блог bybzmt/blog.php
Личный блог bybzmt/blog.php на основе этой структуры имеет очень мощную производительность
| модель | Статические файлы | Главная (2 блогов) | Главная (10 блогов) |
|---|---|---|---|
| FPM | 4705 | 1507 | 1237 |
| Стул | 26607 | 3276 | 2084 |
├── assets 资源目录(如:字体文件等)
├── config
│ ├── dev 开发环境配置
│ ├── product 生产环境配置
├── index.php 项目入口
├── library 其它与composer不兼容的库
├── src
│ ├── Admin 管理后台
│ ├── Api app接口端
│ ├── Backend 内部(内网)接口
│ ├── Common 公共代码目录
│ ├── Console 控制台
│ ├── Wap 手机Web端
│ └── Web Web端
├── static
│ ├── admin 后台静态文件
│ └── web Web端静态文件
├── tests 单元测试目录
├── var 可读写目录(如:模板缓存等)
└── vendor composer库
Поскольку Swoole является режимом памяти резидентов, жизненный цикл глобальных переменных является уровнем приложения, и, в отличие от режима FPM, это только уровень запроса. Глобальные переменные можно поддерживать между различными запросами, поэтому исходные методы, такие как $ _get и $ _post, не могут быть использованы. Эта структура интенсирует контекстный объект для каждого запроса и хранит все данные, связанные с текущим запросом в объекте контекста.
Объект контекста также отвечает за загрузку и замену функций компонентов при иерархии.
Как в вышеупомянутом блоге:
При инициализации компонента объект контекста сначала будет искать соответствующий компонент в своем пространстве имен. Если это не найдено, родительский контекст будет инициализирован. Таким образом, он может легко расширить и заменить необходимые вам компоненты.
API:
Объект запроса - это swoole_http_request, который используется напрямую
Объекты ответа также используют swoole_http_response напрямую
В режиме FPM структура реализует уровень совместимости для поддержания того же API, что и в Swoole
Структура реализует все объекты, связанные с объектами контекста как компоненты, в основном для обеспечения функций быстрого экземпляра, и не требует повторной передачи объектов контекста.
Кроме того, компонент также имеет некоторые удобные методы для использования в любом компоненте.
Railing не принимает открытое отображение, но использует зарегистрированную маршрутизацию, с тем, что является относительно чистым.
Проект маршрутизации расположен в bybzmt/router.php
Если вам это не нравится, вы можете заменить его на библиотеку, которая вам нравится, и очень легко заменить компоненты каркаса.
Структура рекомендует использовать шаблон модели доменной модели, используя: Служба, таблица, структура строки (домен)
Следует отметить, что работы отображения данных не должны быть записаны в обслуживание, таблицу и строку. Он отвечает только за предоставление самых основных данных. Организация соответствующей структуры данных в соответствии с требованиями PAGE и API должна быть реализована в контроллерах и представлениях.
База данных делится на класс таблицы, который предоставляет основные функции и класс Tablesplit, который предоставляет функции таблицы. Существует также черта TableRowCache, которая обеспечивает функцию кэширования. Таблица любого пользователя должна быть унаследована от таблицы или класса Tablesplit, и когда кеш требуется, он может быть введен.
Обратите внимание, что как таблица, так и кэш поддерживают только операции Get/GET/INSERT/UPDATE/DELETE в классе таблицы. При использовании SQL для непосредственного выполнения операций данных вам необходимо вручную поддерживать соответствующие функции кэша или таблицы.
Структура обеспечивает метод загрузки Lazyrow. При создании экземпляра он записывает только идентификатор, а затем пытается загрузить партии, пока атрибут не будет доступен.
Структура обеспечивает некоторые общие функции и удобно использовать
Этот кэш не имеет ничего общего с кэшем в таблице выше, он относится к кэшу, поддерживаемому пользователем. Постарайтесь позволить различным типам кэша управлять различными классами, чтобы избежать ключевых конфликтов.
Структура не предоставляет функции шаблона, и рекомендуется напрямую делать существующие сторонние программы шаблонов. (Например: Twig)
Функции структуры не хотят адаптироваться ко всем средам, они должны быть доступны только в 80% случаев. Особые обстоятельства могут быть обработаны специально в конкретных проектах.
В структуре не так много кода, поэтому постарайтесь как можно больше прочитать весь код.