![](/img/trans.png)
[英]Php/OOP How to avoid instances of the same class to access private properties/methods from other objects
[英]php oop how to work with properties and methods form a class
我是php oop的新手,我对类有一些了解,但是我仍然不了解如何在创建的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");
我知道这没有任何意义,这只是一个例子。 我需要了解的是书写方式是否正确; 任何帮助表示赞赏。
$this
是脱离上下文的,只能在类定义中使用(在内部方法等内部)。
在函数之外,我们使用$myObject->lightspeed
;
另外,我假设您正在使用checkLightSpeed()
方法设置lightspeed
属性。
编辑!
此外,拥有吸气剂和吸气剂方法被认为是一种好习惯。 关键是不要直接访问您的属性,而要通过抽象层方法。
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()
是什么,因此我省略了它们,但这是关键部分)。
除此之外,你还不错。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.