我是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");
我知道这没有任何意义,这只是一个例子。我需要了解的是,如果写的方式是正确的;任何帮助表示赞赏。
答案 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()
是什么,所以我省略了它们,但这是关键部分。)
除此之外,你很好。