2014-04-01 129 views
1

我有一个基本的控制器如下在基本控制器,而不是单独的控制器使用尔康类

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

如果我正确理解你的问题,答案是否定的。

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

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

+0

谢谢你的澄清和链接,这是非常有益的....我会这样做... .... –

相关问题