DI注册函数:
public Phalcon\DI\ServiceInterface set (string $name, mixed $definition, boolean $shared=?);
返回:
Phalcon\DI\ServiceInterface
返回的是一个接口。
//实例化DI对象
$di = new Phalcon\DI();
//按照类名
$di->set("request", 'Phalcon\Http\Request');
//使用匿名函数
$di->set("request", function(){
return new Phalcon\Http\Request();
});
//直接实例化
$di->set("request", new Phalcon\Http\Request());
//使用数组定义
$di->set("request", array(
"className" => 'Phalcon\Http\Request'
));
以上几种方法各有优势,可以根据需要来选择注册方法。在上面的例子中,当向框架请求访问一个请求数据时,它将首先确定容器中是否存在这个”reqeust”名称的服务。
容器会返回一个请求数据的实例,开发人员最终得到他们想要的组件。
虽然你可以任意注入你想要的服务(名称)到容器中,但Phalcon有一系列的命名约定,使用它们以能得到适当的服务。
Service Name | Description | Default | Shared |
---|---|---|---|
dispatcher | Controllers Dispatching Service | Phalcon\Mvc\Dispatcher | Yes |
router | Routing Service | Phalcon\Mvc\Router | Yes |
url | URL Generator Service | Phalcon\Mvc\Url | Yes |
request | HTTP Request Environment Service | Phalcon\Http\Request | Yes |
response | HTTP Response Environment Service | Phalcon\Http\Response | Yes |
filter | Input Filtering Service | Phalcon\Filter | Yes |
flash | Flash Messaging Service | Phalcon\Flash\Direct | Yes |
session | Session Service | Phalcon\Session\Adapter\Files | Yes |
eventsManager | Events Management Service | Phalcon\Events\Manager | Yes |
db | Low-Level Database Connection Service | Phalcon\Db | Yes |
modelsManager | Models Management Service | Phalcon\Mvc\Model\Manager | Yes |
modelsMetadata | Models Meta-Data Service | Phalcon\Mvc\Model\MetaData\Memory | Yes |
transactionManager | Models Transaction Manager Service | Phalcon\Mvc\Model\Transaction\Manager | Yes |
modelsCache | Cache backend for models cache | None |
|
viewsCache | Cache backend for views fragments | None |
|