Blogger Information
Blog 29
fans 1
comment 0
visits 14853
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PHP中文件的包含与作用域以及类和对象的基础
风车
Original
412 people have browsed it

文件包含

文件包含的本质就是把外部文件的内容插入到当前的位置
包含的脚本与当前脚本公用一个作用域,相当于是一个文件
用文件包含的方式可以实现一个网站的模块化,将网站的各个部分分到不同的文件,在需要时分别调用
有两个关键字
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>';
Correcting teacher:PHPzPHPz

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