日期:2014-05-16  浏览次数:20411 次

数据库初始化父类继承的问题
小弟刚开始学ZendFramework框架,有个问题想请教各位大神

数据库初始化代码,我原先写在Bootstrap类中,是没有问题的。
写在控制器的init()方法里也可以。
但是我想抽象出一个类,并继承这个类,就是不行
总是报错 An error occurred     Application error,错误日志也没有东西
我觉得应该是没有调用父类的init()方法导致没有初始化数据库造成的
但是应该怎么修改代码呢,求指教

下面是我的代码

1 父类 BaseController 

class BaseController  extends Zend_Controller_Action{

public function init()
{
//初始化数据库适配器
  $url = constant("APPLICATION_PATH").DIRECTORY_SEPARATOR.'configs'.DIRECTORY_SEPARATOR.'application.ini';
  $dbconfig = new Zend_Config_Ini($url,'mysql');
  $db = Zend_Db::factory($dbconfig->db);
  $db->query('SET NAMES UTF8');
  Zend_Db_Table::setDefaultAdapter($db);
  //echo "<pre>"; 通过访问base控制器测试这里是有值的
  //print_r($db);
  //exit();
}

public function indexAction()
{

}
}


2 IndexController

require_once   APPLICATION_PATH. '/models/tb_user.php';
require_once  'BaseController.php';

//有对数据库进行操作的控制器继承BaseController,没有对数据库进行操作的控制器继承Zend_Controller_Action
class IndexController extends BaseController
{

    public function init()
    {    
     //把下面的注释就没有问题,放开第一句的注释就会报错An error occurred    Application error
      $user = new tb_user();  
        $res = $user->fetchAll()->toArray();   //查询数据表tb_user中的数据
        $this->view->res = $res;  //将获得的数据分配给View
        $this->render('index');
    }

    public function indexAction()
    {
        // action body
    }

------解决方案--------------------
parent::init();//调用父类的构造函数试试
$user = new tb_user();