Blogger Information
Blog 41
fans 0
comment 0
visits 41095
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PHP命名空间类三种引用|类导入命名冲突解决|自动加载类|mysql操作
幸福敲门的博客
Original
1383 people have browsed it
  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',8900,'lhj@sing.com','1989-06-01'),
  32. ('李海涛','female',6600,'lht@sing.com','1998-10-22'),
  33. ('张锋','female',9400,'zf@sing.com','1992-12-31'),
  34. ('李家山','male',16800,'lhs@sing.com', '1998-8-5'),
  35. ('赵二宝','female',13800,'zeb@sing.com', '1990-01-08'),
  36. ('李明生','female',7300,'lms@sing.com','1989-09-18');
  37. -- 子查询插入(数据全复制插入)
  38. insert staffs (name, gender, salary, email, birthday) select name, gender, salary, email, birthday from staffs;

表插入数据图示:
数据库表插入图示

子查询插入图示
子查询插入

Correcting teacher:天蓬老师天蓬老师

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