博客列表 >文件包含作用域、类与对象

文件包含作用域、类与对象

P粉314265155
P粉314265155原创
2022年08月15日 19:21:39356浏览

HTML 中php代码

  1. <?php
  2. namespace _0812; ?>
  3. // 文件包含
  4. <!DOCTYPE html>
  5. <html lang="zh-CN">
  6. <head>
  7. <meta charset="UTF-8">
  8. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  9. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  10. <title>Document</title>
  11. </head>
  12. <body>
  13. <!--退出 html 进入php -->
  14. <?php
  15. // PHP代码 在服务器执行
  16. // 退出 php 进入html
  17. ?>
  18. <!-- 被包含的是html 直接写 -->
  19. </body>
  20. </html>

文件包含

  1. <?php
  2. namespace _0812;
  3. // 文件包含
  4. // 本质,将外部文件的内容,插入到当前的位置
  5. // include 加载引用
  6. // 相对路径
  7. include 'zuoyeinc/zuoyef1.php';
  8. // echo $username;
  9. echo '<hr>';
  10. // 推荐使用绝对路径 速度更快
  11. include 'zuoyeinc/zuoyef1.php';
  12. echo __DIR__.'/zuoyeinc/zuoyef1.php';
  13. // 斜线 反斜线 统一
  14. echo '<hr>';
  15. echo __DIR__.DIRECTORY_SEPARATOR.'zuoyeinc'.DIRECTORY_SEPARATOR.'zuoyef1.php';
  16. echo '<hr>';
  17. // 简写
  18. // include __DIR__.'/zuoyeinc/zuoyef1.php';
  19. // // 与当前脚本共用一个作用域
  20. // echo $username;
  21. // // $username 导入的失效了 变成小猫了
  22. // $username = '小猫';
  23. // echo $username;
  24. echo '<hr>';
  25. // @var username 声明 后不会报错
  26. echo '<hr>';
  27. // return 接收
  28. // $username= include __DIR__.'/zuoyeinc/zuoyef1.php';
  29. // echo $username;
  30. // return 接收 数组
  31. // list() 解构
  32. $user =include __DIR__.'/zuoyeinc/zuoyef1.php';
  33. list('username'=>$username,'email' => $email ) =$user ;
  34. echo $username ,'----',$email;
  35. echo '<hr>';
  36. echo join(',',$user);
  37. echo '<hr>';
  38. vprintf('%s---%s',$user);
  39. echo '<hr>';
  40. $user =include __DIR__.'/zuoyeinc/zuoyef2.php';
  41. echo $user;
  42. // 虽然路径错了,但是不影响后面的执行 但是require 不执行了 警告错误后面执行
  43. echo '<h1>Hello php.cn</h1>';
  44. echo '<hr>';
  45. // require
  46. // $user =require __DIR__.'/zuoyeinc/zuoyef2.php';
  47. // echo $user;
  48. // // require 不执行了 致命错误后面不执行 直接退出了 一般require用的多
  49. // die('程序中断');
  50. // exit('xxxx');
  51. // echo '<h1>Hello php.cn</h1>';
  52. // 判断文件是否存在
  53. if (file_exists(__DIR__ . '/inc/f12.php')) {
  54. require __DIR__ . '/inc/f12.php';
  55. } else {
  56. exit('文件不存在');
  57. }
  58. // include, require,功能一样,区别在于出错的处理上
  59. // include: 忽略错误,继续执行后面代码, require,直接退出

模块化网站

  1. <?php
  2. namespace _0812;
  3. //快速话 模块化 网站
  4. ?>
  5. <?php
  6. include __DIR__.'/zuoyeinc/header.php';
  7. ?>
  8. <main>
  9. <ul>
  10. <li><a href="">最新技术文章1</a></li>
  11. <li><a href="">最新技术文章2</a></li>
  12. <li><a href="">最新技术文章3</a></li>
  13. <li><a href="">最新技术文章4</a></li>
  14. <li><a href="">最新技术文章5</a></li>
  15. <li><a href="">最新技术文章6</a></li>
  16. <li><a href="">最新技术文章7</a></li>
  17. <li><a href="">最新技术文章8</a></li>
  18. <li><a href="">最新技术文章9</a></li>
  19. <li><a href="">最新技术文章10</a></li>
  20. </ul>
  21. </main>
  22. <?php include __DIR__ . '/zuoyeinc/footer.php';

