启动一个新的PHP项目,并决定在PHP开发几年后,我认为我应该开始使用PHP类。我已经习惯了C ++世界中的类,所以在将这些知识移植到PHP时,有一些我不太确定的事情。
在C ++中,您可以自动访问没有前缀的任何类变量,在PHP中,您似乎需要使用this->
为所有此类访问(变量和函数)添加前缀。我知道this
是什么(或者至少我认为是指向当前类实例的指针),但我不确定它是必需的还是首选的,或者是否有任何替代方案。我的类将在相同类中使用其他函数(即,本身),因此每次都必须输入this->
会很快耗费时间。
类本身很可能是单例,所以我不确定是否实际使用类,或者只是在函数前加上标识符。
答案 0 :(得分:6)
您需要引用该成员所属的对象才能访问该成员。
每个方法调用或属性访问都以$variable->
为前缀 - $this
是一个引用当前对象实例的魔术变量。它的使用不是可选的。
这是(除其他原因外)因为并非PHP中的每个函数都是一个方法,还有全局函数。如果引用函数而不将其与对象关联,则假定它是一个全局函数。
作为旁注,你应该避免在PHP中使用单例 - 使用它们没有任何性能/内存增益,因为每个并发执行的脚本都被花园包围在它自己的内存空间中。
答案 1 :(得分:2)
“指针”(->
)!= C ++指针。
$this
表示当前的类和实例。使用$this->variable;
或$this->function();
访问所有变量。
可以使用self::$variable
或self::function()
在类实例之外,您必须指明类实例:$foo->variable;
或$foo->function();
据我所知,如果不使用$this->
或self::
参考使用函数对象......由你决定。您是否计划稍后扩展代码以添加更多功能?所有功能都有些相关吗?如果它们是单例函数,那么仅仅编写一个函数而不是一个类是没有害处的。这实际上取决于你想要完成的任务。
答案 2 :(得分:0)
是的,在访问类方法或变量时,您必须使用$this
。
您需要记住PHP不要求声明变量,因此请考虑以下情况:
<?
class A {
public $a = 'Hello World!';
function hello() {
$a = 'hello';
echo $a;
}
}
$object = new A();
echo $object->hello();
$a
将是本地范围,$this->a
将是类变量。