旗下导航:搜·么
当前位置:网站首页 > PHP问题 > 正文

php中self和this的区分与用法细致引见【php题目】

作者:搜搜PHP网发布时间:2019-11-26分类:PHP问题浏览:75


导读:PHP中this和self关键字的区分:1、self代表类,$this代表对象2、能用$this的处所肯定运用self,能用self的处所不肯定能用$this3、静态的要领...

PHP中this和self关键字的区分

1、self代表类,$this代表对象
2、能用$this的处所肯定运用self,能用self的处所不肯定能用$this
3、静态的要领中不能运用$this,静态要领给类接见的。

PHP中this和self关键字的用法:

self是援用静态类的类名,而$this是援用非静态类的实例名。

static 的属性和要领,只能接见static的属性和要领,不能类接见非静态的属性和要领。

由于静态属性和要领被建立时,能够还没有任何这个类的实例能够被挪用。

static的属性,在内存中只要一份,为一切的实例共用。

运用self:: 关键字接见当前类的静态成员。

一个类的一切实例,共用类中的静态属性。

也就是说,在内存中纵然有多个实例,静态的属性也只要一份。

下面例子中的设置了一个计数器$count属性,设置private 和 static 润饰。

如许,外界并不能直接接见$count属性。而顺序运转的效果我们也看到多个实例在运用同一个静态的$count 属性。

<?php    
class user  
{    
   private static $count = 0 ; //纪录一切用户的登录状况.    
   public function __construct() {    
       self::$count = self::$count + 1;    
   }    
   public function getCount() {      
       return self::$count;    
   }    
   public function __destruct() {    
       self::$count = self::$count - 1;    
   }    
}    
$user1 = new user();    
$user2 = new user();    
$user3 = new user();    
echo "now here have " . $user1->getCount() . " user";    
echo "<br />";    
unset($user3);    
echo "now here have " . $user1->getCount() . " user";    
?>


静态属性直接挪用

静态属性不需要实例化就能够直接运用,在类还没有建立时就能够直接运用。

运用的体式格局是: 类名::静态属性名

<?php    
class Math  
{    
   public static $pi = 3.14;    
}    
// 求一个半径3的园的面积。    
$r = 3;    
echo "半径是 $r 的面积是<br />";    
echo Math::$pi * $r * $r;    
echo "<br /><br />";    
//这里我以为 3.14 不够准确,我把它设置的更准确。    
Math::$pi = 3.141592653589793;    
echo "半径是 $r 的面积是<br />";    
echo Math::$pi * $r * $r;      
?>


类没有建立,静态属性就能够直接运用。

静态要领

静态要领不需要地点类被实例化就能够直接运用。

运用的体式格局是 类名::静态要领名

相相识更多相干内容请接见ki4网:PHP视频教程

以上就是php中self和this的区分与用法细致引见的细致内容,更多请关注ki4网别的相干文章!

标签:phpselfthis区别