将PDO db对象实例传递给其他类函数

Con*_*Gil 2 php mysql database pdo

我在一个包含的文件中有一个PDO对象,当我在主页面中使用它时效果很好.当我将它传递给一个对象以在其中使用它时它根本就不起作用.

我已经尝试直接和参考(函数xxxx(&dbd){this - > $ db =&dbd}),根本不工作,但如果我传递另一种类型的值(作为一个字符串),这是完美的.如果我发送$ db ="olaola"它可以工作,但如果它是PDO则失败.我是php和英文的新手,请耐心等待:P

包含文件:

$username = "root";
$password = "*****";
$host = "localhost";
$dbname = "dbname";
$db = NULL;
$options = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8');

try
{
    $db = new PDO("mysql:host={$host};dbname={$dbname};charset=utf8", $username, $password, $options);
}
catch(PDOException $ex)
{
    die("Failed to connect to the database: " . $ex->getMessage());
}

$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
Run Code Online (Sandbox Code Playgroud)

在主要:

$pagMenu = new pages($db);
Run Code Online (Sandbox Code Playgroud)

在页面类:

class pages {

    private $db;

    function __construct($db) { 
        $this->$db = $db;
    }
}
Run Code Online (Sandbox Code Playgroud)

dec*_*eze 6

语法是:

    $this->db = $db;
Run Code Online (Sandbox Code Playgroud)

没有$this->$db.

  • 因为字符串在这里解析为适当的"变量变量",或者更确切地说是"变量属性".对象不是有效的变量名称. (3认同)

Die*_*Saa 5

你应该做

$this->db = $db;
Run Code Online (Sandbox Code Playgroud)

代替

$this->$db = $db;
Run Code Online (Sandbox Code Playgroud)

第二种形式是变量变量,这意味着您将参数的值分配给名为变量内容的变量,如果该内容是PDO对象,则会返回错误.