用于类实例的PHP双箭头表示法

时间:2011-07-24 12:42:20

标签: php oop

如果有人向我解释在PHP中使用双箭头符号,我将不胜感激。我建议是一个双类和实例化的类,但我不确定。一些例子会很好。感谢。

这样的事情:

$obj->prop->methd();

5 个答案:

答案 0 :(得分:12)

这只表明$obj的属性是某种类而不是原子变量。内部类有一个方法method(),它从第二个箭头操作符调用。您还可以通过第二个箭头访问内部类的属性。

// Access the inner property
echo $obj->prop->inner_property
// 1234

// Call the inner method
$obj->prop->method();
// I'm the method!

类定义可能类似于:

class obj
{
   // Will hold an instance of class Something
   public $prop;

   public function __construct() {
      $this->prop = new Something();
   }
}

class Something 
{
   public $inner_property = 1234;

   public function method() {
     echo "I'm the method!";
   }
}

答案 1 :(得分:5)

举个例子,举两个类:

<?php

class a {
    function test() {
        echo "test";
    }
}

class b {
    var $prop = null;
    function __construct() {
        $this->prop = new a();
    }
}

$obj = new b();
var_dump($obj);
$obj->prop->test();

?>

http://codepad.org/aEeRs45A

a$prop实例化并调用构造函数时为b提供方法。 $prop中的b是类b的对象。

答案 2 :(得分:2)

只要您的方法返回一个对象,您也可以调用该对象的方法,依此类推。

所以这是一个如何链接类方法的例子。

<?php
class MyTest {
    public function Hello() {
        echo "Hello ";
        return $this;
    }

    public function World() {
        echo "World!";
    }
}

$h = new MyTest();
$h->Hello()->World();
?>

答案 3 :(得分:1)

prop$obj的属性,它也是一个对象。因此,要访问prop的方法,必须再次使用箭头操作符。

答案 4 :(得分:1)

$ obj-&gt; prop是变量定义,如

class class1{
    public $prop = new class2;
}

class2{
    function methd(){
        echo "methd function called";
    }
}


$obj->prop->methd();