博客列表 >文件实例与类操作

文件实例与类操作

啊℃。㏄
啊℃。㏄原创
2022年04月26日 07:23:31327浏览

文件实例

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

类与实例

  1. <?php
  2. /**
  3. * 类与实例
  4. * 1.class
  5. * 2.new
  6. */
  7. // 类声明
  8. // 1.class
  9. class Goods
  10. {
  11. }
  12. // 类的实例化:创建对象的过程,new
  13. $goods = new Goods;
  14. var_dump($goods);
  15. echo '<hr>';
  16. echo get_class($goods);
  17. // 动态类
  18. $str = 'goods';
  19. // 创建类必须是首字母大写,大驼峰/帕斯卡
  20. $class = ucfirst('goods');
  21. // echo $class;
  22. $o = new $class;
  23. var_dump($o);
  24. var_dump($o instanceof Goods);

类的扩展/抽象/最终

  1. <?php
  2. use Demo1 as GlobalDemo1;
  3. /**
  4. * 类的扩展/抽象/最终
  5. * 1.protected:受保护/继承
  6. * 2.extends:扩展/继承
  7. * 3.parent:父类引用
  8. * 4.abstract:抽象
  9. * 5.final:最终类
  10. */
  11. //父类,基类,超类
  12. class Person
  13. {
  14. //protected:成员可以继承,可以在子类中使用
  15. protected $name;
  16. // private:私有,仅限于当前类,子类,外部都不可见
  17. private $id = 1335;
  18. // public:类中,子类类外都可见
  19. public function __construct($name)
  20. {
  21. $this->name = $name;
  22. }
  23. // getInfo()::protected
  24. // 比protected更严格的是private,比它宽松的是public
  25. protected function getInfo()
  26. {
  27. return $this->name;
  28. }
  29. }
  30. // 学生类
  31. // extends:Stu这个类,扩展了Person类的功能
  32. class Stu extends Person
  33. {
  34. // 1.属性扩展
  35. private $lesson;
  36. private $score;
  37. // 2.方法扩展/重写
  38. public function __construct($name,$lesson,$score)
  39. {
  40. // parent:父类引用
  41. // 引用了父类的构造方法
  42. // :: 这个叫范围操作符
  43. parent:: __construct($name);
  44. $this->lesson = $lesson;
  45. $this->score = $score;
  46. }
  47. // 扩展必须得比父类的宽松才行
  48. public function getInfo()
  49. {
  50. // return $this->name . "同学,($this->lesson : $this->score 分)";
  51. return parent::getInfo(). "同学,($this->lesson : $this->score 分)";
  52. }
  53. }
  54. $stu = new Stu('小狗','PHP',80);
  55. echo $stu->getInfo();
  56. echo '<hr>';
  57. $person = new Person('小猪');
  58. var_dump($person);
  59. echo '<hr>';
  60. //如果不想让用户直接使用父类,而必须通过继承/扩展的子类来间接使用
  61. // 将父类声明为严格抽象类
  62. abstract class Demo1
  63. {
  64. }
  65. class Demo2 extends Demo1
  66. {
  67. }
  68. (new Demo2);
  69. // 查询父类是函数是get_parent_class
  70. echo 'Demo2的父类是:'. get_parent_class(new Demo2);
  71. echo '<hr>';
  72. abstract class Demo3
  73. {
  74. // hello方法已经实现了
  75. // protected function hello()
  76. // {
  77. // }
  78. // 抽象方法:只有方法名,参数列表,没有具体实现(大括号)
  79. abstract protected function hello($name);
  80. }
  81. class Demo4 extends Demo3
  82. {
  83. // 工作类Demo4中必须实现父类中的抽象成员
  84. public function hello($name)
  85. {
  86. return 'Hello,'.$name;
  87. }
  88. }
  89. echo call_user_func([new Demo4,'Hello'],'李老师');
  90. echo '<hr>';
  91. // 如果一个类不用扩展,直接当成工作类,/直接干活,直接new
  92. // 为了防止被继承,可声明为最终类
  93. final class Demo5
  94. {
  95. }

接口(大号的抽象类)

  1. <?php
  2. // 接口:大号的抽象类
  3. // 接口的成员必须都是抽象的
  4. // interface:声明接口
  5. // implements:实现接口
  6. interface iUser
  7. {
  8. //1.类常量
  9. const NATION = 'CHINA';
  10. // 2.必须是抽象,必须是public
  11. public function m1();
  12. public function m2();
  13. }
  14. // 接口不能直接使用,要用一个类来实现它
  15. // 1.普通类来实现一个接口,必须将接口中的所有抽象方法全部实现
  16. class Demo1 implements iUser
  17. {
  18. public function m1()
  19. {
  20. }
  21. public function m2()
  22. {
  23. }
  24. }
  25. // 2.抽象类来实现一个接口,允许有不实现的抽象成员
  26. abstract class Demo2 implements iUser
  27. {
  28. public function m1()
  29. {
  30. }
  31. }
  32. //php默认只支持单继承
  33. // class A extends B,
  34. // 可以通过接口,间接实现继承
  35. interface A
  36. {
  37. }
  38. interface B
  39. {
  40. }
  41. interface C
  42. {
  43. }
  44. class Test implements A ,B ,C
  45. {
  46. }
  47. // 查看当前类实现的所有接口
  48. $arr = class_implements('Test');
  49. printf('<pre>%s</pre>',print_r($arr,true));
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议