Blogger Information
Blog 47
fans 1
comment 0
visits 53120
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PHP - 文件加载、类与对象基础
晴天
Original
692 people have browsed it

1. 文件加载

  • 文件加载: 可简单的理解为将外部文件内容复制到当前文档中
  • 根据被加载文件的特征和重要性,可分为: “条件加载” 和 “强制加载” 二种方式

1.1 条件加载

加载外部文件,如果失败报警告级(Warning)错误,不会中断程序

序号 语法 描述
1 include 条件加载
2 include_once 去重(chong)条件加载
  • include 条件加载
  1. ## include 文件加载
  2. // 单引号加载
  3. include 'header.html';
  4. // 双引号加载
  5. include "header.html";
  6. // 变量加载
  7. $file = 'header.html';
  8. include $file;
  9. // 拼接加载
  10. $name = 'header';
  11. include $name.'.html';
  12. // 双变量拼接加载
  13. $name = 'header';
  14. $type = '.html';
  15. include $name.$type;
  16. // 条件加载 检测文件是否存在且是一个文件而不是目录,若不存在加载默认文件
  17. $file = 'header111.html'; //没有此文件
  18. (file_exists($file) && is_file($file)) ? include $file : include '404.html';

  • include_once 去重加载
  1. ## include_once 去重加载 检测是否已经加载过此文件,若已经加载过则不加载,若未加载则只加载一次,无论输入多少次
  2. // 单引号加载
  3. include_once 'header.html';
  4. // 双引号加载
  5. include_once "header.html";
  6. // 变量加载
  7. $file = 'header.html';
  8. include_once $file;
  9. // 拼接加载
  10. $name = 'header';
  11. include_once $name.'.html';
  12. // 双变量拼接加载
  13. $name = 'header';
  14. $type = '.html';
  15. include_once $name.$type;

" class="reference-link">

1.2 强制加载

加载外部文件,如果失败报致命级(Fatal error)错误,并中断程序

序号 语法 描述
1 require 强制加载
2 require_once 去重强制加载
  • 强制加载跟条件加载使用方法一样,
    唯独不同的地方是若文件不存在”条件加载”依然向下执行,而”强制加载”则会终止程序
  1. ## 条件加载 指向一个没有的文件
  2. include 'template.php';
  3. echo '<hr>虽然上面文件加载失败,但你依然可以看到我,说明程序继续向下执行<hr>';
  4. ## 强制加载
  5. require 'header.html';
  6. echo '<br><hr>强制加载成功,你可以看到我<hr>';
  7. require 'template.php';
  8. echo '<br><hr>强制加载失败,你看不到我<hr>';

1.3 函数作用域的支持

  1. // 外部加载,内部访问
  2. include 'function.php';
  3. function func(){
  4. global $email;
  5. echo $email;
  6. };
  7. func();
  8. // 输出 admin@php.cn
  9. // 内部加载内部访问
  10. function test(){
  11. include 'function.php';
  12. echo $email;
  13. };
  14. test();
  15. // 输出 admin@php.cn

2. 类与对象

2.1 概念

序号 名称 描述 关键字
1 class 对象的模板 class
2 对象instance 类的实例 new
  • 类与对象界限并不清晰,在不影响理解前提下,常用类代表实例来引用类成员
  • 对象与类的某一个实例绑定, 所以对象与实例可视为同义词,互换并不影响
  1. # 对象也是实现代码复用的手段
  2. # 要使用对象,就必须创建一个类,根据这个类,不断创建多个对象出来,实现代码复用
  3. #类的声明与实例化
  4. // 声明类
  5. class Goods{
  6. }
  7. #类的实例化,是一个创建对象的过程。new
  8. $goods = new Goods();
  9. # 再不会引起误会的情况下,示例与对象是同义词
  10. // 判断对象$goods是不是类Goods的示例
  11. var_dump($goods instanceof Goods);
  12. // 输出 bool(true)
  13. // 查看 对象$goos 的类名
  14. echo get_class($goods);
  15. // 输出 Goods
  16. // 类名是支持使用变量的,动态类
  17. $class = 'Goods';
  18. $obj = new $class();
  19. echo get_class($obj);
  20. // 输出 Goods
  21. // 用函数将首字母转为大写 动态生成类名经常用
  22. $class = ucfirst('goods');
  23. echo $class;
  24. // 输出 Goods

2.2 类中成员

2.2.1 按功能分类

