phalconphp中使用namespace

Phalconphp中使用namespace的基本语法与原生PHP语法相同,但是在声明model中需要使用到alias。下面我们按照MVC结构来处理:

首先我们需要在容器中注册namespace服务和目录,让系统加载namespace服务:


$loader = new \Phalcon\Loader();

$loader->registerNamespaces(array(
'Multiple\Frontend\Controllers' => __dir__.'/controllers/',
'Multiple\Models' => __dir__.'/../common/models/',
'Multiple\Common\Libraries' => __dir__.'/../common/library/',

));

$loader->register();
}


路由中使用namespace:



$router->add(
'/admin/users/my-profile',
array(
'namespace' => 'Store\Admin',
'controller' => 'Users',
'action' => 'profile',
)
);


controller中:




namespace Store\Admin\Controllers;

class UsersController extends \Phalcon\Mvc\Controller
{

public function indexAction()
{

}

public function profileAction()
{

}

}


Model中使用namespace:
namespace Store\Models;

class Robots extends \Phalcon\Mvc\Model
{

}


注意:如果model中有数据关系如:hasOne,hasMany,belongsTo,hasManyToMany也要用到namespace



namespace Store\Models;

class Robots extends Phalcon\Mvc\Model
{
public function initialize()
{
$this->hasMany('id', 'Store\Models\Parts', 'robots_id', array(
'alias' => 'parts'
));
}
}


注意:使用关联数据get方法的时候,alias不写,就会报错找不到相关属性。