PHP:从类中调用类函数

时间:2012-12-19 16:10:39

标签: php class

启动一个新的PHP项目,并决定在PHP开发几年后,我认为我应该开始使用PHP类。我已经习惯了C ++世界中的类,所以在将这些知识移植到PHP时,有一些我不太确定的事情。

在C ++中,您可以自动访问没有前缀的任何类变量,在PHP中,您似乎需要使用this->为所有此类访问(变量和函数)添加前缀。我知道this是什么(或者至少我认为是指向当前类实例的指针),但我不确定它是必需的还是首选的,或者是否有任何替代方案。我的类将在相同类中使用其他函数(即,本身),因此每次都必须输入this->会很快耗费时间。

类本身很可能是单例,所以我不确定是否实际使用类,或者只是在函数前加上标识符。

3 个答案:

答案 0 :(得分:6)

您需要引用该成员所属的对象才能访问该成员。

每个方法调用或属性访问都以$variable->为前缀 - $this是一个引用当前对象实例的魔术变量。它的使用不是可选的。

这是(除其他原因外)因为并非PHP中的每个函数都是一个方法,还有全局函数。如果引用函数而不将其与对象关联,则假定它是一个全局函数。

作为旁注,你应该避免在PHP中使用单例 - 使用它们没有任何性能/内存增益,因为每个并发执行的脚本都被花园包围在它自己的内存空间中。

答案 1 :(得分:2)

“指针”(->)!= C ++指针。

$this表示当前的类和实例。使用$this->variable;$this->function();访问所有变量。

可以使用self::$variableself::function()

访问静态变量和函数

在类实例之外,您必须指明类实例:$foo->variable;$foo->function();

据我所知,如果不使用$this->self::

,就无法访​​问类中的public / private / static / constant变量

参考使用函数对象......由你决定。您是否计划稍后扩展代码以添加更多功能?所有功能都有些相关吗?如果它们是单例函数,那么仅仅编写一个函数而不是一个类是没有害处的。这实际上取决于你想要完成的任务。

答案 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将是类变量。