回顾
mysql:函数和存储过程
-- 创建表
create table my_name(name char(2) not null)charset utf8;
-- 定义全局变量
set @first = '甲乙丙丁戊己庚辛壬癸';
set @second = '子丑寅卯辰巳午未申酉戌亥';
-- 创建存储过程
delimiter $$
create procedure createName(in int_1 int)
begin
-- 循环变量
declare i int default 0;
-- 获取姓氏和名字
mywhile:while i < int_1 do
-- 获取姓名
set @name = substring(@first,round(rand() *9 + 1),1);
-- 获取名字
set @name = concat(@name,substring(@second,round(rand() * 11 + 1),1));
select name from my_name where name = @name into @temp_name;
if @temp_name is null then
-- 将名字插入数据库
insert into my_name values(@name);
else
-- 循环不算
iterate mywhile;
end if;
-- 改变循环变量
set i = i + 1;
end while;
end
$$
delimiter ;
HTTP协议:HTTP请求和HTTP响应
HTTP请求:请求行(请求方式 URI 协议版本),请求头,空行,请求数据(POST才有)、
HTTP响应:状态行(协议版本 状态码 状态描述),响应头,空行,响应体
状态码分类
1XX:服务器正在接收
2XX:服务器已经成功处理
3XX:服务器告诉浏览器重定向
4XX:请求错误
5XX:服务器处理错误
常见的状态码
200:ok,表示已经成功处理
302:重定向,浏览器应该直接发起新的请求,对应的就是location
403:Forbidden,禁止访问,没有权限
404:not found,找不到对应的文件
502:服务器从上级服务器接收结果时出现错误
需求:帮助传智播客做一套网上销售系统,卖教材。用户能够选择某一个商品,加入购物车,通过点击结算来生成订单,可以进行在线支付(银行支付+支付宝支付),用户可以查看订单状态,传智在收到确认订单之后,可以选择发货,有订单状态。
解决方案1:面向过程思想
以上方案能够解决问题,但是与现实生活中的真实处理有点不一样。
解决方案2:面向对象编程
面向对象编程
1. 什么是面向对象编程?
面向对象编程不是技术,是一种思想,是一种将程序的设计符合自然界中事务发展的规律的思想。
面向对象基本概念
在面向对象编程里有几个基本概念:类,实例化,对象(实例)
类
类是自然界中对某一类具有共同属性和能力的事务(实体)的集合(分类)
类指的是将拥有共同属性和能力的实体,将该共性抽离处理,形成文字的描述,最终转换成系统的所能识别的代码的过程称之为抽象。
类:是对象的抽象。
类关键字:class
语法:定义类
class 类名{
//类成员
}
对象
自然界中存在的任何一个个体都称之为对象,对象必须与对应的类有关系。
对象:是类的实例化。对象也被称之为实例。
对象:是类的具象。
object
实例化
实例化就是从一个抽象的描述中去得到一个具体的个体的过程称之为实例化。
实例化:类得到对象的过程
实例化关键字:new
实例化的结果就是产生类的对象。
类成员
类成员:所有定义在类内部的结构,类里面只能有类成员,不能有任何其他的东西。
类成员:属性(变量),方法(能力:函数),类常量(定义在类里面的常量)
属性
定义在类中的变量
原因:类里面定义的属性,需要指定可以被访问的范围。在类中定义的属性需要使用访问修饰限定符来控制。
访问修饰限定符有三种:public,protected和private
public:公有的,属性可以在类意外的地方使用
protected:受保护的,属性只能在类的内部使用(如果有继承,可以在子类内部使用)
private:私有的,只能在当前类的内部使用,其他任何地方都不能使用
php在5以前没有这三种访问修饰限定符,使用var关键字,var关键字默认的代表的意思就是public
属性与对象的关系:所有的属性都保存在对象里面
访问属性:属性是属于对象的,因此属性的访问应该是对象访问。
语法:
访问:对象变量->属性名;
修改:对象变量->属性名 = 值;
方法
方法:类里面定义的函数
查看对象
说明:方法不在对象里面,说明一定是在类里面。
调用方法
方法依然是通过对象来进行调用
对象->方法名(实参列表);
访问修饰限定符的限制
类常量
定义在类里面的常量。
类常量必须使用const关键字定义
const 常量名 = 值;
常量与对象的关系
常量不能通过对象访问
私有访问
对带有私有(private)关键字修饰的属性和方法的访问(protected与私有一样)。
private:只能在类的内部进行使用,只能在类中定义的方法的内部去使用。
在类的内部有一个关键字能够代表当前进入到类内部的对象:$this
$this只能在类的内部使用(只能在方法里面使用)
类与对象的内存分析
![clip_image038 clip_image038](https://images2015.cnblogs.com/blog/897569/201604/897569-20160420224256335-1393776843.jpg)