在PHP5中,使用self和$this有什么区别
什么时候合适
简短回答
使用
$this引用当前
对象使用self参考
现在的班级。换句话说,使用
$this->;成员对于非静态成员,
对静态成员使用self::$member
完整答案
以下是非静态和静态成员变量的正确使用$this和self的示例:
<;?php
X类{
私有$non_static_member=1;
私有静态$static_成员=2;
函数_u构造(){
echo$this->;非静态成员。“”
.self::$static_成员;
}
}
新X();
?>;
以下是非静态和静态成员变量使用$this和self的不正确的示例:
<;?php
X类{
私有$non_static_member=1;
私有静态$static_成员=2;
函数_u构造(){
echo self::$non_static_member''
.$this->;静态\u成员;
}
}
新X();
?>;
以下是成员函数的多态性示例,其中包含$this:
<;?php
X类{
函数foo(){
回显“X::foo()”;
}
功能条(){
$this->;foo();
}
}
类Y扩展X{
函数foo(){
回显“Y::foo()”;
}
}
$x=新的Y();
$x->;bar();
?>;
以下是通过对成员函数使用self抑制多态行为的示例:
<;?php
X类{
函数foo(){
回显“X::foo()”;
}
功能条(){
self::foo();
}
}
类Y扩展X{
函数foo(){
回显“Y::foo()”;
}
}
$x=新的Y();
$x->;bar();
?>;
想法是
$this->;foo()调用当前对象的确切类型的成员函数。如果对象是类型X,则它将调用X::foo()。如果对象是类型Y,它将调用Y::foo()。但是对于self::foo(),总是调用X::foo()
从http://www.phpbuilder.com/board/showthread.php?t=10354489:
借http://board.phpbuilder.com/member.php?145249-激光