嗨,我有一个类,但它是如何工作的,我不理解它。
<?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没有(),所以它只是一个变量;)
如果你还有什么问题,尽管问。
(哦,是的,对不起,我没有改变你的脚本只是为了看到更容易的变量。