我有一个基本控制器如下
<?php
use Phalcon\Mvc\Controller;
class ControllerBase extends Controller {
public function initialize() {
}
// wrapper function for debug purposes.
public function pr($data = null) {
echo '<pre>';
print_r($data);
echo '</pre>';
}
}
和用户控制器如下
<?php
use Phalcon\Mvc\Model\Criteria;
use Phalcon\Paginator\Adapter\Model as Paginator;
use Phalcon\Mvc\View;
class UsersController extends ControllerBase {
public function initialize() {
// initialize parent, here ControllerBase.
parent::initialize();
}
public function loginAction() {
// disable the main layout.
$this->view->disableLevel(View::LEVEL_MAIN_LAYOUT);
// disable the controller layout.
$this->view->disableLevel(View::LEVEL_LAYOUT);
}
.
.
.
.
other functions...
}
我想知道我是否可以在基本控制器中调用所有必需的phalcon类,然后扩展到所有子类,这样我就不需要在每个控制器上单独调用它们。
换句话说,我可以添加以下代码
use Phalcon\Mvc\Model\Criteria;
use Phalcon\Paginator\Adapter\Model as Paginator;
use Phalcon\Mvc\View;
仅在基本控制器中,并在其他控制器中访问它们。我尝试将它们放在基本控制器上,但它给出了错误:找不到类。
这是正确的方法还是我的方法有问题...请帮忙。
答案 0 :(得分:1)
如果我理解你的问题,答案是肯定的。
Namespaces是语言功能并以此方式工作。 use Phalcon\Mvc\Model\Criteria
仅声明您将使用Criteria
命名空间中的Phalcon\Mvc\Model\
类。因此,在您的代码中,您可以编写new Criteria()
来创建对象,而不是使用其&#39;全名new \Phalcon\Mvc\Model\Criteria()
。
您必须在每个实例化该类对象的文件中声明每个类,以便autoloader知道给定类存在于哪个文件中。