In PHP, you use the
self
keyword to access static properties and methods.
The problem is that you can replace
$this->method()
withself::method()
anywhere, regardless if method() is declared static or not. So which one should you use?
Consider this code:
class ParentClass {
function test() {
self::who(); // will output 'parent'
$this->who(); // will output 'child'
}
function who() {
echo 'parent';
}
}
class ChildClass extends ParentClass {
function who() {
echo 'child';
}
}
$obj = new ChildClass();
$obj->test();
In this example,
self::who()
will always output ‘parent’, while $this->who()
will depend on what class the object has.
Now we can see that
self
refers to the class in which it is called, while$this
refers to the class of the current object.
So, you should use
self
only when $this
is not available, or when you don’t want to allow descendant classes to overwrite the current method.
No comments:
Post a Comment
Thank you for your Comment....