Correcting teacher:天蓬老师
Correction status:qualified
Teacher's comments:
1、非限定名称:相当于当前路径,类名前无空间前缀;
2、限定名称:相当于相对路径,类名前存在非全句开始的空间前缀;
3、完全限定名称:相当于绝对路径,类名前存在全局开始的空间前缀;
namespace ns1{
class User
{
}
//非限定名称
echo User::class,'<br>';
// 限定名称
echo ns2\User::class,'<br>';
// 完全限定名称
echo \ns\User::class;
}
namespace ns1\ns2{
class User
{
}
}
namespace ns{
class User
{
}
}
动态类:类名在变量中
namespace ns;
class Test
{
const cn=__CLASS__;
}
// 赋值时必须使用完全限定名称
$class='\ns\Test';
echo $class::cn;
使用别名的原因有:简化,重名
namespace app\admin\controllers;
require 'demo13.php';
// 当前空间引用一个与自己完全无关的类,需要使用完全限定名称
$obj=new \app\admin\models\UserModel();
var_dump($obj);
使用use导入空间别名,来简化类名称,默认导入就是一个完全限定名称
use \app\admin\models\UserModel as UserModel;
$user=new UserModel();
var_dump($user);
use \app\admin\models\UserModel;
$user=new UserModel();
var_dump($user)
如果通过别名导入的类与当前空间的类重名,类别名不能与原始类名相同,别名必须写
class UserModel
{
}
use app\admin\models\UserModel as User;
$user=new User;
var_dump($user);
$obj=new UserModel;
var_dump($obj);
全局成员:类,函数,常量
访问类,只在当前空间中查找,不会自动去全局找。
访问函数,如果当前空间不存在,会自动到全局找
访问常量,如果当前空间不存在,会自动到全局查询
将类空间名称与类文件所在的路径进行映射,实现自动加载
创建一个load.php文件
<?php
spl_autoload_register(function($class){
// 将类前缀与类的路径进行映射
// 1将空间分隔符转为路径分隔符,
// 2加上扩展名'.php',加载进来
$file=str_replace('\\',DIRECTORY_SEPARATOR,$class).'.php';
require $file;
});
客户端脚本
namespace app;
use \app\model\AdminModel;
use \app\model\UserModel;
// require 'app/model/AdminModel.php';
// require 'app/model/UserModel.php';
require 'app/load.php';
$user=new UserModel();
var_dump($user);
$admin=new AdminModel();
var_dump($admin);
mysql -h localhost -p 3306 -u 账号 -p密码 -d mysql
mysql -u root -p
mysql -u root 数据库名称 -p
quit 退出
create database php;
show create database php;
create table user(
id int unsigned auto_increment not null primary key,
name varchar(30) not null comment'姓名',
gender enum('male','famale') not null comment'性别',
email varchar(150) not null comment'邮箱',
borthday date not null comment'生日',
create_time timestamp not null default current_timestamp comment'创建日期',
update_time timestamp not null default current_timestamp on update current_timestamp comment'更新日期'
) engine=innodb;
show create table user;
show tables;
drop table test;
修改表
增加字段alter table user add cname varchar(50) not null default '' after gender;
更新字段alter table user change cname ename char(16) not null default '' after gender;
删除字段
alter table user drop ename;
insert user(name,gender,email,borthday)values('wang','male','12@qq.com','2020-01-01');
insert user(name,gender,email,borthday)(select name,gender,email,borthday from user);