博客列表 >PHP中文件的包含与作用域以及类和对象的基础

PHP中文件的包含与作用域以及类和对象的基础

风车
风车原创
2022年08月15日 16:01:17403浏览

文件包含

文件包含的本质就是把外部文件的内容插入到当前的位置
包含的脚本与当前脚本公用一个作用域,相当于是一个文件
用文件包含的方式可以实现一个网站的模块化,将网站的各个部分分到不同的文件,在需要时分别调用
有两个关键字
1.include
这个方法就是直接引入外部的文件,在关键字后直接跟上文件路径
1.1相对路径引入

  1. include 'inc/f1.php';

1.2绝对路径引入(推荐使用)
DIR :返回当前脚本在服务器上的路径

  1. include __DIR__ . '/inc/f1.php';

2.require
和第一个方法一样,在关键字后面直接加文件路径

两个方法的区别
include, require 都支持条件加载,也就是说都支持if判断,满足条件再加载
include, require,功能一样,区别在于出错的处理上
include: 忽略错误,继续执行后面代码, require,直接退出

面向对象

对象是一个容器,是全局成员的一个前缀
类就是对这个对象的描述
类是全局成员
class :声明类
new :实例化类
类的命名方式为大驼峰命名法:例:UserName, PascalName
可以通俗的认为:对象==实例化类

  1. // 这就是一个类的声明
  2. class Goods
  3. {
  4. // ...
  5. }
  6. // 类的实例化->对象
  7. $goods = new Goods();

get_class :返回当前实例的父级(由谁实例而来)

  1. echo get_class($goods)

类成员

1.实例成员

1.1 属性 也就是类里面的变量(分为私有private和公共public
1.2 方法 也就是类里面的方法
$this指向当前实例类
类内部的私有成员外部无法访问,如果需要在外部访问:
1.可以在内部创建一个访问接口(就是内部函数,通过这个函数访问访问到私有属性,因为这个函数包含在类内部,所以可以访问,然后在外部访问这个函数,就可以访问到需要的属性)
2.获取器:get(当前属性):可以获取当前类中的属性,但是是只读,不能在外部进行修改
3.修改器/设置器, 魔术方法,
set(属性,值) 可以在外部读取并可以修改
这种以双下划线开始的 __ 方法,叫做魔术方法,由系统定义。

  1. class User1
  2. {
  3. // 1. 实例成员
  4. // (一) 属性, 变量的语法
  5. // public: 默认
  6. public $username = '张老师';
  7. public $role = '妈';
  8. // 私有, 只能在当前的类中使用
  9. private $salary = 3800;
  10. private $age = 28;
  11. // (二) 方法: 函数的语法
  12. // public function getSalary()
  13. // {
  14. // $user = new User1();
  15. // $this : 和当前类实例绑定
  16. // return $this->salary;
  17. // }
  18. // public function getAge()
  19. // {
  20. // return $this->age;
  21. // }
  22. // 获取器: __get(属性), 魔术方法, 双下划线开始的系统方法
  23. // $name: 要获取的属性名
  24. public function __get($name)
  25. {
  26. // 类内部: $this
  27. // return $this->$name;
  28. if ($name === 'salary') {
  29. if ($this->role === '太太') {
  30. return $this->$name;
  31. } else {
  32. return $this->$name - 1000;
  33. }
  34. }
  35. if ($name === 'age') {
  36. return $this->$name + 10;
  37. }
  38. }
  39. // 修改器/设置器, 魔术方法, __set(属性,值)
  40. public function __set($name, $value)
  41. {
  42. if ($name === 'age') {
  43. if ($value >= 18 && $value <= 50) {
  44. $this->$name = $value;
  45. } else {
  46. echo '年龄越界了';
  47. }
  48. }
  49. }
  50. // __get, __set, 成员访问非法拦截器
  51. }

实例化

-> 指向符 PHP中访问类成员时使用

  1. // 实例化
  2. // 在类外部,用对象访问成员
  3. $user1 = new User1();
  4. echo $user1->username , '<br>';
  5. // echo $user1->salary , '<br>';
  6. echo $user1->salary . '<br>';
  7. echo $user1->age . '<br>';
  8. $user1->age = 48;
  9. echo $user1->age . '<br>';

构造方法

构造方法: 实例化该类时,会自动触发
__construct:构造方法关键字
这个方法的作用可以理解为,创建一个方法,但是里面的属性由用户来填入

  1. public function __construct($username, $salary, $age, $nation = 'CHINA')
  2. {
  3. $this->username = $username;
  4. $this->salary = $salary;
  5. $this->age = $age;
  6. // 初始化静态属性
  7. self::$nation = $nation ;
  8. }
  9. $user2 = new User2('李老师', 2800, 30, '中国');
  10. echo $user2->username . '<br>';
  11. echo User2::$nation . '<br>';
  12. $user3 = new User2('猪老师', 3800, 40, '中国');

静态成员

static: 声明静态成员(可以是属性或者方法)
self:: 用来引用当前类
$this 用来引用当前实例
声明方法:

  1. // 静态属性
  2. public static $nation;
  3. // 静态方法
  4. public static function hello()
  5. {
  6. // return 'Hello,' . User2::$nation;
  7. // 在类中, 使用 self::来引用当前类
  8. return 'Hello,' . self::$nation;
  9. }

外部访问静态成员

  1. // echo $user3->nation . '<br>';
  2. // 类外部,访问静态成员,使用类名称::
  3. echo User2::$nation . '<br>';
  4. echo User2::hello() . '<br>';
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议