<?php
class Apple
{
public function showColor()
{
return $this->color;
}
}
class Banana
{
public $color;
public function __construct()
{
$this->color = "Banana is yellow";
}
public function GetColor()
{
return Apple::showColor();
}
}
$banana = new Banana;
echo $banana->GetColor();
?>
我不知道Apple会怎样从香蕉中获得$ this-&gt;颜色。
答案 0 :(得分:0)
香蕉课:
public function GetColor()
{
return Apple::showColor($this);
}
Apple课程:
public static function showColor($banana)
{
return $banana->color;
}
答案 1 :(得分:0)
您的代码中出现了一些问题。
语法上,你的代码不好。
它应该是这样的:
#set( $USER = "Your name" )
/**
* Created by ${USER} on ${DATE}.
*/
使用这种良好的语法,您无法获得任何值,因为Apple类中没有定义颜色。
答案 2 :(得分:0)
这是Apple
类从color
类中获取Banana
的方式:
实际上,如果您运行启用了E_STRICT
错误报告的代码,则会生成警告:
不应静态调用非静态方法
Apple::showColor()
, 从...中的不兼容上下文中假设$this
这意味着PHP解释器将$this
类型的Banana
强制转换为不兼容的Apple
对象。 “不兼容类型转换”就像将Banana
的类型名称重命名为Apple
的类型名称一样! $this
(类型为Banana
)的字段为color
,Apple
类型的新已投放对象也是如此。
从概念上讲,这就是解释器的作用:
class Banana
{
.
.
.
public function GetColor()
{
$apple = cast($this, 'Apple'); // There is no such a cast() function in PHP,
// it is for demonstration purposes only!
// The $apple now has what $this already have!!
return $apple->showColor();
}
}