📜  什么时候在PHP使用 self 而不是 $this ?

📅  最后修改于: 2022-05-13 02:24:09.544000             🧑  作者: Mango

什么时候在PHP使用 self 而不是 $this ?

selfthis是两个不同的运算符,分别用于表示当前类和当前对象。 self 用于访问静态或类变量或方法, this 用于访问非静态或对象变量或方法。
所以当需要访问属于类的东西时使用 self ,当需要访问属于类对象的属性时使用 $this 。
self运算符: self运算符表示当前类,因此用于访问类变量或静态变量,因为这些成员属于一个类而不是该类的对象。
句法:

self::$static_member

示例 1:这是显示使用 self运算符的基本示例。

php


php
bar();
?>


php
$non_static_member;
        // accessing non-static variable
    }
}
 
new GFG();
?>


php
print();
    }
}
 
class Child extends GFG {
    function print() {
        echo 'Child Class';
    }
}
 
$parent = new Child();
$parent->bar();
?>


输出:

GeeksForGeeks

示例2:本示例是一个使用self. 在PHP中利用多态行为的演示。

PHP

bar();
?>

输出:



Parent Class:

这里运行父类方法是因为self运算符代表类,因此我们看到主类方法只是父类的方法。
$this运算符: $this,正如“$”符号所暗示的那样,是一个对象。 $this 代表一个类的当前对象。它用于访问类的非静态成员。
句法:

$that->$non_static_member;

示例 1:这是显示 $this运算符使用的基本示例。

PHP

$non_static_member;
        // accessing non-static variable
    }
}
 
new GFG();
?>

输出:

GeeksForGeeks

示例 2:此示例是使用 self.php 的PHP中多态行为的演示。

PHP

print();
    }
}
 
class Child extends GFG {
    function print() {
        echo 'Child Class';
    }
}
 
$parent = new Child();
$parent->bar();
?>

输出:

Child Class

在这里,没有对任何类的引用,并且指向子类的对象正在调用子类中定义的方法。这是PHP中动态多态的一个例子。