php-op如何使用类中的属性和方法



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

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

我知道这毫无意义,这只是一个例子。我需要理解的是,书写的方式是否正确;感谢您的帮助。

$this断章取义,只能在类定义中使用(在内部方法等内部)。

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

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

编辑
此外,使用getter和setter方法被认为是一种很好的做法。重点是不要直接访问属性,而是通过抽象层方法访问。

class MyClass {
    private $property = "Hello World!";
    public function getProperty() {
        return $this->property;
    }
}
$obj = new MyClass();
$obj->getProperty();

这样,您就可以更好地控制查看属性的内容、方式和时间(例如,您可以要求数据库连接才能查看或限制访问)。

还要注意,属性本身被声明为private,因此来自类内部外部的直接访问受到限制。


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


除此之外,你很好。

最新更新