php oop如何使用属性和方法组成一个类

时间:2012-01-28 20:19:02

标签: php oop

我是php oop的新手,我对Classes有一些想法,但我仍然不知道如何在创建的Object中使用它的属性和方法。我需要了解下面报告的代码是否正确,如果不是我做错了。

我假设我有一个可以为我做任何事情的课程。我们称之为Class 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");

我知道这没有任何意义,这只是一个例子。我需要了解的是,如果写的方式是正确的;任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:4)

$this不在上下文中,只能在类定义中使用(在内部方法内部等)。

在函数之外,我们使用$myObject->lightspeed;

此外,我假设您使用lightspeed方法设置checkLightSpeed()属性。

修改<!/强>
此外,使用 getter和setter 方法被认为是一种好习惯。关键是不要直接访问你的属性,而是通过抽象层方法。

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()是什么,所以我省略了它们,但这是关键部分。)


除此之外,你很好。