需要帮助理解类属性的声明

时间:2010-12-27 14:56:12

标签: php oop

我正在追踪ACL tut。已经使用了这段代码。

class ACL
{
    var $perms = array();
    var $userID = 0;
    var $userRoles = array();

    function __constructor($userID = '')
    {

    }
}

但是我无法理解上述一些声明。

a)在上面的类中使用var关键字声明了class属性,在数据封装中,我们不必在声明属性之前使用public,private或protected关键字。上面的方法是针对PHP4的吗?或者它也适用于php5吗?

b)我的IDE(恐慌尾声)。将__construct作为构造函数的正确语法。上面的代码使用了__constructor。哪一个是正确的?根据我的PHP4知识,构造函数名称应该与类名相同,如果是这种情况那么__construct和__constructor一个在PHP5中是相同的吗?

谢谢

3 个答案:

答案 0 :(得分:7)

a)var关键字确实可能是为了兼容PHP 4。 var与PHP 5的public等效。它也可以在PHP 5中运行,但是看到PHP 4的时间过去了,可以安全地转到publicprivateprotected

b)__construct,或PHP 4兼容声明的类名,是唯一正确的方法。 __constructor()不会声明构造函数方法。

答案 1 :(得分:2)

在PHP4中,所有成员和方法都是静态的和公共的。 var绝对是PHP4语法。在PHP5中,您应该使用publicprivateprotected

__ construct()是构造函数的正确方法名称。由于与类同名的PHP 5.3方法不再被视为构造函数 - 它只是一个常规方法。

你一定要找到最新的教程。

答案 2 :(得分:1)

这个示例类混合了PHP4和PHP5。

  • 变量声明使用了PHP4语法,PHP5也是100%正常。
    • 在PHP5中,您可以将成员变量声明为privatepublicprotected
    • 即使是PHP5函数也可以是privatepublicprotected
    • 但这些访问者类型与PHP4不兼容。
  • 类构造函数使用了PHP5语法,但它与PHP4不兼容。

由于您是学习者,请遵守PHP的命名约定,使用类名命名包含类的脚本文件。并且不要在同一个脚本文件中使用多个类。所有PHP文件必须以扩展名.php结束,以确保安全。

此外,您可以在类中使用静态方法(不要在同一个类中混合静态和动态方法),并且可以在不创建Http::DoPost(...)之类的对象的情况下调用它们。但是$this不能在静态方法中使用。