phalcon注册服务的方法

服务可以通过以下几种方式注入到容器:

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