2012-01-28 27 views
0

我是新來的php oop,我有一些想法重新類,但我仍然沒有得到解決如何在創建的對象中使用它的屬性和方法。我需要了解下面的代碼是否正確,如果不是我做錯了。php oop如何使用屬性和方法形成一個類

我假設我有一個類可以爲我做任何事。讓我們把它叫做MyClass類{....}

現在我用它創建一個對象,並嘗試用它的方法和屬性這樣的工作: -

$myObject = new myClass; 

$myObject->checkSpeedLight(); // method for checking the speed 

if($this->lightSpeed > 10000) echo (「slow down!」); // property defined with a value of 10000 

if($this->lightSpeed =< 10000) echo (「Speed up!); 

$myObject->keepLightingUp(); 

$myObject->sleep(); 

echo ("ligth up"); 

它沒有任何意義,我知道,它只是一個例子。我需要明白的是,如果書面的方式是正確的,任何幫助讚賞。

回答

4

$this不在上下文中,它只能在類定義內部使用(在內部方法等內部)。

功能以外,我們使用$myObject->lightspeed;

此外,我假設您正在使用checkLightSpeed()方法設置lightspeed屬性。

編輯!
此外,有一個獲取和設置方法是一種良好的做法。關鍵是不要直接訪問你的屬性,而是通過抽象層方法。

class MyClass { 
    private $property = "Hello World!"; 

    public function getProperty() { 
     return $this->property; 
    } 
} 

$obj = new MyClass(); 
$obj->getProperty(); 

這種方式,你有過什麼,何時以及如何查看你的財產(例如,您可以要求以查看它,或限制訪問一個數據庫連接)的更多控制。

此外請注意,該屬性本身被宣佈爲私人,所以直接從外部類的膽量訪問是受限制的。


舉例來說,這是PHP使我SpeedOfLight類:

<?php 

    /** 
    * @class     SpeedOfLight 
    * 
    * @property $speedOfLight private 
    * 
    */ 
    class SpeedOfLight { 

     private $speedOfLight; 

     public function checkSpeedOfLight() { 
      $this->speedOfLight = 300000000; 
     } 

     public function getSpeedOfLight() { 
      return $this->speedOfLight; 
     } 

    } 

    #Begin testing! 
    $obj = new SpeedOfLight(); 
    $obj->checkSpeedOfLight(); 

    if ($obj->getSpeedOfLight() <= 100000000) { 
     echo "Speed up!"; 
    } 
    elseif ($obj->getSpeedOfLight() >= 350000000) { 
     echo "Slow down!"; 
    } 
    else { 
     echo "Just right!"; 
    } 

(我不知道該怎麼keepLightSpeed()sleep()是讓我忽略他們,但是這是關鍵的部分)。


除此之外,你很好。

+0

謝謝。讚賞。 – firefiter 2012-01-28 20:23:40

+1

我想補充說,它會更好地添加getset函數。這使得人們可以保護值並確保它只是只讀,只讀或只寫(!?)。 – 2012-01-28 20:28:24

+0

嗨,埃德,謝謝你的補充。你能否更具體一些?我如何以及在哪裏添加get和set函數? – firefiter 2012-01-28 20:31:07