类声明

  1. <?php
  2. // namespace _0812;
  3. /**
  4. * class: 声明类
  5. * new: 实例化类
  6. */
  7. use _0812\Goods as _0812Goods;
  8. // 面向对象
  9. // 对象是一个容器 是全局成员的一个前缀
  10. // obj.name
  11. // 类 全局成员。声明 class 大驼峰 PascalName
  12. // 1、类声明
  13. class Goods {
  14. }
  15. // 2、类实例化 实例的是对象
  16. // 实例总是与一个类绑定, 对象更通用一些, 在不引起歧义时,实例==对象
  17. $goods =new Goods();
  18. var_dump( $goods);
  19. echo '<hr>';
  20. var_dump( $goods instanceof Goods);
  21. echo '<hr>';
  22. echo gettype($goods).'<br>';
  23. echo '<hr>';
  24. echo get_class($goods).'<br>';
  25. echo '<hr>';
  26. // 动态类
  27. // 控制器 是一个动态类 控制器 名称 出现在url 中
  28. $controller = 'goods';
  29. // $controller = ucfirst('goods');
  30. $obj1 = new $controller ();
  31. var_dump($obj1);
  32. echo '<hr>';
  33. // 动态类
  34. // 控制器就是一个动态类, 控制器名称出现url
  35. $cont = ucfirst('goods');
  36. // UserController.php
  37. // $controller = ucfirst( 'goods') . 'Controller';
  38. $obj = new $cont();
  39. var_dump($obj);

类的属性获取

  1. <?php
  2. // namespace _0812;
  3. /**
  4. * 类成员
  5. * 1. 实例成员: 用对象访问, $this
  6. * 2. 静态成员
  7. */
  8. class User1 {
  9. // 1.1 实例成员
  10. // 类里面声明变量,要给声明全局、范围的限定、 不然报错
  11. // 私有成员 、 private 只有当前类使用,其他地方不能使用
  12. // 默认公共的 public
  13. public $username ='小狗' ;
  14. // 私有的 只有当前类使用
  15. private $salary =15000;
  16. private $age =15;
  17. // 写个方法返回 私有的
  18. public function getSalary (){
  19. // $user = new User1();
  20. // return $user ->salary;
  21. // 简化 $this 和当前类实例绑定
  22. return $this ->salary;
  23. }
  24. // 写个方法返回 私有的
  25. public function getAge (){
  26. // $user = new User1();
  27. // return $user ->salary;
  28. // 简化 $this 和当前类实例绑定
  29. return $this ->age;
  30. }
  31. }
  32. // 实例化
  33. $user1 =new User1();
  34. echo $user1 ->username.'<hr>';
  35. // echo $user1 ->salary.'<hr>'; 访问不到私有变量
  36. // 访问到了
  37. echo $user1 ->getSalary();
  38. echo '<hr>';
  39. // 访问到了
  40. echo $user1 ->getAge();
  41. echo '<hr>';
  42. // 简化 获取器
  43. class User2 {
  44. // 1.1 实例成员
  45. // 类里面声明变量,要给声明全局、范围的限定、 不然报错
  46. // 私有成员 、 private 只有当前类使用,其他地方不能使用
  47. // 默认公共的 public
  48. public $username2 ='小猫' ;
  49. // 私有的 只有当前类使用
  50. private $salary2 =25000;
  51. private $age2 =25;
  52. public $role = '妈';
  53. // 获取器 忽略属性类型 全部返回
  54. // $name 要获取的属性名
  55. // 获取器: __get(属性), 魔术方法, 双下划线开始的系统方法
  56. // $name: 要获取的属性名
  57. public function __get($name)
  58. {
  59. // 类内部: $this
  60. // return $this ->$name;
  61. // 设置拦截
  62. if($name ==='salary2'){
  63. if ($this -> role==='太太'){
  64. return $this ->$name -1;}
  65. else {
  66. return $this ->$name -2;
  67. }
  68. }
  69. if($name ==='age2'){
  70. return $this ->$name +1;
  71. }
  72. }
  73. // 修改器/设置器, 魔术方法, __set(属性,值)
  74. // public function __set($name, $value)
  75. // {
  76. // if($name ==='age2'){
  77. // if ($value >= 18 && $value <= 50){
  78. // $this ->$name = $value;
  79. // }else {
  80. // echo '年龄非法';
  81. // }
  82. // }
  83. // }
  84. // 修改器/设置器, 魔术方法, __set(属性,值)
  85. public function __set($name, $value)
  86. {
  87. if ($name === 'age2') {
  88. if ($value >= 18 && $value <= 50) {
  89. $this->$name = $value;
  90. } else {
  91. echo '年龄越界了';
  92. }
  93. }
  94. }
  95. }
  96. // 实例化
  97. // 在类外部,用对象访问成员
  98. // $user2 =new User2();
  99. // echo $user2 ->username2.'<hr>';
  100. // // echo $user1 ->salary.'<hr>'; 访问不到私有变量
  101. // // 访问到了
  102. // echo $user2 ->salary2;
  103. // echo '<hr>';
  104. // // 访问到了
  105. // echo $user2 ->age2;
  106. // echo '<hr>';
  107. // 修改 年龄 类内部的值 _set()
  108. // $user2 ->age2 = 35;
  109. // echo $user2 ->age2;
  110. // echo '<hr>';
  111. // 修改 年龄 类内部的值 _set()
  112. // $user2 ->age2 = 15;
  113. // // echo $user2 ->age2;
  114. // echo '<hr>';
  115. // 修改 年龄 类内部的值 _set()
  116. // $user2 ->age2 = 40;
  117. // echo $user2 ->age2;
  118. // echo '<hr>';
  119. // 实例化
  120. // 在类外部,用对象访问成员
  121. $user2 = new User2();
  122. echo $user2->username , '<br>';
  123. // echo $user1->salary , '<br>';
  124. echo $user2->salary2 . '<br>';
  125. echo $user2->age2 . '<br>';
  126. $user2->age2 = 48;
  127. echo $user2->age2 . '<br>';
  128. $user2->age2 =60;
  129. // echo $user2->age2 . '<br>';

