开始一个新的PHP项目,并决定在经过几年的PHP开发后,我认为我真的应该开始使用PHP类。我习惯了C++世界中的类,所以在将这些知识移植到PHP时,有一些事情我不是很确定。
在C++中,您可以自动访问任何没有前缀的类变量,而在PHP中,您似乎需要为所有此类访问(变量和函数)添加前缀this->。我知道this是什么(或者至少我认为是,指向当前类实例的指针),但我不确定它是必需的还是首选的,或者是否有其他选择。我的类将在同一个类中大量使用其他函数(例如,它本身),所以每次都必须输入this->将非常耗时。
类本身很可能是单例的,所以我不确定是实际使用一个类,还是仅仅在函数前面加上一个标识符。
发布于 2012-12-20 00:16:44
“C++”(->) !=指针。
$this是指当前的类和实例。所有变量都可以使用$this->variable;或$this->function();进行访问。
可以使用self::$variable或self::function()访问静态变量和函数
在类实例外部,必须指定类实例:$foo->variable;或$foo->function();
据我所知,如果不使用$this->或self::,就无法访问类中的公共/私有/静态/常量变量
关于使用函数的对象...你说了算。您是否计划稍后扩展代码以添加更多功能?所有的函数都有某种程度的关联吗?如果它们是单例函数,那么只编写一个函数而不是一个类并没有什么坏处。这真的取决于你想要实现的目标。
发布于 2012-12-20 00:14:46
需要引用成员所属的对象才能访问成员。
每个方法调用或属性访问都以$variable->为前缀- $this是一个引用当前对象实例的神奇变量。它的使用不是可选的。
这是因为(还有其他原因)因为PHP中的每个函数都不是方法,还有全局函数。如果引用函数时未将其与对象关联,则假定该函数为全局函数。
作为附注,您应该避免在PHP中使用单例-使用它们不会获得性能/内存增益,因为每个并发执行的脚本都被封闭在自己的内存空间中。
发布于 2012-12-20 00:18:23
是的,在访问类方法或变量时,您必须使用$this。
您需要记住,PHP不要求声明变量,因此请想象以下情况:
<?
class A {
public $a = 'Hello World!';
function hello() {
$a = 'hello';
echo $a;
}
}
$object = new A();
echo $object->hello();$a将是局部作用域,而$this->a将是类变量。
https://stackoverflow.com/questions/13956451
复制相似问题