在php中final static $this关键字主要是用在类中或对象中,下面我来把我学习final static $this笔记记录下来,有需要了解的朋友可参考参考. final关键字 php final关键字用来在一个函数或者类名称前面,表明该函数不能被重写或者该类不能被继承. 1、final方法不能被重写. 如果不希望类中某个方法被子类重写,只需要在这个方法前加上关键字final,即设置final方法. 实例代码如下: - <?php
- class ex1{
- final function fn1(){
- return "php";
- }
- }
- class ex2 extends ex1{
- function fn1(){
- return "html";
- }
- }
- $p= new ex2();
- echo $p->fn1();
- ?>
加了final关键字的方法不能被重写,运行出错. 2、final类不能被继承. 被声明了final的类不能被继承,否则出错. 实例代码如下: - <?php
- final class ex1{
- private $name;
- }
- class ex2 extends ex1{
- private $age;
- }
- ?>
static关键字 php static关键字不仅可以用来声明一个静态变量,在类中同样可以声明静态的属性或者方法,成为“类属性”或“类方法”. 1、声明了静态的属性和方法后,在类中不能用$this关键字来引用,可以使用下面两种方法引用: 在类中:self::静态成员名称 在类外:类名称::静态成员名称 2、访问该类时,可不必实例化,直接使用类名称::静态成员名称的格式. 静态属性实例: 实例代码如下: - <?
- class user{
- private static $count = 10;
- private static $sum=1;
- public function __construct(){
- for($i=1;$i<11;$i++){
- self::$sum = self::$sum * self::$count;
- self::$count--;
- }
- }
- public function getCount(){
- return self::$sum;
- }
- }
- $user1 = new user();
- echo $user1->getCount();
- ?>
静态方法实例: 实例代码如下: - <?
- class Math{
- public static function sum($num1,$num2){
- return $num1 + $num2;
- }
- public static function product($num1,$num2){
- return $num1 * $num2;
- }
- }
- $a = 88;
- $b = 100;
- echo "两数之和为: ";
- echo "<br>";
- echo Math::sum($a,$b);
- echo "<P>";
- $a = 66;
- $b = 88;
- echo "两数之积为: ";
- echo "<br>";
- echo Math::product($a,$b);
- ?>
$this关键字 为了解决php类和对象中变量与属性的命名冲突和不确定性问题,引入了”$this”关键字来调用当前的对象. 在类中调用当前对象的属性和方法,必须使用”$this->”关键字;$this在构造函数中指该构造函数所创建的新对象;方法内的局部变量不属于对象,不使用$this关键字取值. 使用$this关键字,我们可以在类中调用对象属性或者方法. 1、调用变量 实例代码如下: - <?php
- class user{
- private $n;
- function __construct(){
- $name="Mike";
- echo $this->n=$name;
- }
- }
- $p=new user();
- ?>
2、调用方法 实例代码如下: - <?php
- class cal{
- public function sum($a,$b){
- return $a+$b;
- }
- public function prt($a,$c){
- return $a*$c;
- }
- public function result($a,$b,$c){
- $a=$this->sum($a,$b);
- return $this->prt($a,$c);
- }
- }
- $c=new cal();
- echo "(2+3)*10= " .$c->result('2','3','10');
- ?>
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|