Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

由class开头定义类名

一个类中包含类的属性及变量,类的方法及函数

类拥有自己的伪变量$this

调用类需要先创建实例 如 $a= new 类名

public 类内部外部与子类都可以调用

protected 仅能受子类调用 实例中无法通过$x-> 进行调用

private 只有本类内部可以使用 子类和实例中均无法调用

*未定义关键词,则该方法默认为公有

构造函数

1
void __construct ([ mixed $args [, $... ]] )

创建实例直接运行,无法被替代

析构函数

1
void __destruct ( void )

对象结束时运行

继承

class 新的类 extends 原有类

接口

接口定义方法,类实现方法,可由单一类实现多个接口功能

先用interface定义接口 ,点名需要实现方向,无需编写具体内容(所有方法为公有)

43

实现接口内容 在定义类时使用implements (类中需实现接口定义中所有方法)、

44

10.21~10.27

魔术常量

LINE

根据在脚本所处位置行数决定

FILE

根据文件路径和文件名决定

返回绝对路径和文件名

DIR

根据文件所在目录决定

FUNCTION

在函数体内,返回函数的名称

不在函数体内时 返回空字符串

CLASS

返回所在类的名称 包含被声明的作用区域

TRAIT

返回 trait名及其被声明的作用区域

METHOD

返回方法被定义时的名字

NAMESPACE

返回当前命名空间的名称

FUNCTION和METHOD的区别

39

40

当两者同处于类内部函数体中,METHOD比 FUNCTION前面多了个“类名::”

当两者同处于类外部函数体中,METHOD比跟FUNCTION无区别

trait和class的区别

41

42

(1)class 可以被实例化 trait不行

(2)class 继承需要一个一个写继承关系,trait不需要可直接进行调用

const和define的区别

两者皆为定义常量

const用于定义类成员的常量,不能在判断语句中使用

define用于全局常量,不能在类中使用,但可以在判断语句中使用

抽象类

类中至少一个方法声明为抽象 abstract function 方法名(抽象方法只能声明调用参量,不要定义具体功能)

则该类必须声明为抽象类

抽象类无法被实例化

继承后子类必须定义父类所有抽象方法,且访问控制要比父类宽松或者一样,继承后子类可以被实例化

php表单

45

action=""设置跳转网页url,默认为所在网站 method="post"传参为post格式
1
2
姓名: <input type="text" name="fname">
年龄: <input type="text" name="age">

设置两个输入对话框 ,” type=“text”设置内容属性为文本框 “ name=‘ ’ “为设置变量名称

1
<input type="submit" value="提交">

设置提交按钮 type=”submit”设置内容属性为提交,value=”提交”设置提交键名称

46

接收变量fname和age的值并输出

1
2
3
4
5
6
<select name="q">
<option value="">选择一个站点:</option>
<option value="RUNOOB">Runoob</option>
<option value="GOOGLE">Google</option>
<option value="TAOBAO">Taobao</option>
</select>

创建选择列表基本格式

name=”q” 定义变量名称

value=”RUNOOB” 定义变量值

Runoob 选择列表中选项名称

47

1
multiple="multiple"

添加multiple属性,可对列表的选项进行多选,多选后存储在变量q中,通过数组对选项进行分析

48

1
type="radio"

设置内容属性为单选按钮

49

1
type="checkbox"

设置内容属性为多选按钮

1
<span class="error">* <?php echo $nameErr;?></span>

???

1
!preg_match("/^[a-zA-Z ]*$/",$name

查询变量$name里是否含有不是字母的内容

魔术方法

__get

触发条件:对不存在属性或私有属性进行查看

1
2
3
4
5
6
7
8
9
function __get($a){
echo '在直接获取私有成员属性得时候,自动调用了这个__get()方法<br/>';
if(isset($this->$a))
{
return ($this->$a);
}else{
return NULL;
}
}

__set

触发条件:对私有属性进行修改设置

1
2
3
4
5
6
7
8
9
10
function __set($a,$b){
if($a == 'sex'){
echo '##';
//var_dump($a);
//var_dump($b);
$this->$a = $b;
}else{
echo '禁止修改 ';
}
}

__isset

触发条件:对私有属性进行isset检查

1
2
3
4
5
public function __isset($property) {
echo "<br>";
echo "{$property} 属性是私有的或为定义, __isset() 方法会被自动调用\n";
return isset($property);
}

__unset

触发条件:对私有属性进行unset删除

50

__call

触发方式:调用未定义方法或私有受保护方法,对静态调用的方法或属性无效

1
2
3
4
5
6
function __call($funName, $arguments)
{
echo "调用的方法名为:".$funName;
print_r($arguments);
echo "不存在";
}

__callStatic

触发方式:调用静态方法

1
2
3
4
5
6
public static function __callStatic($funName, $arguments)
{
echo "你调用的静态方法:" . $funName ;
print_r($arguments);
echo "不存在";
}

$this->test = &$this->value;修改test或value其中任一一个数值,两者都改变

$this->test = $this->value;value为test副本,但两者改变并不会引起另外的数值发生改变

__sleep

触发条件:用serialize()把实例所有属性序列化

1
2
3
4
public function __sleep(){
echo "使用serialize()方法,自动调用此方法。";
return array('value','test');
}

__wakeup

触发条件:使用unserialize()把实例反序列化

1
2
3
4
5
function __wakeup()
{
echo "使用unserizalize()方法,自动调用此方法";
$this ->age=520;
}

__toString()

触发条件:调用字符串输出对象,当作字符串输出

1
2
3
4
public function __toString()
{
return sprintf('Person("%s",%s,"%s")',$this->name,$this->age,$this->sex);
}

__invoke()

触发条件:当对象当作方法使用

1
2
3
4
function __invoke()
{
return "当对象被当作方法时自动调用";
}

__clone ()

触发条件:使用clone完成拷贝对象

1
2
3
4
5
public function __clone()
{
echo "自动调用魔术方法 __clone()\n";
self::$cnt++;
}

__debugInfo()

触发条件:调用var_dump()输出对象

1
2
3
public function __debugInfo() {
return ("调用var_dump输出对象时自动调用");
}

__set_state()

触发条件:调用var_export()输出对象时

__autoload()

触发条件:调用其他文件中的class

文本上传

文件上传表单

1
2
3
4
5
<form action="upload_file.php" method="post" enctype="multipart/form-data">
<label for="file">文件名:</label>
<input type="file" name="file" id="file"><br>
<input type="submit" name="submit" value="提交">
</form>

上传脚本

1
2
3
4
5
6
7
8
9
10
11
if ($_FILES["file"]["error"] > 0)
{
echo "错误:" . $_FILES["file"]["error"] . "<br>";
}
else
{
echo "上传文件名: " . $_FILES["file"]["name"] . "<br>";
echo "文件类型: " . $_FILES["file"]["type"] . "<br>";
echo "文件大小: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
echo "文件临时存储的位置: " . $_FILES["file"]["tmp_name"];
}

保存上传文件

1
2
3
4
5
6
7
8
9
10
if (file_exists("D:\phpstudy_pro\WWW\文件上传\upload\ " . $_FILES["file"]["name"]))
{
echo $_FILES["file"]["name"] . " 文件已经存在。 ";
}
else
{
// 如果 upload 目录不存在该文件则将文件上传到 upload 目录下
move_uploaded_file($_FILES["file"]["tmp_name"], "D:\phpstudy_pro\WWW\文件上传\upload\ " . $_FILES["file"]["name"]);
echo "文件存储在: " . "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()

评论