Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP在主PHP类中包含mysqli()类_Php_Mysqli - Fatal编程技术网

PHP在主PHP类中包含mysqli()类

PHP在主PHP类中包含mysqli()类,php,mysqli,Php,Mysqli,你好 我的php项目有以下问题。我试图在PHP的主类中包含mysqli()类。这是我在PHP中使用OOP构建的第一个项目 我有以下代码: <?php class php{ public function __construct($siteName,$sqlHost,$sqlUser,$sqlPass,$dbName){ $this->info['SiteName']=$siteName; } // vars p

你好

我的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相关的有用建议。

在构造函数中初始化变量通常是个好主意。
特别是当您尝试初始化
mysqli
对象时,除了构造函数内,其他任何地方都不存在变量。 尝试:


不能在编译时用必须在运行时执行的定义实例化属性。这是您应该转移到构造函数的地方。(即,整个私有$sql=…应替换为一个简单的私有$sql;然后在您的_construct()函数中执行$this->sql=new mysqliDid我给您的答案提供了所需的信息?如果是,请将其标记为正确。如果需要,还可以继续提问,并对答案进行注释。
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.
}