2012-01-28 30 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