【发布时间】:2013-05-29 19:43:12
【问题描述】:
我是 cakephp 新手。我有一个名为 Rest 的类,由两个控制器共享:页面和类别。
因此我想到了在 AppController 中创建类的实例:
class AppController extends Controller {
public $rest;
public function DoRest() {
require 'Component/Rest.php';
if(!isset($this->rest))
$this -> rest = new Rest();
return $this -> rest;
}
}
然后我可以在 categoriesController 中访问它:
public function index()
{
if ($this->request->is('requested')) {
return $this -> DoRest() -> getCategories();
} else {
$this -> set('categories', $this -> DoRest() -> getCategories());
}
}
在页面控制器中:
public function category() {
$this -> set('items',$this -> DoRest() -> getCategoryById($this->request->query['id']));
}
在 category.ctp 中,我可以通过以下方式访问类别:
$categories = $this->requestAction('categories/index');
但是现在我得到了这个错误:
Error: Cannot redeclare class Rest
我做错了什么?
【问题讨论】:
-
刚刚,没解决:(
-
@nlsbshtr 我明白了,Rest 类中有一个文件也需要。在碰巧到 require_once 'PestXML.php' 之后;解决了错误。但是,尽管在 AppController 中调用了 Rest 类,但它似乎被调用了两次。我应该如何防止类别和页面使用相同的 Rest 实例?