博客列表 >文件本质与作用、关键字的学习

文件本质与作用、关键字的学习

阿杰
阿杰原创
2022年05月19日 19:23:01758浏览

1.文件的本质与作用域

(1)本质:将目录文件复制到当前位置

  • 使用include或者require引入文件
  1. // 1. include
  2. include __DIR__ .'/inc/f1.php';
  3. // $username = '王五';
  4. echo $username. '<hr>';
  5. $email = include __DIR__ .'/inc/f1.php';
  6. echo $email.'<hr>';
  7. // 2. require
  8. require __DIR__.'/inc/f1.php';
  9. echo $username. '<hr>';
  10. $email = require __DIR__ .'/inc/f1.php';
  11. echo $email.'<hr>';

(2)作用域:作用在当前引进页面

  • header.php
  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>Document</title>
  8. </head>
  9. <body>
  10. <!-- 页眉 -->
  11. <header>
  12. <nav>
  13. <a href="">首页</a>
  14. <a href="">教学视频</a>
  15. <a href="">学习路径</a>
  16. <a href="">技术文章</a>
  17. </nav>
  18. </header>
  • footer.php
  1. <!-- 页脚 -->
  2. <footer>
  3. <div class="copy">php中文网版权所以&copy;2022-2025</div>
  4. </footer>
  5. </body>
  6. </html>
  • 主页面
  1. <!-- 页眉 -->
  2. <?php require __DIR__.'/inc/header.php' ?>
  3. <!-- 主体 -->
  4. <main>
  5. <ul>
  6. <li><a href="">最新文章1</a></li>
  7. <li><a href="">最新文章2</a></li>
  8. <li><a href="">最新文章3</a></li>
  9. <li><a href="">最新文章4</a></li>
  10. <li><a href="">最新文章5</a></li>
  11. <li><a href="">最新文章6</a></li>
  12. <li><a href="">最新文章7</a></li>
  13. <li><a href="">最新文章8</a></li>
  14. <li><a href="">最新文章9</a></li>
  15. <li><a href="">最新文章10</a></li>
  16. </ul>
  17. </main>
  18. <!-- 页脚 -->
  19. <?php require __DIR__.'/inc/footer.php' ?>

2.类的关键字

(1)class、new 类的声明与实例

  1. // 类声明
  2. // 1. class
  3. class Goods
  4. {
  5. // ...
  6. }
  7. // 类的实例化:创建对象的过称
  8. // 2. new
  9. $goods = new Goods;
  10. var_dump($goods);

(2)public 公有,可供外部使用

  1. class User1
  2. {
  3. // public
  4. public $username = '张三';
  5. }
  6. $user1 = new User1();
  7. echo $user1->username.'<hr>';

(3)private 私有,仅限当前类中使用

  1. class User1
  2. {
  3. // public
  4. public $username = '张三';
  5. // private
  6. private $age = 18;
  7. }
  8. $user1 = new User1();
  9. echo $user1->username.'<hr>';
  10. echo $user1->age.'<hr>';

  1. class User1
  2. {
  3. // public
  4. public $username = '张三';
  5. // private
  6. private $age = 18;
  7. public function getAge(){
  8. return $this->age;
  9. }
  10. }
  11. $user1 = new User1();
  12. echo $user1->username.'<hr>';
  13. // echo $user1->age.'<hr>';
  14. echo '获取当前类中的age:'.$user1->getAge().'<hr>';

(4)protected 继承(extends), 可在本类或子类中使用, 不对外公开

  • 直接使用
  1. class User1
  2. {
  3. // public 公共/公共,默认
  4. public $username = '张三';
  5. // private 私有,仅限在当前类中使用
  6. private $age = 18;
  7. // protected 继承, 可在本类或子类中使用, 不对外公开
  8. protected $id = 1;
  9. public function getAge(){
  10. return $this->age;
  11. }
  12. }
  13. $user1 = new User1();
  14. echo $user1->username.'<hr>';
  15. // echo $user1->age.'<hr>';
  16. echo '获取当前类中的age:'.$user1->getAge().'<hr>';
  17. echo $user1->id.'<hr>';

  • 当前类中使用
  1. class User1
  2. {
  3. // public 公共/公共,默认
  4. public $username = '张三';
  5. // private 私有,仅限在当前类中使用
  6. private $age = 18;
  7. // protected 继承, 可在本类或子类中使用, 不对外公开
  8. protected $id = 1;
  9. public function getAge(){
  10. return $this->age;
  11. }
  12. public function getId(){
  13. return $this->id;
  14. }
  15. }
  16. $user1 = new User1();
  17. echo $user1->username.'<hr>';
  18. // echo $user1->age.'<hr>';
  19. echo '获取当前类中的age:'.$user1->getAge().'<hr>';
  20. // echo $user1->id.'<hr>';
  21. echo '获取当前类中的id:'.$user1->getId().'<hr>';

  • 子类中使用
  1. class Stu extends User1
  2. {
  3. public function getId(){
  4. return $this->id;
  5. }
  6. }
  7. $stu = new Stu();
  8. echo '子类中使用父类的id:'.$stu->getId().'<hr>';

(5)abstract 抽象

  • 将父类声明为一个抽象类
  1. abstract class Demo1
  2. {
  3. }
  4. var_dump(new Demo1);

  • 如果不想让用户直接使用父类,而必须通过继承/扩展的子类来间接使用
  1. class Demo2 extends Demo1
  2. {
  3. }
  4. echo 'Demo2的父类是:'.get_parent_class(new Demo2).'<hr>';

(6)interface 接口

  • 声明接口
  1. // interface: 声明接口
  2. interface iUser
  3. {
  4. // 1. 类常量
  5. const NATION = 'CHINA';
  6. // 2. 必须是抽象,必须是public
  7. public function m1();
  8. public function m2();
  9. }
  • 接口不能直接用, 要用一个类来实现它

(1)用普通类来实现一个接口, 必须将接口中的所有抽象方法全部实现

  1. class Demo11 implements iUser
  2. {
  3. public function m1()
  4. {
  5. }
  6. // public function m2()
  7. // {
  8. // }
  9. }

(2)用抽象类来实现一个接口, 允许有不实现的抽象成员

  1. abstract class Demo22 implements iUser
  2. {
  3. public function m1()
  4. {
  5. }
  6. }

(3)可通过接口,间接实现多继承

  1. interface A
  2. {
  3. }
  4. interface B
  5. {
  6. }
  7. interface C
  8. {
  9. }
  10. class Test implements A, B, C
  11. {
  12. }
  13. // 查看当前类实现的所有接口
  14. $arr = class_implements('Test');
  15. printf('<pre>%s</pre>', print_r($arr, true));

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