我正在追踪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中是相同的吗?谢谢
答案 0 :(得分:7)
a)var
关键字确实可能是为了兼容PHP 4。 var
与PHP 5的public
等效。它也可以在PHP 5中运行,但是看到PHP 4的时间过去了,可以安全地转到public
,private
和protected
。
b)__construct
,或PHP 4兼容声明的类名,是唯一正确的方法。 __constructor()
不会声明构造函数方法。
答案 1 :(得分:2)
在PHP4中,所有成员和方法都是静态的和公共的。 var
绝对是PHP4语法。在PHP5中,您应该使用public
,private
和protected
。
__ construct()是构造函数的正确方法名称。由于与类同名的PHP 5.3方法不再被视为构造函数 - 它只是一个常规方法。
你一定要找到最新的教程。
答案 2 :(得分:1)
这个示例类混合了PHP4和PHP5。
private
,public
或protected
。private
,public
或protected
。由于您是学习者,请遵守PHP的命名约定,使用类名命名包含类的脚本文件。并且不要在同一个脚本文件中使用多个类。所有PHP文件必须以扩展名.php
结束,以确保安全。
此外,您可以在类中使用静态方法(不要在同一个类中混合静态和动态方法),并且可以在不创建Http::DoPost(...)
之类的对象的情况下调用它们。但是$this
不能在静态方法中使用。