itsgoingd / slim-services
适用于Laravel包的Slim兼容性服务管理器
v1.0
2014-01-03 01:34 UTC
Requires
- php: >=5.3.0
- illuminate/container: >=4.0
- illuminate/support: >=4.0
- slim/slim: >=2.3.0
This package is auto-updated.
Last update: 2024-08-25 06:20:01 UTC
README
SlimServices是基于Laravel 4服务提供者和DI容器的Slim PHP微框架的服务管理器,允许你在基于Slim的项目中使用核心和许多第三方Laravel包。
例如,向你的Slim应用添加Eloquent ORM
require 'vendor/autoload.php'; use SlimServices\ServiceManager; $app = new Slim\Slim(array( // paths 'path' => __DIR__, // database 'database.fetch' => PDO::FETCH_CLASS, 'database.default' => 'main', 'database.connections' => array( 'main' => array( 'driver' => 'mysql', 'host' => '127.0.0.1', 'database' => 'my_database', 'username' => 'root', 'password' => '', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', ), ) )); $services = new ServiceManager($app); $services->registerServices(array( 'Illuminate\Events\EventServiceProvider', 'Illuminate\Database\DatabaseServiceProvider' )); // Laravel database component is now available in Slim's DI container $app->get('/users', function() { $app->render('users.html', array( // Load user list using Laravel database fluent query builder 'users' => $app->db->table('users')->where('active', 1)->get() )); }) $app->run();
你可以在Laravel文档中找到更多关于服务提供者的信息。
安装
要安装最新版本,只需将以下内容添加到你的composer.json
"itsgoingd/slim-services": "dev-master"
一旦安装了包,你需要创建一个ServiceManager并注册你想要使用的服务,服务的配置与Slim实例本身共享
use SlimServices\Service; $app = new Slim(...); $services = new ServiceManager($app); $services->registerServices(array( 'Illuminate\Events\EventServiceProvider', 'Illuminate\Database\DatabaseServiceProvider', 'Illuminate\Filesystem\FilesystemServiceProvider', 'Illuminate\Translation\TranslationServiceProvider', 'Illuminate\Validation\ValidationServiceProvider', 'Mailer\MailerServiceProvider', 'Upload\UploadServiceProvider', ... ));
一些流行组件的配置示例
Illuminate/Database
"require": { "slim/slim": ">=2.3.0", "itsgoingd/slim-services": "dev-master", "illuminate/database": "4.1.*" }
require 'vendor/autoload.php'; use SlimServices\ServiceManager; $app = new Slim\Slim(array( // paths 'path' => __DIR__, // database 'database.fetch' => PDO::FETCH_CLASS, 'database.default' => 'main', 'database.connections' => array( 'main' => array( 'driver' => 'mysql', 'host' => '127.0.0.1', 'database' => 'my_database', 'username' => 'root', 'password' => '', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', ), ) )); $services = new ServiceManager($app); $services->registerServices(array( 'Illuminate\Events\EventServiceProvider', 'Illuminate\Database\DatabaseServiceProvider' )); $users = $app->db->table('users')->select('login')->get(); class User extends Illuminate\Database\Eloquent\Model { public $table = 'users'; } $users = User::all();
Illuminate/Validation
"require": { "slim/slim": ">=2.3.0", "itsgoingd/slim-services": "dev-master", "illuminate/validation": "4.1.*", "illuminate/filesystem": "4.1.*", "illuminate/translation": "4.1.*" }
require 'vendor/autoload.php'; use SlimServices\ServiceManager; $app = new Slim\Slim(array( // paths 'path' => __DIR__, // app 'app.locale' => 'en' )); $services = new ServiceManager($app); $services->registerServices(array( 'Illuminate\Filesystem\FilesystemServiceProvider', 'Illuminate\Translation\TranslationServiceProvider', 'Illuminate\Validation\ValidationServiceProvider' )); $validator = $app->validator->make( array( 'name' => 'Igor', 'password' => 'noname', 'email' => 'igor@no.name' ), array( 'name' => 'required', 'password' => 'required|min:8', 'email' => 'required|email|unique:users' ) ); if ($validator->fails()) { ... }
自定义服务提供者
你可以通过扩展Illuminate\Support\ServiceProvider
类并使用ServiceManager注册它们来创建自定义服务提供者。
class MailerServiceProvider extends Illuminate\Support\ServiceProvider { public function register() { $this->app->bindShared('mailer', function($app) { return new Mailer($app['config']); }); } } $services->registerServices(array( ..., 'MailerServiceProvider' )); $app->mailer->send(...);
许可
版权所有 © 2014 Miroslav Rigler
MIT许可证
特此免费授予任何获得此软件及其相关文档文件(以下简称“软件”)副本的任何人,在不受限制的情况下使用软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本,以及允许向软件提供方提供软件的人这样做,前提是遵守以下条件
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
本软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、特定用途的适用性和非侵权性。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论此类索赔、损害或其他责任是基于合同、侵权或其他方式产生,与软件本身、软件的使用或其他交易有关。