将PDO扩展为CodeIgniter库

时间:2013-04-09 02:55:35

标签: php codeigniter pdo

我知道CI 2.1.3现在支持PDO。但是对我来说使用pdo函数而不是codeigniter函数会更舒服,现在我想扩展PDO并将其用作库并在Controller或其他库加载后创建PDO对象;这是可能的,不是吗?,到目前为止我的尝试:

class Mypdo extends PDO {
  public function __construct($dsn='mysql:dbname=mydbname;host=localhost',
                              $username='myusername',
                              $password='mypassword',
                              $driver_options=array()) {
        parent::__construct($dsn, $username, $password, $driver_options);
  }
}

简单用法:

class Otherlibrary{
   var $CI;
   var $something_id;

   public function __construct(){
      $this->CI =& get_instance();
      $this->CI->load->library('mypdo');

      $this->something_id = 'foo';
   }

   public function is_something_exist(){
      try{
         $q = "SELECT * FROM something WHERE something_id = '$this->something_id'";
         $stmt = $this->CI->mypdo->prepare($q); //<--PROBLEM
         $stmt->execute();

         if ($stmt->rowCount() < 1){
            return false;
          } else {
            return true;
          }
       } catch (PDOException $e){
           echo $e->getMessage();
       }
    }
}
总是回来:

  

致命错误:在...中的非对象上调用成员函数prepare()

我在PHP类/对象中根本不是专家,所以我需要帮助来改进我的代码并让它工作。感谢。

1 个答案:

答案 0 :(得分:0)

根据CodeIgniter Libraries documentation

  • 文件名必须大写。例如:Myclass.php Class

  • 声明必须大写。例如:class Myclass

  • 班级名称和文件名必须匹配。

确保您的Mypdo类是application / library / Mypdo.php。