类的引用方式

1、非限定名称:相当于当前路径,类名前无空间前缀;
2、限定名称:相当于相对路径,类名前存在非全句开始的空间前缀;
3、完全限定名称:相当于绝对路径,类名前存在全局开始的空间前缀;

  1. namespace ns1{
  2. class User
  3. {
  4. }
  5. //非限定名称
  6. echo User::class,'<br>';
  7. // 限定名称
  8. echo ns2\User::class,'<br>';
  9. // 完全限定名称
  10. echo \ns\User::class;
  11. }
  12. namespace ns1\ns2{
  13. class User
  14. {
  15. }
  16. }
  17. namespace ns{
  18. class User
  19. {
  20. }
  21. }

动态类/动态全局成员

动态类:类名在变量中

  1. namespace ns;
  2. class Test
  3. {
  4. const cn=__CLASS__;
  5. }
  6. // 赋值时必须使用完全限定名称
  7. $class='\ns\Test';
  8. echo $class::cn;

空间别名

使用别名的原因有:简化,重名

  1. namespace app\admin\controllers;
  2. require 'demo13.php';
  3. // 当前空间引用一个与自己完全无关的类,需要使用完全限定名称
  4. $obj=new \app\admin\models\UserModel();
  5. var_dump($obj);

使用use导入空间别名,来简化类名称,默认导入就是一个完全限定名称

  1. use \app\admin\models\UserModel as UserModel;
  2. $user=new UserModel();
  3. var_dump($user);

如果别名与原始的类目部分相同,别名可以不写

  1. use \app\admin\models\UserModel;
  2. $user=new UserModel();
  3. var_dump($user)

如果通过别名导入的类与当前空间的类重名,类别名不能与原始类名相同,别名必须写

  1. class UserModel
  2. {
  3. }
  4. use app\admin\models\UserModel as User;
  5. $user=new User;
  6. var_dump($user);
  7. $obj=new UserModel;
  8. var_dump($obj);

空间成员的访问优先级

全局成员:类,函数,常量
访问类,只在当前空间中查找,不会自动去全局找。
访问函数,如果当前空间不存在,会自动到全局找
访问常量,如果当前空间不存在,会自动到全局查询

实现一个自动加载类

将类空间名称与类文件所在的路径进行映射,实现自动加载
创建一个load.php文件

  1. <?php
  2. spl_autoload_register(function($class){
  3. // 将类前缀与类的路径进行映射
  4. // 1将空间分隔符转为路径分隔符,
  5. // 2加上扩展名'.php',加载进来
  6. $file=str_replace('\\',DIRECTORY_SEPARATOR,$class).'.php';
  7. require $file;
  8. });

客户端脚本

  1. namespace app;
  2. use \app\model\AdminModel;
  3. use \app\model\UserModel;
  4. // require 'app/model/AdminModel.php';
  5. // require 'app/model/UserModel.php';
  6. require 'app/load.php';
  7. $user=new UserModel();
  8. var_dump($user);
  9. $admin=new AdminModel();
  10. var_dump($admin);

mysql

mysql的连接与退出

mysql -h localhost -p 3306 -u 账号 -p密码 -d mysql
mysql -u root -p
mysql -u root 数据库名称 -p
quit 退出

数据库操作

  • 创建
    create database 数据库名称;
    create database 数据库名称 collate utf8mb4_unicode_ci;
    create database php;
  • 查看建库语句
    show create database php;
  • 选择
    use 数据库名称;
  • 删除
    drop database php;

    数据表操作

  • 创建表
    auto_increment 自增
    primeary key 主键
    comment 备注
    1. create table user(
    2. id int unsigned auto_increment not null primary key,
    3. name varchar(30) not null comment'姓名',
    4. gender enum('male','famale') not null comment'性别',
    5. email varchar(150) not null comment'邮箱',
    6. borthday date not null comment'生日',
    7. create_time timestamp not null default current_timestamp comment'创建日期',
    8. update_time timestamp not null default current_timestamp on update current_timestamp comment'更新日期'
    9. ) engine=innodb;
  • 查看建表语句
    show create table user;
  • 查看表结构
    desc 表名;
  • 查看有多少表
    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;

  • CURD
    • 插入 insert
      1. 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);

更多相关文章

  1. 计算文本算式,其实很简单
  2. 这也能用Jenkins?快速实现一个定期批量登录远程虚拟机并支持添加
  3. MySQL的SQL语句 - 数据定义语句(18)- RENAME TABLE 语句
  4. CentOS7.6修改主机名称hostname
  5. 命名空间与数据库基础
  6. PHP基础知识:命名空间的使用、自动加载器和数据库操作
  7. 命名空间引用类的三种方式 和 命名冲突解决 与 一个自动加载类
  8. 类名的引入及自动加载类和常用mysql语句
  9. PHP基础: 命名空间的引入方式和自动加载类、附加:mysql的一些基

随机推荐

  1. 正式开源的优雅测试框架 PestPHP
  2. PHP魔术方法之__call和__callStatic详解(
  3. PHP面向对象之3种数据访问方式详解(代码实
  4. PHP时间戳和日期格式相互转换
  5. php面向对象之析构函数和对象引用
  6. PHP中面向对象之继承
  7. EasySwoole 基础入门
  8. php实现cookie即时生效
  9. CGI,FastCGI,PHP-CGI,PHP-FPM 简单了解
  10. php session垃圾回收机制