Blogger Information
Blog 37
fans 1
comment 0
visits 32495
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
类名的引入及自动加载类和常用mysql语句
Jason Pu?
Original
824 people have browsed it

一.类名的三种引用方式

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;
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