PHP8.1.21版本已发布
vue8.1.21版本已发布
jquery8.1.21版本已发布

博客列表 > PHP基础: 命名空间的引入方式和自动加载类、附加:mysql的一些基础命令

PHP基础: 命名空间的引入方式和自动加载类、附加:mysql的一些基础命令

zl的php学习博客
zl的php学习博客 原创
2021年02月24日 17:02:43 695浏览

1. 命名空间的引入方式

  1. <?php
  2. // 命名空间的引入方式
  3. // 1. 非限定名称, 类似于当前路径
  4. // 2. 限定名称, 类似于相对路径
  5. // 3. 完全限定名称, , 类似于绝对路径
  6. // 例:
  7. namespace TestDemo0223{
  8. class TestDemo0223{
  9. public $className;
  10. public function __construct() {
  11. $this->className = __CLASS__;
  12. }
  13. }
  14. // 非限定名称, 当前空间引用
  15. echo (new TestDemo0223())->className, '<br>';
  16. // 限定名称, 下级空间引用
  17. echo (new Demo1\Demo1())->className, '<br>';
  18. // 完全限定名称, 其他空间引用
  19. echo (new \TestDemo10223\TestDemo10223())->className, '<hr>';
  20. }
  21. namespace TestDemo0223\Demo1{
  22. class Demo1{
  23. public $className;
  24. public function __construct() {
  25. $this->className = __CLASS__;
  26. }
  27. }
  28. }
  29. namespace TestDemo10223{
  30. class TestDemo10223{
  31. public $className;
  32. public function __construct() {
  33. $this->className = __CLASS__;
  34. }
  35. }
  36. }

1.2. 别名引入——命名冲突的解决方案

  • 作用: 1. 解决命名冲突; 2. 简化过长的空间路径.

实例:

  1. namespace ns{
  2. use ns\ns1\User;
  3. use nsn\nsn1\nsn2\User as NsnUser;
  4. $user1 = new User();
  5. $user2 = new NsnUser();
  6. // 如果别名和引入空间的类名相同,则可以省略
  7. use nsn\nsn1\nsn2\Admin;
  8. $admin = new Admin();
  9. }
  10. namespace ns\ns1{
  11. class User{}
  12. }
  13. namespace nsn\nsn1\nsn2{
  14. class User{}
  15. class Admin{}
  16. }
  • 扩展:动态类

    1. namespace TestDemo10223 {
    2. class TestDemo10223
    3. {
    4. public $className;
    5. const namespaceName = __NAMESPACE__;
    6. public function __construct()
    7. {
    8. $this->className = __CLASS__;
    9. }
    10. public function show():string
    11. {
    12. return __FUNCTION__;
    13. }
    14. }
    15. function show():string
    16. {
    17. return __FUNCTION__;
    18. }
    19. echo '----------------------------调用类----------------------------------------<br>';
    20. $cla = '\TestDemo10223\TestDemo10223';
    21. echo $cla::namespaceName, '<br>';
    22. echo (new $cla)->show(), '<br>';
    23. echo '---------------------------调用函数-----------------------------------------<br>';
    24. $func = '\TestDemo10223\show';
    25. echo $func(), '<br>';
    26. }

3. 自动加载类

使用函数spl_autoload_register(callback);,实例:

  1. test_load.php

    1. <?php
    2. namespace {
    3. // 自动加载类(命名空间版)
    4. require 'test\test_load.php';
    5. use test\TestDemo02231;
    6. echo (new TestDemo02231) -> className, '<br>';
    7. }
  2. test\test_load.php
    ```php
    <?php

spl_autoload_register(function ($clas){
// 1. 把空间地址符 “\” 转换成 路径分隔符 “/“
// 2. 把修改后的路径字符串的尾部添加 “.php” 后缀
// 3. 引入这个文件
echo $clas, ‘<br>‘;
echo str_replace(‘\‘, DIRECTORY_SEPARATOR, $clas) . ‘.php’, ‘<br>‘;
$file = str_replace(‘\‘, DIRECTORY_SEPARATOR, $clas) . ‘.php’;
require $file;
// require ‘test\TestDemo02231.php’;
// exit();
});

  1. 3. test\TestDemo02231.php
  2. ```php
  3. <?php
  4. namespace test;
  5. class TestDemo02231{
  6. public $className;
  7. public function __construct() {
  8. $this->className = __CLASS__;
  9. }
  10. }