序号 名称 描述 关键字
1 类属性property 类中变量
2 类方法method 类中函数 function
3 类常量method 类中常量 const .
  1. <?php
  2. # 类成员:类属性,类方法,类常量
  3. // 类名必须首字母大写
  4. class User
  5. {
  6. // 类中变量必须要有作用域:或者叫访问限制
  7. // 语法 : 访问限制符 $ 变量名 = 值
  8. // 常规属性 跟静态属性相比又叫动态属性
  9. // public 公开的
  10. // 字符串
  11. public $name = 'micheal';
  12. // 数字
  13. public $age = 15;
  14. // 数组
  15. public $arr = [1,2,3,4];
  16. // nowdoc heredoc
  17. public $txt = <<< TXT
  18. <h2>我爱你中国</h2>
  19. TXT;
  20. ####但是####
  21. // 以下属性不可以用 :非法属性值
  22. // 不能用变量
  23. // public $age = $varl;、
  24. // 不能用类属性 类方法 赋值
  25. // public $age = $this->age;
  26. // 不能用表达式
  27. // public $age = $age*10;
  28. // 不能使用函数调用的结果
  29. // public $age = age();
  30. // 2.静态属性
  31. // 如果一个属性的值对所有示例来说是一样的,换句话说就是他被所有的对象所共享 那么就没有必要用对象来访问
  32. // 用类访问,此时可以声明为静态的
  33. public static $username = '双倍快乐';
  34. // php 程序运行简单分为两个阶段:编译,执行
  35. // 静态属性在程序的编译阶段就完成了初始化,已经有了值了
  36. // 静态属性创建时一定要有值或者默认值,不依赖类的实例化对他进行初始化
  37. // 3.抽象属性:没有被初始化,默认值可以认为null,但不能给他赋值null否则会发生根本性变化,赋值后就不是抽象属性了
  38. public $ages;
  39. }
  40. // 访问
  41. $user = new User;
  42. // -> 对象和成员访问符
  43. echo "姓名:{$user->name}";
  44. // 输出 姓名:micheal
  45. // 在类的外部可以给类中的值进行更新
  46. $name = 'kaiwen';
  47. $user->name = $name;
  48. echo "姓名:{$user->name}";
  49. // 输出 姓名:kaiwen
  50. echo $user->txt;
  51. // 输出 我爱你中国
  52. // 访问静态属性 适用范围解析符,双冒号::
  53. echo User::$username;
  54. // 输出 双倍快乐
  55. // 静态属性也支持更新
  56. User::$username = '不会快乐';
  57. echo User::$username;
  58. // 输出 不会快乐

2.2.2 按访问权限分类

序号 名称 关键字 类外部 类内部 类继承上下文 描述
1 公开成员 public 允许 允许 允许 默认
2 受保护成员 protected 禁止 允许 允许 封装
3 私有成员 private 禁止 允许 禁止 封装

2.2.3 按调用主体分类

序号 名称 关键字 调用主体
1 非静态成员 默认 类实例调用
2 静态成员 static 类调用

2.2.4 按是否有具体实现分类

序号 名称 关键字 具体实现
1 非抽象成员 默认
2 抽象成员 abstract
  • 类中只要有一个抽象方法,该类必须声明为抽象类abstract class
  • 严格来说未初始化的属性也应该算是抽象成员, 即: 抽象属性
  • 思考: 有抽象属性的类,为什么不需要定义为抽象类呢?
    • 普通属性通常会在类实例化通过构造方法进行初始化
    • 静态属性由类调用而没有实例化的机会,所以定义时通常已经初始化

2.2.5 按方法是否可重写

序号 类型 关键字 描述
1 可重写方法 默认 可由子类重写
2 最终方法 final 不允许子类重写

只有 “类和方法” 可声明为final, 属性不可以


2.3 类的分类

序号 类型 关键字 可实例化 可继承 可组合
1 常规类 class 允许 允许 允许
2 最终类 final 允许 禁止 允许
3 抽象类 abstract 禁止 允许 允许
4 特征类 trait 禁止 禁止 允许
5 接口类 interface 禁止 允许 允许
6 匿名类 new class{} 禁止 允许 允许

3.总结

了解文件加载中 条件加载强制加载的区别
初步了解类与对象,类的声明与实例化,非法属性值,外部可更新属性值

Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:类与对象中, 有一些概念是有点绕, 似是而非, 所以要多看一些相关资料和多做练习
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post