PHP包括主php类中的mysqli()类

时间:2014-02-17 11:47:38

标签: php mysqli

美好的一天!

我的php项目存在以下问题。我试图在PHP的主类中包含mysqli()类。这是我在PHP中使用OOP构建的第一个项目。

我有以下代码:

<?php
    class php{
    public function __construct($siteName,$sqlHost,$sqlUser,$sqlPass,$dbName){
        $this->info['SiteName']=$siteName;
    }
        //      vars
    public $info=array(
                    'SiteName'=>null,
                    'Author'=>'Costa V',
                    'Version'=>0,
                    'Build'=>0,
                    'LastUpdate'=>null);
    private $sql=new mysqli($sqlHost,$sqlUser,$sqlPass,$dbName);
        //      functions
    }
?>

我还有一个main.php文档,我用以下内容启动此课程:

<?
error_reporting(E_ALL);
$php=new php('Gerador de catalogo AVK','localhost','root','','avk_pdf_gen');
$pdf=new fpdf();
?>

我在'$ sql'变量中得到与'new'关键字相关的错误。

此外,我想请您评估我的代码并向我提供与OOP相关的任何有用建议。

1 个答案:

答案 0 :(得分:2)

在构造函数中初始化变量通常是个好主意 特别是当你尝试初始化mysqli对象的变量不存在于构造函数内部以外的任何地方时。 尝试:

class php {
   private $sql;
   public function __construct($siteName,$sqlHost,$sqlUser,$sqlPass,$dbName){
      // The parameters that are passed into the constructor when you do 'new php(..)'
      // only exist within the constructor.
      $this->info['SiteName']=$siteName;
      $this->sql = new mysqli($sqlHost, $sqlUser, $sqlPass, $dbName);
  }
  // So if you are using the parameters passed into the constructor here 
  // (within the class declaration scope)
  // They are not yet existing.
}