0

这个声明是怎么回事?

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

?>

当我看到这个时,我正试图围绕实际发生的事情来思考。

4

2 回答 2

1

在这种情况下,负载是类的属性,它是具有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它是一个对象的实例,您可以继续运行该实例的函数。希望这会有所帮助。

于 2013-02-04T20:32:31.497 回答
0

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

 class Foo {

   function bar() {

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

   } // bar() 

 } // class Foo

所以$this->load->view()指的是当前对象的load属性,它保存了一个具有 view() 方法的对象。训练你的眼睛剪掉开头的this->并训练你的手总是写出来。就像你已经学会了总是写前导“$”标记一样。

于 2013-02-04T20:43:16.500 回答