1.空间引用类的三种方式
// 父空间
namespace test {
class name
{
}
// 1. 非限定名称:name,相当于当前路径
// 类名前无空间前缀
echo name::class,'<br>';
// 2.限定名称:test2\name,相当于相对路径
// 类名前存在非全局开始的空间前缀
echo test2\name::class,'<br>';
// 3.完全限定名称:\two\name, 相当于绝对路径
// 类名前存在全局开始的空间前缀
echo \two\name::class,'<br>';
}
// 子空间
namespace test\test2 {
class name
{
}
}
// 其他空间
namespace two {
class name
{
}
}
2. 类的别名引入与命名冲突的解决方案
使用空间别名的原因:简化、重名
- 文件:demo3.php
namespace app\controller;
// 引入类文件
require 'demo3-1.php';
// 使用完全限定名称
$user = new \app\admin\models\SalaryModel;
var_dump($user);
echo '<hr>';
// 类名与当前空间的类重名了,就不能与原始类名相同,所以就必须写别名
use app\admin\models\SalaryModel as Salary;
// 别名访问
$user = new Salary;
var_dump($user);
echo '<hr>';
// 当前空间重名类
class SalaryModel
{
}
$user = new SalaryModel;
var_dump($user);
- 引入文件:demo3-1.php
namespace app\admin\models;
class SalaryModel
{
}
3. 自动加载类
- 自动加载器:loader.php
spl_autoload_register(function($class){
$file = str_replace('\\', DIRECTORY_SEPARATOR, $class) . '.php';
require $file;
});
- 文件:demo5.php
namespace app;
use app\models\StaffsModel;
use app\models\SalarysModel;
// 引入自动加载器
require 'app/loader.php';
$Staffs = new StaffsModel;
$Salarys = new SalarysModel;
var_dump($Staffs,$Salarys);
- app\models\StaffsModel.php
namespace app\models;
class StaffsModel
{
}
- app\models\SalarysModel.php
namespace app\models;
class StaffsModel
{
}
4.mysql命令
-- 创建数据表
create database phpedu collate utf8mb4_unicode_ci;
-- 选择默认数据库
use phpedu;
-- 删除数据表
drop database user;
-- 创建数据表users
create table users (
sid int unsigned auto_increment not null primary key,
name varchar(20) not null comment '姓名',
gender enum('male','female') not null comment '性别',
email varchar(150) not null comment '邮箱',
birthday date not null comment '生日',
create_at timestamp not null default current_timestamp comment '创建日期',
update_at timestamp not null default current_timestamp on update current_timestamp comment '更新日期'
) engine = innodb auto_increment = 1 collate = utf8mb4_unicode_ci;
-- 增加字段
alter table users add salary int unsigned not null default 2999 after gender;
-- 更新字段定义
alter table users change salary salary float unsigned not null default 3000 after gender;
-- 删除字段
alter table users drop test;
-- 删除表
drop table test;
-- 插入 insert
insert users (name,gender,salary,email,birthday)
values ('joe','male',3999,'joe@qq.com','1988-09-02');
-- 批量插入
insert users (name,gender,salary,email,birthday) values
('hack','male',5566,'hack@qq.com','2000-02-23'),
('jack','male',4533,'jack@qq.com','1966-02-23'),
('mack','male',2566,'mack@qq.com','1997-02-23'),
('unik','male',6555,'unik@qq.com','1987-02-23'),
('ming','male',1999,'hack@qq.com','1990-02-23');
-- 子查询式插入,复制插入
insert users (name,gender,salary,email,birthday)
(select name,gender,salary,email,birthday from users);