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