博客列表 >0812静态成员方法

0812静态成员方法

︷肉園耔︷
︷肉園耔︷原创
2021年08月29日 22:08:01583浏览
  1. <?php
  2. /*
  3. * 类的静态成员 static 关键字 标志静态属性/方法 静态成员只能有本类来调用 为所有实例共享
  4. * 优点:1.在内存中存在多个实例,静态成员在内存中只占一份,为所有实例共享,普通成员以实例的方式会创建多个内存
  5. * 2.静态成员的执行效率比实例化高,不用创建对象就可以直接调用
  6. * 缺点:静态成员不自动进行销毁,而实例化的则可以销毁
  7. *
  8. * */
  9. class User{
  10. public static $name='胡歌';
  11. protected $_config = [
  12. 'auth_on'=>'true',
  13. 'auth_type'=>1 //认证方式 1事实认证 2位登录认证
  14. ];
  15. public static $nation ='China';
  16. private $salary;
  17. //static $count=0; //记录已登录用户的总数
  18. static $count=0;
  19. public function __construct($name,$salary)
  20. {
  21. //静态成员与类的实例无关 不能用$this访问,用self::
  22. self::$name=$name;
  23. $this->salary=$salary;
  24. self::$count ++;
  25. }
  26. public function getCount(){
  27. echo $this->salary;
  28. return sprintf('目前该网站的在线人数为%d<br>',
  29. self::$count);
  30. }
  31. //对象被销毁时自动调用
  32. public function __destruct(){
  33. self::$count --;
  34. }
  35. }
  36. /*
  37. *1. 静态方法不能访问类中的普通属性(此时还不存在对象)
  38. *2. 普通成员是对象级别的存在,只能通过对象访问 默认提供 $this指针
  39. *3. 静态成员是类级别的存在 随着类的加载而加载 没有提供$this指针,优先与对象存在 只能用类引用self::访问
  40. *4.
  41. //加载类文件 类的自动加载器
  42. require 'autoload.php';
  43. $user1= new User('古力拉扎',25000);
  44. $user2= new User('刘亦菲',30000);
  45. $user3= new User('史蒂夫',30000);
  46. unset($user3); //自动调用__destruct
  47. echo User::getCount();
  48. echo User::$name;
  49. //使用对象引用也可以访问静态成员 不推荐
  50. //echo $user1->getCount();
  51. echo $user2->getCount();
  52. echo User::$nation;
  53. * **/
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议