1. 命名空间的引入方式
<?php
// 命名空间的引入方式
// 1. 非限定名称, 类似于当前路径
// 2. 限定名称, 类似于相对路径
// 3. 完全限定名称, , 类似于绝对路径
// 例:
namespace TestDemo0223{
class TestDemo0223{
public $className;
public function __construct() {
$this->className = __CLASS__;
}
}
// 非限定名称, 当前空间引用
echo (new TestDemo0223())->className, '<br>';
// 限定名称, 下级空间引用
echo (new Demo1\Demo1())->className, '<br>';
// 完全限定名称, 其他空间引用
echo (new \TestDemo10223\TestDemo10223())->className, '<hr>';
}
namespace TestDemo0223\Demo1{
class Demo1{
public $className;
public function __construct() {
$this->className = __CLASS__;
}
}
}
namespace TestDemo10223{
class TestDemo10223{
public $className;
public function __construct() {
$this->className = __CLASS__;
}
}
}
1.2. 别名引入——命名冲突的解决方案
- 作用: 1. 解决命名冲突; 2. 简化过长的空间路径.
实例:
namespace ns{
use ns\ns1\User;
use nsn\nsn1\nsn2\User as NsnUser;
$user1 = new User();
$user2 = new NsnUser();
// 如果别名和引入空间的类名相同,则可以省略
use nsn\nsn1\nsn2\Admin;
$admin = new Admin();
}
namespace ns\ns1{
class User{}
}
namespace nsn\nsn1\nsn2{
class User{}
class Admin{}
}
扩展:动态类
namespace TestDemo10223 {
class TestDemo10223
{
public $className;
const namespaceName = __NAMESPACE__;
public function __construct()
{
$this->className = __CLASS__;
}
public function show():string
{
return __FUNCTION__;
}
}
function show():string
{
return __FUNCTION__;
}
echo '----------------------------调用类----------------------------------------<br>';
$cla = '\TestDemo10223\TestDemo10223';
echo $cla::namespaceName, '<br>';
echo (new $cla)->show(), '<br>';
echo '---------------------------调用函数-----------------------------------------<br>';
$func = '\TestDemo10223\show';
echo $func(), '<br>';
}
3. 自动加载类
使用函数spl_autoload_register(callback);,实例:
test_load.php
<?php
namespace {
// 自动加载类(命名空间版)
require 'test\test_load.php';
use test\TestDemo02231;
echo (new TestDemo02231) -> className, '<br>';
}
- 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();
});
3. test\TestDemo02231.php
```php
<?php
namespace test;
class TestDemo02231{
public $className;
public function __construct() {
$this->className = __CLASS__;
}
}
4.mysql命令
sql语句分类
- DDL(数据定义): create(添加), alter(修改), drop(删除)
- DML(数据操作): insert, detele, update, select
- DCL(数据控制): grant(添加), revoke(撤销)
- TCL(事务控制): commit(事务提交), rollback(事务回滚)
数据库操作 数据库名为: php_test_project数据库名为: php_test_project
- 登录数据库:
mysql -uadmin -D php_test_project -p
- 退出数据库:
quit;
- 查看数据库:
select database();
- 选择数据库:
use php_test_project;
- 查看创建数据库的命令:
show create database php_test_project
- 查看数据库的状态:
status
- 新建数据库:
create database phpedu collate utf8mb4_unicode_ci;
- 删除数据库:
drop database phpedu;
数据表操作
- 新建表:
# UNSIGNED: 无符号,大于零的数字
# PRIMARY KEY: 设置主键
# COMMENT: 注释
# DEFAULT: 默认值
# CURRENT_TIMESTAMP: 当前时间戳, mysql的内置函数
# enum('male', 'female'): 枚举类型,意为只能输入这两个值,输入其他值报错
# ENGINE: 引擎
# COLLATE: 校对规则
# auto_increment: 自动递增的初始值
CREATE TABLE staffs (
sid INT UNSIGNED auto_increment PRIMARY KEY COMMENT "id",
name VARCHAR (150) NOT NULL COMMENT "姓名",
gender enum('male', 'female') NOT NULL COMMENT "性别",
birthday date NOT NULL COMMENT "生日",
create_d TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT "创建日期",
update_d TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT "修改如期"
) ENGINE = INNODB auto_increment = 1 COLLATE = utf8mb4_unicode_ci;
- 查看表结构:
desc staffs;
- 查看建表语句:
show create table staffs;
- 查看数据库中有哪些表:
show tables
- 删除表:
drop table staffs
- 修改表:
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
insert staffs (name, gender, birthday, salary) values ("张三", "male", "1999-01-01", 9800)
#单条数据2
insert staffs set name="李四", gender="male", birthday="1998-01-01", salary="10000.01";
#多条数据
insert staffs (name,gender, birthday, salary) values
('king','male','1992-10-29', 6500),
('amy','female','1998-10-22', 7800),
('betty','female','1953-10-19', 9800),
('jack','male', '1977-10-24', 12500),
('marry','female', '1990-01-08', 15800),
('alice','female','1989-09-18', 8600),
('admin','male','1989-09-18', 16600),
('lisa','female','1983-09-13', 13500),
('peter','male','1993-09-29', 9600),
('linda','female','1993-09-29', 5600);
#多条数据
insert staffs (name,gender, salary, email,birthday)
(select name,gender, salary, email,birthday from staffs);