php构造函数不工作

php构造函数不工作,php,construct,Php,Construct,我对php构造器非常陌生,我从java就知道了。但由于某些原因,这一个没有运行。我正在学习一个教程,我似乎无法获得1而只能获得0。以下是涉及的两个脚本: <?php class dbConnection{ protected $db_conn; public $db_name = 'todo'; public $db_user = 'root'; public $db_pass = ''; public $db_host = 'localhost'

我对php构造器非常陌生,我从java就知道了。但由于某些原因,这一个没有运行。我正在学习一个教程,我似乎无法获得
1
而只能获得
0
。以下是涉及的两个脚本:

<?php

class dbConnection{
    protected $db_conn;
    public $db_name = 'todo';
    public $db_user = 'root';
    public $db_pass = '';
    public $db_host = 'localhost';

    function connect(){
        try{
            $this->db_conn = new PDO("mysql:host=$this->db_host;db_name=$this->db_name",$this->db_user,$this->db_pass);
            return $this->db_conn;
        }
        catch(PDOException $e)
        {
            return $e->getMessage();
        }
    }

}

?>



您应该尝试使用
\u construct()
代替
ManageUsers()

此外,我不太确定您在构造函数中想要实现什么(请参见下面的标记):

函数ManageUsers(){
$db_connection=new dbConnection();
$this->link=$db_connection->connect();

return$this->link;//同意-您使用的方法是老式的PHP4方法-您应该使用上面解释的_construct()方法

本页介绍PHP5中的construct()和destruct()

您不能从构造函数tho返回,也许您可以将链接设置为公共属性并像这样直接访问它

$user = new ManageUsers();
$link = $user->$link;

为什么你认为你的构造函数没有运行?值得一提的是,$constructed在你的printout方法中是空的,因为那是一个局部范围变量。为了使它成为对象的一部分,两个实例都应该是$this->constructed。你的代码应该会触发几个错误消息。我想你还没有配置PHP来显示错误和消息我们盲目地编码。这是在继续之前需要解决的问题;如果没有错误消息的帮助,就不可能正确地编码。这里有一个。关于错误处理,您不应该使用
try/catch
构造将异常降级为纯字符串。在Java中也是如此。这是我下面的教程最有可能的是,这段代码遗漏了一些重要的东西,因为据我所知,它只足以建立连接并回显创建新用户的尝试。如果添加了一行,则应打印1。但我的代码和教程中的代码有差异,其中…/>。function ManageUsers(){ $db_connection = new dbConnection(); $this->link = $db_connection->connect(); return $this->link; //<--? $constructed = 'Construct'; //<--? }
// constructor
function __construct() {
 ManageUsers();
}


function ManageUsers(){
    $db_connection = new dbConnection();
    $this->link = $db_connection->connect();
    $constructed = 'Construct';
}
$user = new ManageUsers();
$link = $user->$link;