PHP OOP confusion


PHP OOP confusion

嗨,我有一个类,但它是如何工作的,我不理解它。

<?php
class Ford
{
    public $founder = "Henry Ford";
    public $headquarters = "Detroit";
    public $employees = 164000;
    public function produces($car)
    {
        return $car-> producer == $this;
    }
}
class Car
{
    public $color;
    public $producer;
}

$ford = new Ford();
$car = new Car();
$car-> color = "Blue";
$car-> producer = $ford;
echo $ford-> produces($car);
echo $ford-> founder;
?>

请任何人帮助我实际上是什么发生在我的代码..上面印着"亨利·福特"什么是"return $car-> producer == $this;"

?我不太明白……

将Ford实例$ford设置为$car的"生产者"。

然后你把$car转到$ford,问

$car->producer == $this; //did you produce this car? True or False

$car->producer$this都引用同一个对象,因此答案为真。

好吧,让我们一步一步来。

class Ford {
    public $founder = "Henry Ford",
           $headquarters = "Detroit",
           $employees = 164000;
}

这是一个已经定义了3个公共变量的Ford Class。

然后,在类Ford中有一个名为produces的函数。

public function produces($car) {
    return $car->producer == $this;
}

这将返回1…我们很快就会知道的。

另一个类,命名为Car,有两个公共变量,但这次它不等于任何东西

class Car {
    public $color,
           $producer;
}

然后是

$ford = new Ford();
$car = new Car();

因此,您将ford变量($ford)设置为ford的实例,并将$car设置为类car的实例。调用里面的内容是可以的。

$car->color = "Blue";
$car->producer = $ford;

那么,现在你定义了$color和$producer里面的内容。到目前为止,一切正常。

然后是这个:

$car->color = "Blue";
$car->producer = $ford;

你定义了$color是什么:一个字符串'Blue',你的$car->producer(它是变量$producer)现在是你的类Ford的实例。因为别忘了,你已经定义了ford变量

里面的内容
$ford = new Ford();

所以当你做

echo $ford->produces($car) 

您将$car = new car()作为参数你返回$car->producer(等于$ford,因为你定义了它)等于$this,它和$car->producer是同一个对象…所以答案是肯定的,它给你一个1代表真。

然后是

echo $ford->founder; 

它将回显Henry Ford字符串,在Ford类中定义为公共变量。这是因为你不能说echo $founder,因为$founder变量只存在于Ford类中。这都是关于范围的问题。所以你输入$ford->founder;来获取变量!

最后,echo $ford->产生();echo $ford->founder;与您在Ford类中调用的是不同的。Founder没有(),所以它只是一个变量;)

如果你还有什么问题,尽管问。

(哦,是的,对不起,我没有改变你的脚本只是为了看到更容易的变量。