博客列表 >文件本质与作用域,实例演示

文件本质与作用域,实例演示

千里马遇伯乐
千里马遇伯乐原创
2022年04月25日 18:44:18974浏览

1.PHP中文件包含的实例

  1. <?php
  2. // 文件包含
  3. // 本质: 将目录文件复制到当前位置
  4. // 1. include
  5. // echo __DIR__ ;
  6. include __DIR__ .'/inc/f1.php';
  7. // $username = '张老师';
  8. // 被包含文件共享作用域
  9. echo $username . '<br>';
  10. // echo $email . '<br>';
  11. $email = include __DIR__ . '/inc/f1.php';
  12. echo $email . '<hr>';
  13. // 2. require
  14. require __DIR__ . '/inc/f1.php';
  15. echo $username . '<br>';
  16. $email = require __DIR__ . '/inc/f1.php';
  17. echo $email . '<br>';
  18. // 3. include,require区别
  19. // 区别1
  20. // include: 用到时再加载, 动态
  21. // require: 应该写到顶部, 静态
  22. // if (false) include __DIR__ . '/inc/f2.php';
  23. // echo $site . '<br>';
  24. // if (false) require __DIR__ . '/inc/f2.php';
  25. // echo $site . '<br>';
  26. // 区别2
  27. // include: 加载失败,继续执行不中断
  28. // requrie: 加载失败,中断退出
  29. // include __DIR__ . '/inc/hello.php';
  30. @include __DIR__ . '/inc/hello.php';
  31. echo 'include后面的代码' . '<br>';
  32. // require __DIR__ . '/inc/hello.php';
  33. // echo 'require后面的代码' . '<br>';
  34. // include_once: 只包含一次
  35. // require_once: 只包含一次

2.PHP中关键字

  1. <?php
  2. /**
  3. * 类的扩展/抽象/最终
  4. * 1. protected: 受保护/可继承
  5. * 2. extends: 扩展/继承
  6. * 3. parent: 父类引用
  7. * 4. abstract: 抽象
  8. * 5. final: 最终类
  9. */
  10. // 父类,基类,超类
  11. class Person
  12. {
  13. // proteced:成员可继承,可以在子类中使用
  14. protected $name;
  15. // private: 私有,仅限当前类,子类,外部都不可见
  16. private $id = 12345;
  17. // public: 类中,子类,类外都可见
  18. public function __construct($name){
  19. $this->name = $name;
  20. }
  21. // getInfo::proteced
  22. // 比protected再严格的是 private,比它更宽松的是:public
  23. protected function getInfo(){
  24. return $this->name;
  25. }
  26. }
  27. // 学生类
  28. // extends:Stu这个类,扩展了Person类的功能
  29. class Stu extends Person
  30. {
  31. // 1. 属性扩展
  32. private $lesson;
  33. private $score;
  34. // 2. 方法扩展、重写
  35. public function __construct($name,$lesson,$score)
  36. {
  37. // 引用了父类的构造方法
  38. // parent: 父类引用 Person
  39. parent::__construct($name);
  40. $this->lesson = $lesson;
  41. $this->score = $score;
  42. }
  43. public function getInfo()
  44. {
  45. // $this->name
  46. // return $this->name . "同学,($this->lesson : $this->score 分)";
  47. return parent::getInfo() . "同学,($this->lesson : $this->score 分)";
  48. }
  49. }
  50. $stu = new Stu('小王','php',88);
  51. echo $stu->getInfo();
  52. echo '<hr>';
  53. // 如果不想让用户直接使用父类,而必须通过继承/扩展的子类来间接使用
  54. // 将父类声明为一个抽象类
  55. abstract class Demo1{
  56. }
  57. // (new Demo1)
  58. class Demo2 extends Demo1{
  59. }
  60. echo 'Demo2的父类是:'.get_parent_class(new Demo2);
  61. echo '<hr>';
  62. abstract class Demo3{
  63. // 抽象方法:只有方法名,参数列表,没有具体实现(大括号)
  64. abstract protected function hello($name);
  65. }
  66. class Demo4 extends Demo3{
  67. // 工作类Demo4中必须实现父类中的抽象成员
  68. public function hello($name){
  69. return 'hello,'.$name;
  70. }
  71. }
  72. echo call_user_func([new Demo4,'hello'],'张老师');
  73. echo '<hr>';
  74. // interface接口实例
  75. interface A{}
  76. interface B{}
  77. interface C{}
  78. class Test implements A,B,C{
  79. }
  80. // 查看当前类实现的所有接口
  81. $arr = class_implements('Test');
  82. printf('<pre>%s</pre>',print_r($arr,true));
  83. // 如果一个类不用扩展,直接当成工作类/直接干活的,直接new
  84. // 为了防止被继承, 可声明为最终类
  85. // final class Demo5
  86. // {
  87. // }
  88. // class Demo6 extends Demo5
  89. // {
  90. // }
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议