Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.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 将mysqli传递给类以供函数使用_Php_Oop_Constructor_Mysqli - Fatal编程技术网

Php 将mysqli传递给类以供函数使用

Php 将mysqli传递给类以供函数使用,php,oop,constructor,mysqli,Php,Oop,Constructor,Mysqli,可能问过很多次,但我很固执 我有下面的类来管理MySQL数据库 class blog { function show ($mysqli) { // Code working on $mysqli here } } 由于我将在这个类的许多函数中使用$mysqli,我读到我可以创建构造函数,以便将$mysqli变量传递给该类,并在每个函数中使用它,因此我可以执行以下操作: $blog = new blog($mysqli); $blog -> show

可能问过很多次,但我很固执

我有下面的类来管理MySQL数据库

class blog {        
    function show ($mysqli) {
    // Code working on $mysqli here
    }
}
由于我将在这个类的许多函数中使用$mysqli,我读到我可以创建构造函数,以便将$mysqli变量传递给该类,并在每个函数中使用它,因此我可以执行以下操作:

$blog = new blog($mysqli);
$blog -> show();
class blog {
    private $mysqli;
    function __construct($dbi) {
        $this->mysqli = $dbi;
    }        
    function show () {
    $this->mysqli->query(); //example usage
    // Code working on $mysqli here
    }
}
这可能吗?

这就是所谓的

只需在类中使用一个字段
$mysqli
,并在构造函数中初始化它,然后通过
$this->mysqli
使用它:

class blog {  
    private $mysqli;

    function __construct(mysqli $mysqli) {
        $this->mysqli = $mysqli;
    }

    function show () {
        // Code working on $this->mysqli here
    }
}

要将其存储在类中,请执行以下操作:

$blog = new blog($mysqli);
$blog -> show();
class blog {
    private $mysqli;
    function __construct($dbi) {
        $this->mysqli = $dbi;
    }        
    function show () {
    $this->mysqli->query(); //example usage
    // Code working on $mysqli here
    }
}
然后在代码中使用该类:

$blog = new blog($mysqli);
$blog->show();

这意味着我必须一直编写$This->mysqli而不是$mysqli,对吗?如果是这样,有什么办法可以避免吗?是的,在你的课堂上,你必须使用
$this->mysqli
来访问该字段。你不能回避。谢谢,想想我的最后一个问题是一个相当愚蠢的问题。我只需要写一次。非常感谢。如果您将其分配给函数顶部的一个私有范围变量,您可以这样做,但不建议这样做。它需要一个对象类型为
mysqli
的变量。