bitolaco / silex-app
Quickly set up Silex applications with a single yaml config file
Requires
- php: >=5.4.0
- bitolaco/silex-eloquent: ~0.1
- deralex/yaml-config-service-provider: 1.0.x-dev
- monolog/monolog: *
- silex/silex: ~1.2
- swiftmailer/swiftmailer: >=4.1.2,<4.2-dev
- symfony/config: ~2.4
- symfony/validator: ~2.4
- twig/twig: >=1.8,<2.0-dev
This package is not auto-updated.
Last update: 2024-11-09 17:19:33 UTC
README
This package provides a quick way to a Silex app and various service providers via a single yaml configuration file, and set up different configurations based on environments.
It uses Eloquent by default instead of Doctrine, because adding an ORM is an upgrade in our opinion!
Documentation forthcoming!
Usage
<?php require_once dirname(__FILE__) . '/vendor/autoload.php'; $app = \BitolaCo\Silex\App::setup("config.yml"); $app->run();
debug: false eloquent: connection: connections: default: driver: mysql host: localhost database: test username: root password: charset: utf8 prefix: collation: utf8_unicode_ci logging: cache: monolog: logfile: application.log bubble: true permission: null level: DEBUG|INFO|WARNING|ERROR name: MySilexApp swiftmailer: options: host: localhost port: 25 username: password: encryption: auth_mode: translator: session: cache: twig: routes: someName: path: / defaults: _controller: Foo::bar _demo: path: /demo/{id} defaults: _controller: Foo::bar requirements: id: \d+ servers: dev: - YOUR-MACHINE-NAME environments: dev: debug: true monolog: development.log
Service Providers
The following service providers are currently supported, with more on the way.
- Eloquent
- Monolog
- Swiftmailer
- Translator
- Session
- Twig
- Cache
Monolog
The monolog parameters and what they mean can be found here. It's a one-to-one direct compilation of the parameters there.
If you're setting the level
parameter, be sure you're using a string (like "INFO") instead
of the PHP constant like Logger::INFO
, since the constant won't work.
Environments
The main config key servers
allows you to set up define environments. The key
is the name of the environment, and the value is an array of hostnames that are in
that environment.
When using this option, you can then override default the default configuration by defining variables in the environment[] object.
For example, if you want debugging on your local machine, who's hostname is dev-machine
,
you could set things up like this:
debug: false servers: dev: - dev-machine environment: dev: debug: true
In a production setting (i.e. any server without a hostname of dev-machine
debugging
would be off, but on your local development machine, it would be on.
Machines can be assigned multiple environments, and the last environment variable overwrites all the previous ones.
Routing
In the config yaml
file, the section for routing is used as follows:
routes: someName: path: / defaults: _controller: Foo::bar _demo: path: /demo/{id} defaults: _controller: Foo::bar requirements: id: \d+