在基本控制器中使用phalcon类,而不是在单个控制器上使用

时间:2014-04-01 12:15:32

标签: php phalcon

我有一个基本控制器如下

<?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;

仅在基本控制器中,并在其他控制器中访问它们。我尝试将它们放在基本控制器上,但它给出了错误:找不到类。

这是正确的方法还是我的方法有问题...请帮忙。

1 个答案:

答案 0 :(得分:1)

如果我理解你的问题,答案是肯定的。

Namespaces是语言功能并以此方式工作。 use Phalcon\Mvc\Model\Criteria仅声明您将使用Criteria命名空间中的Phalcon\Mvc\Model\类。因此,在您的代码中,您可以编写new Criteria()来创建对象,而不是使用其&#39;全名new \Phalcon\Mvc\Model\Criteria()

您必须在每个实例化该类对象的文件中声明每个类,以便autoloader知道给定类存在于哪个文件中。