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

我正在关注ACL啧啧。 它使用了这段代码。

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

    function __constructor($userID = '')
    {

    }
}

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

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

b)我的IDE(Panic Coda)。 将__construct作为构造函数的正确语法。 上面的代码已经使用了__constructor。 哪一个是正确的? 据我所知,在PHP4中,构造函数的名称应该与类名相同,如果是这样的话,那么__construct和__constructor之一和PHP5中的相同?

谢谢


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

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


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

__construct()是构造函数的正确方法名称。 由于具有与该类相同名称的PHP 5.3方法不再被视为构造函数 - 它只是一种常规方法。

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


这个示例类有PHP4和PHP5的组合。

  • 变量声明使用了PHP4语法,并且PHP5也是100%。
  • 在PHP5中,您可以将成员变量声明为privatepublicprotected
  • 甚至PHP5函数可以是privatepublicprotected
  • 但是这些访问器类型与PHP4不兼容。
  • 类构造函数使用了PHP5语法,但它与PHP4不兼容。
  • 既然你是一名学习者,请遵守PHP的命名约定,使用类名命名包含类的脚本文件。 并且不要在同一个脚本文件中使用多个类。 所有PHP文件必须以扩展名.php以确保安全。

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

    链接地址: http://www.djcxy.com/p/60255.html

    上一篇: need help understanding the declaration of class properties

    下一篇: client side web service