博客列表 >文件包含及类与对象

文件包含及类与对象

吴长清
吴长清原创
2022年08月15日 14:12:23315浏览

1.include与require的区别与联系

1.includerequire都是在当前文件调用外部文件,且作用域即当前文件的作用域
2.require语句调用文件时,如果没有找到文件,require语句会输出错误信息,并且立即终止脚本的处理,而include语句在没有找到文件时则会输出警告,不会终止脚本的处理
3.使用require语句调用文件时,只要程序一执行,就会立刻调用外部文件,而通过include语句调用外部文件时,只有当程序执行到这条语句时,才会调用外部文件

例如:

  1. <?php
  2. // 当xxx.php文件不存在时,会输出错误信息,但依然会执行输出Hello World
  3. // 文件初始化时就调用了外部文件
  4. include 'xxx.php'
  5. echo 'Hello World'
  6. // 当xxx.php文件不存在时,会输出错误信息且终止脚本处理,不会输出Hello World
  7. // 文件初始化时未调用外部文件,执行require语句时才会调用
  8. require 'xxx.php'
  9. echo 'Hello World'
  10. ?>

2.类与对象的常用关键字及操作

  1. <?php
  2. namespace _0812;
  3. // 声明类
  4. class User
  5. {
  6. // 1.公共属性
  7. public $userName;
  8. public $sex;
  9. // 2.私有属性
  10. private $salary;
  11. private $age;
  12. // 3.静态属性
  13. public static $nation;
  14. // 4.获取器: __get(属性) 魔术方法
  15. // $name: 要获取的属性名
  16. public function __get($name)
  17. {
  18. // 当获取的属性为年龄变量时 对私有变量$age进行+10操作
  19. // 类的内部,用$this来直接使用变量属性,不用实例化
  20. // 对私有属性判断,返回一个虚假年龄
  21. return $name === 'age' ? $this->$name + 10 : $this->$name;
  22. }
  23. // 5.更新器/设置器 __set(属性,值) 魔术方法
  24. // 私有属性可以通过更新器动态更新
  25. // 在属性动态更新时,对属性进行更新操作判断,是否对其进行更新
  26. public function __set($name, $value)
  27. {
  28. // 对真实的年龄作判断
  29. if ($name === 'age') {
  30. if ($value >= 18 && $value <= 50) {
  31. $this->$name = $value;
  32. } else {
  33. echo '年龄越界了';
  34. }
  35. }
  36. }
  37. // 6.构造方法:魔术方法
  38. // 在实例化该类时自动触发 初始化类的属性
  39. // 公共属性可以通过构函数来动态更新
  40. // $nation设置默认值
  41. public function __construct($userName, $sex, $salary, $nation = 'China')
  42. {
  43. // 初始化公共属性
  44. $this->userName = $userName;
  45. $this->sex = $sex;
  46. // 初始化私有属性
  47. $this->salary = $salary;
  48. // 初始化静态属性
  49. self::$nation = $nation;
  50. }
  51. // 7.静态方法 实例化时传入当前对象
  52. public static function hello($user)
  53. {
  54. // 在静态方法中调用类的属性时 必须实例化才可以调用
  55. // $user = new User('张三', 1800,);
  56. return 'Hello ' . $user->userName . ', 你的国籍是: ' . self::$nation;
  57. }
  58. }
  59. // 8.实例化 在类的外部使用类的属性需要实例化,用对象访问成员
  60. // 实例化时没有初始化$nation时使用默认值
  61. $user1 = new User('赵大', '男', 2800);
  62. // 9.访问公共成员
  63. echo $user1->userName . '<br>';
  64. // 10.访问私有成员
  65. echo $user1->salary . '<br>';
  66. // 11.访问静态成员 实例化未初始化$nation 输出默认值
  67. echo User::$nation . '<br>';
  68. // 12.访问静态成员 实例化初始化$nation
  69. $user2 = new User('赵大', '男', 2800, '中国');
  70. echo User::$nation . '<br>';
  71. // 13.访问静态方法
  72. echo User::hello($user2) . '<br>';
  73. // 14.更新成员
  74. $user2->age = 38;
  75. echo $user2->age . '<br>';
  76. // 私有属性若是通过构造函数初始化值时,更新器对私有属性更新时无效
  77. $user2->salary = 3000;
  78. // 输出结果依然是实例化时的初始值 2800
  79. echo $user2->salary . '<br>';
  80. // 15.访问私有属性$age时,对$age判断,并返回虚假年龄
  81. // 真实年龄 28
  82. $user2->age = 28;
  83. // 输出虚假年龄 38
  84. echo '虚假年龄:' . $user2->age . '<br>';
  85. // 16.更新$age时对其进行操作判断
  86. // 真实年龄 52
  87. $user2->age = 52;
  88. echo '<br>';
  89. // 打印对象
  90. var_dump($user2);

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议