2

开始一个新的 PHP 项目并决定经过几年的 PHP 开发,我想我应该真正开始使用 PHP 类。我已经习惯了 C++ 世界中的课程,因此在将这些知识移植到 PHP 时,我不太确定一些事情。

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

这些类本身很可能是单例,所以我不确定是实际使用一个类,还是只是在函数前面加上一个标识符。

4

3 回答 3

6

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

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

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

作为旁注,您应该避免在 PHP 中使用单例 - 使用它们不会发现性能/内存增益,因为每个同时执行的脚本都被围在自己的内存空间中。

于 2012-12-19T16:14:46.207 回答
2

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

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

可以使用self::$variable或访问静态变量和函数self::function()

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

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

关于使用函数对象......取决于你。您是否打算稍后扩展代码以添加更多功能?所有功能都有些相关吗?如果它们是单例函数,那么只写一个函数而不是一个类是没有害处的。这实际上取决于您要完成的工作。

于 2012-12-19T16:16:44.190 回答
0

是的,您必须$this在访问类方法或变量时使用。

您需要记住 PHP 不需要声明变量,因此请想象以下情况:

<?
class A {
  public $a = 'Hello World!';
  function hello() {
    $a = 'hello';
    echo $a;
  }
}

$object = new A();
echo $object->hello();

$a would be local scope and $this->a would be the class variable.

于 2012-12-19T16:18:23.493 回答