类属性获取 构造器获取

  1. <?php
  2. namespace _0812;
  3. /**
  4. * 类成员
  5. * 1. 实例成员: 用对象访问, $this->对象引用
  6. * 2. 静态成员 static: 用类访问, self::->类引用 私有属性
  7. */
  8. class User3
  9. {
  10. public $username;
  11. private $salary;
  12. private $age;
  13. // 当前类实例的状态(属性值)应该由用户来决定,而不是由类来写死
  14. // 构造方法: 魔术方法, 不用用户主动调用,由某个事件或动作来触发
  15. // __get,__set
  16. // 构造方法, 实例化该类时,会自动触发 new的时候 进阶学习设计模式*
  17. public function __construct($name,$salary,$age,$nation='ch')
  18. {
  19. $this -> username =$name;
  20. $this -> salary =$salary;
  21. $this -> age =$age;
  22. // 初始化静态属性
  23. self::$nation = $nation ;
  24. }
  25. // 静态属性
  26. public static $nation = '中国';
  27. // 静态方法
  28. public function hello(){
  29. return '你好,'. User3 ::$nation;
  30. // 在类中, 使用 self::来引用当前类
  31. // return 'Hello,' . self::$nation;
  32. }
  33. }
  34. $user3 =new User3('小猫',2000,2);
  35. echo $user3 ->username .'<hr>';
  36. echo $user3 :: $nation .'<hr>';
  37. // echo $user3 ->salary .'<hr>';
  38. // echo $user3 ->age .'<hr>';
  39. $user3 =new User3('小狗',3000,3);
  40. echo $user3 ->username .'<hr>';
  41. // echo $user3 ->salary .'<hr>';
  42. // echo $user3 ->age .'<hr>';
  43. // echo $user3->nation . '<br>';
  44. // 类外部,访问静态成员,使用 类名称::
  45. // echo $user3 ::$nation .'<hr>';
  46. // 类外部,访问静态方法
  47. echo User3::hello() . '<br>';
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议