php链接了类中的函数

时间:2013-02-04 19:45:25

标签: php oop

本声明中发生了什么?

$this->load->view("index.php");

我在CodeIgniter和其他地方看到过这种语法,其中代码在一个类中,因此是“$ this”,它引用“load”或其他一些方法然后指向它看起来像的方法/函数。

有人可以向我解释一下“装载”是什么吗?不在CodeIgniter上下文中,而是通用PHP。我怎么写一个允许这个的课?

我尝试了以下但它不起作用。

<?php

class myObject {

    private $x = 0;

    function amethod()
    {

       function embeddedFunc()
       {

            $this->x += 7;

            return $this->x;
       }

       return embeddedFunc();
    }
}

$object = new myObject();

echo $object->amethod->embeddedFunc();

?>

当我看到这一点时,我正试图绕过实际发生的事情。

2 个答案:

答案 0 :(得分:1)

在这种情况下,load是类的属性,该类是具有view()函数的对象。例如:

class test {
    public $load;
    public function __construct() {
        $this->load = new test2();
    }
    public function step1() {
        $this->load->step3('Updated text');
    }
}
class test2 {
    public function step3($display_text) {
        echo $display_text;
    }
}
$tester = new test();
$tester->step1();

由于load是对象的实例,因此您可以继续运行该实例的函数。希望这会有所帮助。

答案 1 :(得分:0)

在PHP中, $ this-&gt; 是访问类成员变量所必需的。这有点令人困惑,你必须严格地写 this-&gt; ,但另一方面你不必声明它。

 class Foo {

   function bar() {

      $this->myVariable = 8;   // this is OK

   } // bar() 

 } // class Foo

所以 $ this-&gt; load-&gt; view()指的是当前对象的 load 属性,该属性包含一个具有view()方法的对象。训练你的眼睛切割领先 this-&gt; 并训练你的手总是写它。就像你已经学会了总是写出'$'标记一样。