Php 如何通过构造传递带参数的对象

Php 如何通过构造传递带参数的对象,php,class,constructor,Php,Class,Constructor,我有一门课,它依赖于其他几门课。因此,我通过构造函数传递这些其他类,这一切都很好。但是,当我传递一个需要为自己的构造函数提供参数的类时,我会收到一个错误消息:“mysql缺少参数1::\uu construct()…”。通过具有所需参数的类传递对象的最佳方法是什么 如果您发现此设计中存在任何潜在缺陷,请告诉我。我对面向对象相当陌生,因此仍在学习。 我目前拥有但不工作的一个例子: class mysql{ function __construct($memcache){ /

我有一门课,它依赖于其他几门课。因此,我通过构造函数传递这些其他类,这一切都很好。但是,当我传递一个需要为自己的构造函数提供参数的类时,我会收到一个错误消息:“mysql缺少参数1::\uu construct()…”。通过具有所需参数的类传递对象的最佳方法是什么

如果您发现此设计中存在任何潜在缺陷,请告诉我。我对面向对象相当陌生,因此仍在学习。

我目前拥有但不工作的一个例子:

class mysql{
    function __construct($memcache){
        // Construct the object 
    }
}
class company{
    function __construct($databases,$connections,$mysql,$facebook){
        // Construct the object

        // Make the MySQL class available to all the methods
        $this->mysql = $mysql;
    }
}

// Initialize the objects (Company, MySQL, Memcache and Facebook)
$memcache = new memcache;
$facebook = new Facebook($facebook_config);
$mysql = new mysql($memcache);
$company = new company($_DATABASES,$_CONNECTIONS,$mysql,$facebook);
已解决的UDPATE


上面的代码实际上是正确的,问题是因为我在我的一个方法末尾调用了
\uu construct()
,而我忘记了传递$memcache参数

您的代码似乎正常,您是什么时候出错的?我也这么认为!我刚刚发现了错误。当我试图通过company类从mysql对象调用方法时,就会发生这种情况。我会仔细检查我的代码,确保我没有遗漏任何东西,但我肯定会在初始化类的地方传递参数。你应该在给定的对象实例前面添加一个&。这将创建对实例的引用,而不是将其复制到方法。您必须在方法的标题中添加&函数uu构造($databases,$connections,&$mysql,&$facebook){…};是的,我知道参考文献,但从未真正理解它们的意义。这会减少脚本的资源使用吗?使用引用的好处是什么?@BenCarey Reference用作指向另一个变量或对象的链接。我们仍然只有一个变量/对象,但可能有两个或多个名称。例如,如果我们做
$a=5$b=&$a那么$a实际上是我们唯一的变量,$b只是指向$a的链接,如果我们更改$a,那么$b也会更改。而且,由于$b是指向$a的链接,而$a是唯一的真实值,如果我们更改$b,那么我们也会更改$a。