1. 实例演示通过空间引用类的三种方式;
  2. 类的别名引入与命名冲突的解决方案是什么?
  3. 写一个自动加载类;
  4. 将课堂提到的数据库操作命令全部上机做一遍,选择一些你认为有意思 很重要的发布到博客作业中…

一、空间引用类的三种方式

  1. <?php
  2. // 父空间
  3. namespace you1 {
  4. class Name
  5. {
  6. }
  7. // 1. 非限定名称: Name, 相当于“当前路径”
  8. // 类名前无“空间前缘”
  9. echo Name::class , '<br>';
  10. // 2. 限定名称: you2\Name,相当于“相对路径”
  11. // 类名前存在“非全局开始的空间前缀”
  12. echo you2\Name::class, '<br>';
  13. // 3. 完全限定名称: \deom\Name, 相当于“绝对路径”
  14. // 类名前存在“全局开始的空间前缀”
  15. echo \deom\Name::class;
  16. }
  17. // 子空间
  18. namespace you1\you2 {
  19. class Name
  20. {
  21. }
  22. }
  23. // 其它空间
  24. namespace deom {
  25. class Name
  26. {
  27. }
  28. }

图示:
PHP命名空间类三种引用

二、类的别名引入与命名冲突的解决方案

  1. <?php
  2. // 空间别名
  3. // 使用别名的原因有二个: 简化, 重名
  4. // 在这引用另一个空间成员:app\admin\models\MailModel.php
  5. namespace app\controller;
  6. // 引入类文件
  7. require 'index1-1.php';
  8. // 使用完全限定名称
  9. $user = new\app\admin\models\MailModel;
  10. var_dump($user);
  11. echo '<hr>';
  12. // 类名与当前空间的类重名了,就不能与原始类名相同,所以就必须写别名
  13. use app\admin\models\MailModel as Mail;
  14. // 别名访问
  15. $user = new Mail;
  16. var_dump($user);
  17. echo '<hr>';
  18. // 当前空间重名类
  19. class MailModel
  20. {
  21. }
  22. $user = new MailModel;
  23. var_dump($user);

引入文件:index1-1.php

  1. <?php
  2. namespace app\admin\models;
  3. class MailModel
  4. {
  5. // ...
  6. }

图示:
类的别名引入与命名冲突的解决方案

三、自动加载类

自动加载器:loader.php

  1. spl_autoload_register(function($class){
  2. $file = str_replace('\\', DIRECTORY_SEPARATOR, $class) . '.php';
  3. require $file;
  4. });

文件:demo5.php

  1. namespace app;
  2. use app\models\StaffsModel;
  3. use app\models\SalarysModel;
  4. // 引入自动加载器
  5. require 'app/loader.php';
  6. $Staffs = new StaffsModel;
  7. $Salarys = new SalarysModel;
  8. var_dump($Staffs,$Salarys);

app\models\StaffsModel.php

  1. namespace app\models;
  2. class StaffsModel
  3. {
  4. }

app\models\SalarysModel.php

  1. namespace app\models;
  2. class StaffsModel
  3. {
  4. }

图示:
自动加载类

四、mysql操作

  1. -- 创建数据库 phpedu
  2. create database phpedu collate utf8mb4_unicode_ci;
  3. -- 删除数据库 test
  4. drop database test;
  5. -- 创建数据表 staffs
  6. create table staffs(
  7. id int unsigned auto_increment not null primary key comment 'ID',
  8. name varchar(20) not null comment '姓名',
  9. gender enum('male', 'female') not null comment '性别',
  10. email varchar(120) not null comment '邮箱',
  11. birthday date not null comment '生日',
  12. create_at timestamp not null default current_timestamp comment '创建时间',
  13. update_at timestamp not null default current_timestamp on update current_timestamp comment '更新时间'
  14. ) engine = innodb auto_increment=1 collate=utf8mb4_unicode_ci;
  15. -- 删除数据表 test
  16. drop table test
  17. -- 查看建表语句 staffs
  18. show create table staffs
  19. -- 查看数据表
  20. show tables
  21. -- 查看表结构 staffs
  22. desc staffs
  23. -- 添加表字段 salary
  24. alter table staffs add salary int unsigned not null default 2000 after gender;
  25. -- 修改表字段 salary
  26. alter table staffs change salary salary float not null default 1760 after gender;
  27. -- 删除表字段 test
  28. alter table staffs drop test;
  29. -- 表插入数据
  30. insert staffs (name, gender, salary, email, birthday) values
  31. ('刘红军', 'male', 5600.00, 'lhj@sing.com', '1989-06-01'),
  32. ('李海涛', 'female', 12560.99, 'lht@sing.com', '1992-12-31');
  33. ('张锋', 'male', 6987.00, 'zf@sing.com', '1988-06-01'),
  34. ('李家山', 'female', 8957.00, 'lhs@sing.com', '1993-11-24');
  35. ('赵二宝', 'male', 9651.00, 'zeb@sing.com', '1979-2-24'),
  36. ('李明生', 'female', 6589.00, 'lms@sing.com', '1998-8-5');
  37. -- 子查询插入(数据全复制插入)
  38. insert staffs (name, gender, salary, email, birthday) select name, gender, salary, email, birthday from staffs;

更多相关文章

  1. 第10章 0222-重载,引用与命名空间,学心心得,笔记(属性、方法重载,命名
  2. php学习小结(类成员重载、全局成员、空间声明及成员访问)
  3. 命名空间与数据库基础
  4. PHP基础知识:命名空间的使用、自动加载器和数据库操作
  5. 命名空间引用类的三种方式 和 命名冲突解决 与 一个自动加载类
  6. HashSet扩容机制在时间和空间上的浪费,远大于你的想象
  7. 类的重载与命名空间
  8. 类名的引入及自动加载类和常用mysql语句
  9. PHP基础: 命名空间的引入方式和自动加载类、附加:mysql的一些基

随机推荐

  1. 在recvfrom系统调用期间取消C ++ 11 std
  2. Android实现FM收音机
  3. 如何在linux中停止命令的日志(rsyslog)?
  4. windows管理linux机器
  5. Linux内核中实现生产者与消费者(避免无效
  6. Linux下搭建ftp服务
  7. linux 下使用 vim+cscope+ctags+taglist+
  8. linux下socket实现TCP通信的简单程序接口
  9. 嵌入式linux 字节对齐 导致输出Alignment
  10. 0K6410学习之linux移植nand flash