2013-02-04 30 views
0

本聲明中發生了什麼?php鏈式功能

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

我已經看到這種語法CI中和其他地方,其中的代碼是一個類的內部,因此,「$這個」,和它引用的「負載」或某些其他方法中,然後指向一個方法/功能看起來像。

有人可以向我解釋什麼是「負載」在這個?不是在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

加載不是你的例子中的方法。這是一個屬性,如果我不得不猜測,用view()方法持有一個對象。 – cspray

+0

這是CI對象,加載是控制器,視圖是方法。你所做的並不是遵循這種模式。在你的情況下,取消嵌套該函數,並將它放在與另一個函數相同的級別,然後調用它$ object-> embeddedFunc() –

回答

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是一個對象,你可以繼續運行實例的函數的一個實例。希望有幫助。

0

在PHP中,$這 - >需要訪問一個類的成員變量。這有點令人困惑,你必須嚴格編寫this->,但另一方面你不必聲明它。

class Foo { 

    function bar() { 

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

    } // bar() 

} // class Foo 

所以$這 - >負載>視圖()是指當前對象的負載屬性,其保持具有視圖()方法的對象。訓練你的眼睛削減領先this->並訓練你的手總是寫。正如你已經學會總是寫出領先的'$'標誌一樣。