Простой фреймворк реализующий шаблон проектирования - 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, где установлены основные параметры вашей конфигурации.