PHP8.1.21版本已发布
vue8.1.21版本已发布
jquery8.1.21版本已发布

博客列表 > 类名的引入及自动加载类和常用mysql语句

类名的引入及自动加载类和常用mysql语句

Jason Pu?
Jason Pu? 原创
2021年02月24日 16:21:05 780浏览

一.类名的三种引用方式

1. 类名的引用方式可以参考文件系统:绝对路径,相对路径,当前路径;类名也可以分为三种引用方式:

1)非限定名称
2)限额名称
3)完全限定名称

以下我们定义三个空间进行举例说明:

  1. //父空间
  2. namespace father {
  3. class Test{
  4. }
  5. //1.非限定名称,相当于文件系统中的当前路径
  6. echo Test::class,"<br>";
  7. //2.限定名称,相当于文件系统中的相对路径
  8. echo son\Test::class,"<br>";
  9. //3.完全限定名称,相当于文件系统中的绝对路径
  10. echo \otherspace\Test::class,"<br>";
  11. }
  12. //子空间
  13. namespace father\son {
  14. class Test{
  15. }
  16. }
  17. //其它空间
  18. namespace otherspace {
  19. class Test{
  20. }
  21. }

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

1.空间别名

在PHP中,别名是通过操作符 use 来实现的,使用别名的好处:1.简化,2.防止重名
例如:

  1. namespace foo;
  2. //当前空间引用一个无自己无关联的类,需要使用完全限定名称:
  3. require 'homework1.php';
  4. $test = new \father\son\Test;
  5. var_dump($test);//运行结果:object(father\son\Test)#1 (0) { }
  6. // 使用别名,默认导入就是一个完全限定名称:
  7. use father\son\Test as Test;
  8. // 如果类别名和原始类名相同,可以省略:
  9. //use father\son\Test; //效果等同于 use father\son\Test as Test;

2.命名冲突的解决:

如果导入类的原始类名与当前空间的类重名,那就不能省略了,例如:

  1. class Test{
  2. }
  3. use father\son\Test as Demo;//使用不同别名避免冲突
  4. // 别名访问:
  5. $demo = new Demo;
  6. var_dump($demo);//object(father\son\Test)#2 (0) { }
  7. $test = new Test;
  8. var_dump($test);//object(foo\Test)#3 (0) { }

三.自动加载类:

用sql_autoload_register()函数可以注册任意数量的自动加载器,将类空间名称与类文件所在的路径进行映射,实现自动加载
创建一个个类文件:config\models\CodModel.php, models\RegisterModel.php
config\models\CodModel.php内容如下:

  1. <?php
  2. namespace config\models;
  3. class CodeModel
  4. {
  5. //....
  6. }

config\models\RegisterModel.php内容如下:

  1. <?php
  2. namespace config\models;
  3. class RegisterModel
  4. {
  5. //...
  6. }

在config文件下写一个自动加载:

  1. <?php
  2. spl_autoload_register(
  3. function($class){
  4. //第一步:将空间分割符用DIRECTORY_SEPARATOR转为系统默认的路径分隔符
  5. //第二步:加上扩展名“.php“加载进来
  6. $file = str_replace('\\',DIRECTORY_SEPARATOR,$class).'.php';
  7. require $file;
  8. }
  9. );

测试成果:

  1. namespace config;
  2. //使用自动加载器:
  3. require 'config/loader.php';
  4. use config\models\CodeModel;
  5. use config\models\RegisterModel;
  6. $code = new CodeModel;
  7. $register = new RegisterModel;
  8. var_dump($code,$register);//运行结果:object(config\models\CodeModel)#2 (0) { } object(config\models\RegisterModel)#3 (0) { }

四.MySql的建表及常用操作:

以建立一个新闻列表为例:

  1. CREATE TABLE news (
  2. id int(10) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  3. title varchar(100) NOT NULL comment '标题',
  4. author varchar(20) NOT NULL comment '作者',
  5. content text NOT NULL comment '内容',
  6. created_at datetime NOT NULL comment '发表时间'
  7. )ENGINE=InnoDB auto_increment=1 collate = utf8mb4_unicode_ci;

查看结构:

  1. desc news;


查看有哪些表:

  1. show tables;

查看建表语句:

  1. show create table news;


删除字段:

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