在这个例子中,php类如何传递值

时间:2015-08-28 02:45:58

标签: php class

<?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;颜色。

3 个答案:

答案 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)的字段为colorApple类型的新已投放对象也是如此。

从概念上讲,这就是解释器的作用:

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();
    }
}