博客列表 >PHP:文件的加载与类的初识

PHP:文件的加载与类的初识

夸父逐日
夸父逐日原创
2020年04月30日 16:21:53607浏览
在PHP中,include,include_once,require,require_once 都有引入文件(PHP,HTML等)的作用。我们在运用它们的时候要理解使用。
我们在脚本demo1.php 写入一个求和的函数
  1. <?php
  2. function sum(int $a, int $b){
  3. return $a + $b;
  4. }
在同一目录下的另外一个脚本文件中分别用上述四种方法
include引用文件不会检查被引用的文件在当前文件中是否引用过,并且如果被引用的文件的不存在,当前脚本仍然可以继续执行
  1. include './demo1.php';
  2. echo sum(3, 4);
  3. // 结果是 7
  1. // 但是我们引用两次该demo1.php 文件是就会报错
  2. include './demo1.php';
  3. include './demo1' . '.php';
  4. echo sum(3, 5);
  5. // 结果是:Fatal error: Cannot redeclare sum() ;函数不能重新定义
这时我们就可以使用include_once了。include_once在加载文件是会检查文件是否被引用过。
  1. $a = './demo1.php';
  2. include $a;
  3. include './demo1.php';
  4. echo sum(3,5);
  5. //此时不会报错,结果是8
前文说过,使用include 加载文件,被加载的文件不存在,当前脚本仍然可以继续执行,请看以下例子。
  1. include './demo2.php';
  2. echo '就算被加载文件不存在我仍然可以执行';
  3. // 浏览器报错并返回结果:就算被加载文件不存在我仍然可以执行。
  4. // 说明include 加载文件并不会因为被加载文件不存在而停止当前脚本的执行
  5. // 但被加载的文件有错误时,仍然会报错
require 强制加载文件,被加载文件不存在的话,当前脚本会立即停止
  1. require ('./demo6.php');
  2. echo '就算出错了我仍然可以执行';
  3. // 浏览器报错并且不会输出:“就算出错了我仍然可以执行”
require_once 会在强制加载文件之前检查文件是否被加载过
  1. require ('./demo1.php');
  2. require_once ('./demo1.php');
  3. echo sum(3,4);
  4. // 结果是:7

总结:include_once, require_once可以实现去重加载,但会增加内存开销。require强制加载,若文件不存在的话就会立即停止当前脚本执行,常用于加载一些重要文件。

类的创建与访问。类成员可以有常量,方法,属性

类的创建与实例化

  1. //创建一个类
  2. class User{
  3. }
  4. //创建User类的实例
  5. $user1 = new User();
  6. //判断实例是否是某一个类的对象。
  7. var_dump($use1 instanceof User);
  8. //得到某一个实例对象的类名
  9. echo get_class($use1);

类的属性值与类成员的访问
类属性就是有访问限制的变量。语法:访问限制符 $变量名称。访问限制符有:public protected private

  1. class User
  2. {
  3. //演示类属性的创建
  4. public $name = 'Bob';
  5. public $age = 20;
  6. public $options = [3,4,5];
  7. public $nowdoc = <<< 'hello'
  8. 你好,世界
  9. hello;
  10. public $heredoc = <<< "hi"
  11. 你好,\n\r世界
  12. hi;
  13. //类属性值不能用以下方法创建
  14. //1.非法属性值 2.变量 3.类属性、类方法 4.表达式 5.函数调用 6.注意heredoc中不能出现变量。
  15. //如果一个属性对所有的实例来说是一样的,用类访问更方便,此时可以声明静态属性
  16. //静态属性在编译阶段初始化,在执行阶段可以更改
  17. public static $nationality = 'CHINA';
  18. //抽象属性, 默认值是null
  19. public $price;
  20. }
  21. //类成员的访问 首先实例化对象
  22. $user1 = new User();
  23. echo $user1->name.'的年龄是'.$user1->age;
  24. //结果是:Bob的年龄是20
  1. //可以实例化后修改当前实例的
  2. $user1->name = 'Tom';
  3. $user1->age = 18;
  4. echo $user1->name.'的年龄是'.$user1->age;
  5. //结果是:Tom的年龄是18
  1. //访问静态属性用两个冒号 ::
  2. echo $user1::$nationality;
  3. //结果是:CHINA
  4. //静态属性一样可以修改
  5. $user1::$nationality = 'USA';
  6. echo $user1::$nationality;
  7. //结果是:USA
  1. //抽象属性的访问
  2. var_dump($user1->price);
  3. // NULL
  4. // 抽象属性的修改
  5. $user1->price = 20;
  6. echo $user1->price;
  7. //结果是:20

总结:我们用class关键字可以声明一个新类,用new方法实例化一个类的对象。类属性的访问用”->”,静态属性用 “::”。并且类属性可以修改。

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