korstiaan/drimple

模块,用于将 Pimple 依赖注入容器添加到 Drupal 7.x。

安装: 32

依赖者: 1

建议者: 0

安全: 0

星标: 8

关注者: 1

分支: 0

开放问题: 0

类型:drupal-module

dev-master 2013-10-22 18:46 UTC

This package is not auto-updated.

Last update: 2024-09-14 13:48:53 UTC


README

模块,用于将 Pimple 依赖注入容器添加到 Drupal。

Build Status

需求

  • Drupal 7.x
  • PHP 5.3.3+
  • Pimple

安装

推荐使用 Composer 安装 Drimpel。只需将以下内容添加到您的 composer.json

   {
   	   "minimum-stability": "dev",
	   "require": {
	   	   ...
		   "korstiaan/drimple": "dev-master"
	   }
   }

现在更新 Composer 并安装新添加的需求及其依赖项(包括 Pimple

$ php composer.phar update korstiaan/drimple

如果一切顺利且 composer/installers 完成了其工作,Drimple 将被安装到 modules/drimple。如果您不希望它在那里,或者它不是 Drupal 根目录的一部分,将其符号链接到您选择的文件夹。

接下来,转到 site/all/modules,然后在 http://yourdomain.com/admin/modules/list 上启用它。

(如果您使用 voiture,只需将 drimple 添加到 cnf/shared/modules.php

使用 Composer

使用 Composer 意味着包括其自动加载器。将以下内容添加到 Drupals 的 settings.php

// /path/to/sites/default/settings.php

require '/path/to/vendor/autoload.php';

用法

Drimple 的容器及其服务可以通过 drimple()\Drimple\Drimple::getInstance() 作为单例检索。

添加服务

添加服务的推荐方式是实现 hook_drimple_provide(\Drimple\Drimple $drimple)

<?php
// sites/all/modules/foo/foo.module

function foo_drimple_provide(\Drimple\Drimple $drimple)	
{
	$drimple['database'] 			= $drimple->share(function($c) {
		$options = $c['database.options'] + array(
			'user'		=> null,
			'password' 	=> null,
		);
		if (!isset($options['dsn'])) {
			throw new \Exception('Please provide dsn');
		}
		
		return new \PDO($options['dsn'],$options['user'],$options['password']);
	});
	$drimple['database.options'] 	= array(
		'dsn'		=> 'mysql:dbname=drupal;host=localhost',
		'user'		=> 'root',
		'password' 	=> 'root',
	); 
}

服务提供者

就像 Silex 一样,您也可以通过注册 Service Providers 将服务添加到 Drimple

示例

<?php
// sites/all/modules/foo/foo.module

function foo_drimple_provide(\Drimple\Drimple $drimple)	
{
	$drimple->register(new \Foo\Provider\DBProvider(), array(
		'database.options' 	=> array(
			'dsn'		=> 'mysql:dbname=drupal;host=localhost',
			'user'		=> 'root',
			'password' 	=> 'root',
		),
	));
}

// sites/all/modules/foo/Foo/Provider/DBProvider.php
namespace Foo\Provider;

use Drimple\Drimple,
	Drimple\Provider\ServiceProviderInterface; 

class DBProvider implements ServiceProviderInterface
{
	public function register(Drimple $drimple)
	{
		$drimple['database'] = $drimple->share(function($c) {
			$options = $c['database.options'] + array(
				'user'		=> null,
				'password' 	=> null,
			);
			if (!isset($options['dsn'])) {
				throw new \Exception('Please provide dsn');
			}
			return new \PDO($options['dsn'],$options['user'],$options['password']);
		});
	
	}
}

提供者

查看 wiki

许可证

Drimple 在 MIT 许可下授权。