批改状态:合格
老师批语:
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文件
<?phpspl_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);
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号