4.mysql命令

sql语句分类
  • DDL(数据定义): create(添加), alter(修改), drop(删除)
  • DML(数据操作): insert, detele, update, select
  • DCL(数据控制): grant(添加), revoke(撤销)
  • TCL(事务控制): commit(事务提交), rollback(事务回滚)
    数据库操作 数据库名为: php_test_project数据库名为: php_test_project
  1. 登录数据库: mysql -uadmin -D php_test_project -p
  2. 退出数据库: quit;
  3. 查看数据库: select database();
  4. 选择数据库: use php_test_project;
  5. 查看创建数据库的命令: show create database php_test_project
  6. 查看数据库的状态: status
  7. 新建数据库: create database phpedu collate utf8mb4_unicode_ci;
  8. 删除数据库: drop database phpedu;
数据表操作
  1. 新建表:
    1. # UNSIGNED: 无符号,大于零的数字
    2. # PRIMARY KEY: 设置主键
    3. # COMMENT: 注释
    4. # DEFAULT: 默认值
    5. # CURRENT_TIMESTAMP: 当前时间戳, mysql的内置函数
    6. # enum('male', 'female'): 枚举类型,意为只能输入这两个值,输入其他值报错
    7. # ENGINE: 引擎
    8. # COLLATE: 校对规则
    9. # auto_increment: 自动递增的初始值
    10. CREATE TABLE staffs (
    11. sid INT UNSIGNED auto_increment PRIMARY KEY COMMENT "id",
    12. name VARCHAR (150) NOT NULL COMMENT "姓名",
    13. gender enum('male', 'female') NOT NULL COMMENT "性别",
    14. birthday date NOT NULL COMMENT "生日",
    15. create_d TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT "创建日期",
    16. update_d TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT "修改如期"
    17. ) ENGINE = INNODB auto_increment = 1 COLLATE = utf8mb4_unicode_ci;
  2. 查看表结构: desc staffs;
  3. 查看建表语句: show create table staffs;
  4. 查看数据库中有哪些表: show tables
  5. 删除表: drop table staffs
  6. 修改表:
    6.1. 增加字段: ALTER TABLE staffs ADD salary INT UNSIGNED NOT NULL DEFAULT 2000 COMMENT "工资" AFTER gender;
    6.2 修改字段: ALTER TABLE staffs change salary salary float UNSIGNED NOT NULL DEFAULT 30000;
    6.3 删除字段: alter table staffs drop salary;
CRUD操作

1.插入数据insert:

  1. #单条数据1
  2. insert staffs (name, gender, birthday, salary) values ("张三", "male", "1999-01-01", 9800)
  3. #单条数据2
  4. insert staffs set name="李四", gender="male", birthday="1998-01-01", salary="10000.01";
  5. #多条数据
  6. insert staffs (name,gender, birthday, salary) values
  7. ('king','male','1992-10-29', 6500),
  8. ('amy','female','1998-10-22', 7800),
  9. ('betty','female','1953-10-19', 9800),
  10. ('jack','male', '1977-10-24', 12500),
  11. ('marry','female', '1990-01-08', 15800),
  12. ('alice','female','1989-09-18', 8600),
  13. ('admin','male','1989-09-18', 16600),
  14. ('lisa','female','1983-09-13', 13500),
  15. ('peter','male','1993-09-29', 9600),
  16. ('linda','female','1993-09-29', 5600);
  17. #多条数据
  18. insert staffs (name,gender, salary, email,birthday)
  19. (select name,gender, salary, email,birthday from staffs);
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议