2012-07-24 62 views
0

我正在調試一個站點 我不得不使用我以前不習慣的類。PHP類基礎知識:在課堂上傳遞值

在這個網站有這個類,處理$this,但似乎沒有任何變量傳遞給類。 類是這樣

class myclass extends otherclass{ 

    function dosmthtomyclass{ 
     print_r($this); 
    } 
} 

function dosmttomyclass打印的陣列。

有一堆變量在類中定義了保護,但似乎沒有爲這些變量指定任何特定值,並且類中沒有構造函數來傳遞該值。

我非常困惑,因爲變量必須從哪裏傳遞。 這可能是一些非常基本的東西,但任何幫助將不勝感激。 將變量傳遞給類的可能方式是什麼

+0

「擴展其他類」 – Yehonatan 2012-07-24 08:42:54

+0

[http://php.net/manual/en/language.oop5.php](http://php.net/manual/en/language.oop5.php)這應該有助於清除一些混淆...... – faino 2012-07-24 08:43:47

+0

@diEcho那不是真的:'$ this'總是指在其上調用方法的對象。 A甚至無法想象任何結構,「指所有方法和變量」;) – KingCrunch 2012-07-24 08:47:20

回答

0

這是因爲MyClass的正從otherClass數據......這樣的:

<?php 
class otherclass{ 
    public $name="Mike"; 
} 

class myclass extends otherclass { 
    function dosmthtomyclass() { 
     print_r($this); 
    } 
} 

$test=new myclass(); 
$test->dosmthtomyclass(); //prints "[name] => Mike" 
1

$this是指當前對象。根據PHP documentation

僞變量$這可以在當一個方法是從 對象上下文中調用。 $這是對調用對象 的引用(通常是該方法所屬的對象,但如果方法是從 輔助對象的上下文靜態調用的,則可能是另一個對象)。

這裏是一些關於它的詳細解釋。它可以幫助你瞭解

What does the variable $this mean in PHP?

+0

不,'$ this'不是[關鍵字](http://php.net/reserved.keywords)... ///現在好了;) – KingCrunch 2012-07-24 08:48:19

+0

沒問題,所以它是一個僞變量。修正:) – 2012-07-24 08:50:37

0

你需要通過手動和/或教程在OOP。因爲這是你理解OOP的唯一方法。以此開始:http://www.php.net/manual/en/language.oop5.basic.php

$ this指的是對象的當前實例。閱讀關於PHP +可見性的內容,瞭解爲什麼私有變量/方法對子類(擴展類)不可訪問。

祝你好運!

0

$this指的是該類的當前對象。執行下面的代碼更加清晰:

<?php 
class abc { 
    var $val = 3; 

    function show() 
    { 
     print_r($this); 
    } 
} 

$ob = new abc(); 
$ob->show(); 
0

也許在使用PHP類可以幫助你的一些背景:

$這是用來指類中的層次結構。 例如,你可以有這樣一類:

class Phpclass{ 

    public function main(){ 
     echo "public function called<br/>"; 
     $this->helloworld(); 
    } 

    private function helloworld(){ 
     echo "hello world"; 
    } 

} 

$phpclass=new Phpclass(); 
$phpclass->main(); 

這個類是將變量$ phpclass被實例化對象的藍圖。由於main()是類中的一個plublic函數,因此可以從類外調用它。private函數只能在類內調用,所以main()函數使用$ this作爲類本身的標識符來調用它自己內部的私有函數helloworld()。沒有$ this,對象不會知道你指的是一個函數。

首先,上面會回顯出「公共功能叫」,然後是「你好世界」。