类
由class开头定义类名
一个类中包含类的属性及变量,类的方法及函数
类拥有自己的伪变量$this
调用类需要先创建实例 如 $a= new 类名
public 类内部外部与子类都可以调用
protected 仅能受子类调用 实例中无法通过$x-> 进行调用
private 只有本类内部可以使用 子类和实例中均无法调用
*未定义关键词,则该方法默认为公有
构造函数
1 | void __construct ([ mixed $args [, $... ]] ) |
创建实例直接运行,无法被替代
析构函数
1 | void __destruct ( void ) |
对象结束时运行
继承
class 新的类 extends 原有类
接口
接口定义方法,类实现方法,可由单一类实现多个接口功能
先用interface定义接口 ,点名需要实现方向,无需编写具体内容(所有方法为公有)
实现接口内容 在定义类时使用implements (类中需实现接口定义中所有方法)、
10.21~10.27
魔术常量
LINE
根据在脚本所处位置行数决定
FILE
根据文件路径和文件名决定
返回绝对路径和文件名
DIR
根据文件所在目录决定
FUNCTION
在函数体内,返回函数的名称
不在函数体内时 返回空字符串
CLASS
返回所在类的名称 包含被声明的作用区域
TRAIT
返回 trait名及其被声明的作用区域
METHOD
返回方法被定义时的名字
NAMESPACE
返回当前命名空间的名称
FUNCTION和METHOD的区别
当两者同处于类内部函数体中,METHOD比 FUNCTION前面多了个“类名::”
当两者同处于类外部函数体中,METHOD比跟FUNCTION无区别
trait和class的区别
(1)class 可以被实例化 trait不行
(2)class 继承需要一个一个写继承关系,trait不需要可直接进行调用
const和define的区别
两者皆为定义常量
const用于定义类成员的常量,不能在判断语句中使用
define用于全局常量,不能在类中使用,但可以在判断语句中使用
抽象类
类中至少一个方法声明为抽象 abstract function 方法名(抽象方法只能声明调用参量,不要定义具体功能)
则该类必须声明为抽象类
抽象类无法被实例化
继承后子类必须定义父类所有抽象方法,且访问控制要比父类宽松或者一样,继承后子类可以被实例化
php表单
1 | 姓名: <input type="text" name="fname"> |
设置两个输入对话框 ,” type=“text”设置内容属性为文本框 “ name=‘ ’ “为设置变量名称
1 | <input type="submit" value="提交"> |
设置提交按钮 type=”submit”设置内容属性为提交,value=”提交”设置提交键名称
接收变量fname和age的值并输出
1 | <select name="q"> |
创建选择列表基本格式
name=”q” 定义变量名称
value=”RUNOOB” 定义变量值
Runoob 选择列表中选项名称
1 | multiple="multiple" |
添加multiple属性,可对列表的选项进行多选,多选后存储在变量q中,通过数组对选项进行分析
1 | type="radio" |
设置内容属性为单选按钮
1 | type="checkbox" |
设置内容属性为多选按钮
1 | <span class="error">* <?php echo $nameErr;?></span> |
???
1 | !preg_match("/^[a-zA-Z ]*$/",$name |
查询变量$name里是否含有不是字母的内容
魔术方法
__get
触发条件:对不存在属性或私有属性进行查看
1 | function __get($a){ |
__set
触发条件:对私有属性进行修改设置
1 | function __set($a,$b){ |
__isset
触发条件:对私有属性进行isset检查
1 | public function __isset($property) { |
__unset
触发条件:对私有属性进行unset删除
__call
触发方式:调用未定义方法或私有受保护方法,对静态调用的方法或属性无效
1 | function __call($funName, $arguments) |
__callStatic
触发方式:调用静态方法
1 | public static function __callStatic($funName, $arguments) |
$this->test = &$this->value;修改test或value其中任一一个数值,两者都改变
$this->test = $this->value;value为test副本,但两者改变并不会引起另外的数值发生改变
__sleep
触发条件:用serialize()把实例所有属性序列化
1 | public function __sleep(){ |
__wakeup
触发条件:使用unserialize()把实例反序列化
1 | function __wakeup() |
__toString()
触发条件:调用字符串输出对象,当作字符串输出
1 | public function __toString() |
__invoke()
触发条件:当对象当作方法使用
1 | function __invoke() |
__clone ()
触发条件:使用clone完成拷贝对象
1 | public function __clone() |
__debugInfo()
触发条件:调用var_dump()输出对象
1 | public function __debugInfo() { |
__set_state()
触发条件:调用var_export()输出对象时
__autoload()
触发条件:调用其他文件中的class
文本上传
文件上传表单
1 | <form action="upload_file.php" method="post" enctype="multipart/form-data"> |
上传脚本
1 | if ($_FILES["file"]["error"] > 0) |
保存上传文件
1 | if (file_exists("D:\phpstudy_pro\WWW\文件上传\upload\ " . $_FILES["file"]["name"])) |
“D:\phpstudy_pro\WWW\文件上传\upload\ “为上传路径(最后\ 与 ”之间间隔)
10.28~11.3
MySQL命令行
创建新数据库 数据表等 create 目标类型 目标名称
删除原有数据库 数据表等 drop 目标类型 目标名称
选择 use 目标名称
退出选择 use
order by 升序 asc(默认) 降序 desc
表单类型 smallint(默认) innodb dbd
临时 temporary
NOT NULL 约束
强制字段不为空
创建定义 字段名 数据类型 NOT NULL
添加定义 ALTER TABLE 表名
MODIFY 字段名 数据类型 NOT NULL
删除定义 ALTER TABLE 表名
MODIFY 字段名 数据类型 NULL
UNIQUE约束
保证字段唯一性(允许空值)
创建定义 字段名 数据类型 UNIQUE
多列定义 CONSTRAINT 约束名 UNIQUE (字段名,字段名,····)
添加定义 ALTER TABLE 表名
ADD UNIQUE (字段名)
多列定义 ALTER TABLE 表名
ADD CONSTRAINT 约束名 (字段名,字段名,····)
删除定义 ALTER TABLE 表名
DROP CONSTRAINT 约束名
PRIMARY KEY (主键) 约束
保证字段唯一性(不允许空值)表中只存在单一主键
创建定义 字段名 数据类型 PRIMARY KEY
多列定义 CONSTRAINT 约束名 PRIMARY KEY (字段名,字段名,····)
添加定义 ALTER TABLE 表名
ADD PRIMARY KEY (字段名)
多列定义 ALTER TABLE 表名
ADD CONSTRAINT 约束名 PRIMARY KEY(字段名,字段名,····)
注意: 添加主键约束时,必须声明不包含null值
删除定义 ALTER TABLE 表名
DROP CONSTRAINT 约束名
FOREIGN KEY (外键约束)
子表 FOREIGN KEY 连接父表 PRIMARY KEY
创建定义 CONSTRAINT 外键名称 FOREIGN KEY (字段名) REFERENCES 父表 (字段名)
添加定义 ALTER TABLE 表名
ADD CONSTRAINT 外键名称 FOREIGN KEY (字段名) REFERENCES 父表 (字段名)
删除定义 ALTER TABLE 表名
DROP CONSTRAINT 外键名称
CHECK 约束
限制字段中的值的范围
创建定义 字段名 数据类型 CHECK(限制范围)
多列定义 CONSTRAINT 约束名 CHECK (限制范围 AND 限制范围)
添加修改定义 ALTER TABLE 表名
ADD CHECK(字段名)
多列定义 ALTER TABLE 表名
ADD CONSTRAINT 约束名 CHECK (限制范围 AND 限制范围)
删除定义 ALTER TABLE 表名
DROP CONSTRAINT 约束名
DEFAULT 约束
确定字段默认值
创建定义 字段名 数据类型 DEFAULT ‘默认值’
添加定义 ALTER TABLE 表名
MODIFY 字段名 DEFAULT ‘默认值’
删除定义 ALTER TABLE Persons
ALTER COLUMN 字段名 DROP DEFAULT
auto_increment
主键数值自动加1
设置初始值 alter table 表名 auto_increment=初始值;
或在表后 auto_increment =初始值
查看当前auto_increment数值:
???(表单内数值改变,单独查询不变)???
事务
原子性:完成所有操作,中断则返回初态
一致性:所操作数据库内容满足预设规定
隔离性:同时对数据进行操作,但操作不相互干扰
持久性:操作结束后,数据修改永久保存
begin/start transaction 显式开启事务
commit 提交事务
rollback 回滚结束事务,撤销未提交的修改
savepoint 回滚点名 创建保存点,提供回滚位置
release savepoint 回滚点名 删除保存点
set transaction 设置隔离级别
复制表
限制:复制对象类型相似,递增序列无法重复
导出文件
mysql内导出 文件地址使用 “/” !!!
select 列名 from 表名
into outfile 地址
mysqldump -u root -p 数据库名 表名 > 地址
导入文件
mysql - u root -p 数据库名< 地址
source 地址/备份
load data local infile 地址
php MySQL
多条导入用 “.”进行连接
预处理
$stmt = $conn->prepare(“INSERT INTO MyGuests (firstname, lastname, email) VALUES (?, ?, ?)”);
定义预处理
$stmt->bind_param(“sss”, $firstname, $lastname, $email)
设置类型
$stmt->execute()