Простой фреймворк реализующий шаблон проектирования - MVC на базе SILEX (PHP микро-фреймворка, созданного на основе Symfony2 компонентов). Некоторые идеи мной были заимствованы с проекта GitHub (silex-enhanced). С документацией по SILEX можно познакомиться здесь. Примеры установки фреймворка приведены для ОС "Windows" и веб сервера Nginx.
Основные характеристики фреймворка:
- фреймворк реализует простое приложение управления блогом;
- расширяется с помощью конфигурационных файлов, расположенных в
app/Resources/Сonfig
; - работает как веб или как консольное приложение;
- с помощью консольного приложения можно выполнять разные служебные задачи (пр. создание БД
app/Console/scripts/orm/schema_create.bat
); - для примера с помощью консольного приложения реализована работа с сервисом UBKI;
- реализована локализация для двух языков: английский, русский;
- обеспечивается процесс регистрации, аутентификации и авторизации пользователей;
- в БД созданы два пользователя с соответствующими правами. Администратор (login=admin; pass=foo) User (login=user; pass=foo);
- использует БД типа SqlLite
app/Resources/db/app.db
; - работа с БД обеспечивается с помощью Doctrine(DBAL, ORM)
vendor/doctrine
и PHP ActiveRecordlibrary/AR
; - реализована возможность вывода данных по страницам с помощью библиотеки Pagerfanta
library/Pagerfanta
; - используется шаблонизатор Twig
vendor/twig
; - для работы с почтой используется библиотека SwiftMailer
vendor/swiftmailer
; - добавлены сервисы такие как Zend-Filter, Zend-Json и др.
vendor/zendframework
; - так же добавлены сервисы для работы с массивами, строками, XML, HTTP, Markdown
app/Services/My
; - на стороне клиента используются библиотеки : jQuery, Bootstrap 3, RequireJS, Backbone, Vue
public/js/lib
; - на стороне клиента используются сервисы: Datepicker, FormValidation, MaskInput, Highlight
public/js/app/services
; - для примера работы фреймворка Backbone.js реализовано приложение
ToDo
для локального или серверного хранилищ данныхpublic/js/app/bb-todo
; - для примера работы фреймворка Vue.js реализовано приложение
ToDo
для локального хранилища данныхpublic/js/app/vue-todo
.
- Клонировать silex-mvc проект с помощью git.
- Выполнить
composer install
. - Для создания базы данных выполнить командный файл из консоли
app/Console/scripts/orm/schema_create.bat
, предварительно отредактировав пути кphp.exe
и кapp\Console\index.php
; - Сконфигурируйте веб сервер, что бы точка входа была
public/index.php
. - Установите, если необходимо, соответсвующие права на запись в
path/to/project/var
. - Введите адрес сайта в броузер
Здесь устанавливаются значения основных параметров вашей конфигурации,
которые могут использоваться в других ваших конфигурациях.
Значения параметров можно получить через $app['config']['parameters']
.
Общая конфигурация используется как веб приложением так и консольным приложением.
Разместите данные о ваших общих сервисах в секции service_providers
.
service_providers:
swiftmailer:
class: Silex\Provider\SwiftmailerServiceProvider
parameters:
swiftmailer.options:
host: %mail.host%
port: %mail.port%
username: %mail.username%
password: %mail.password%
encryption: %mail.encryption%
auth_mode: %mail.auth_mode%
...
Конфигурации соответственно применяются для консольного и веб приложений.
Если вы используете в ваших конфигурациях выражение imports
,
то ваш конфиг будет рекурсивно объединен с конфигом указанным в выражении imports
.
Здесь устанавливаются значения способа аутентификации пользователя и его авторизации. С подробностями можно познакомиться сдесь.
Часто необходимо иметь разные значения для разных настроек в зависимости от среды, в которой выполняется приложение. Например, вы можете захотеть использовать разные драйвера кэша на локальном и производственном (продакшн) серверах. Это легко достигается использованием настроек, зависящих от среды.
Для решения этой задачи можно создать файл env.yml
с вашими специфическими
настройками и разместить его в корне вашего приложения. Этот файл будет замещать
файл parameters.yml
, где установлены основные параметры вашей конфигурации.