一、PHP入门
1、php是一种动态网站开发的脚本语言,动态语言特点是交互性,会有数据的传递,而php作为中间人需要进行数据的传递,传递的前提就是php能自己存储数据(临时存储);
2、变量:是用来储存数据的;存在名字,通过名字来访问:数据;是可以改变的:数据;
3、定义:在系统中增加对应的变量名字(内存);
4、赋值:可以将数据赋值给变量名
解决中文乱码:hearder(‘Content-type:text/html;charset=utf-8’);
5、如何定义一个变量:
1、以$开头 $变量名;
2、var_dump(变量) 页面打印
6、定义一个常量 : const 常量名(大写,不需要$);
7、数据类型:
int(整数),
float(小数),
string; 写法:可以用引号,定界符(<<<AAA(界限名) 内容 AAA(界限名,要顶格写));如果用双引号定义,其中输出变量{变量名}
如果用单引号定义,其中要输出变量,必须拼接;
boolean
null,
object,
array,
resource(资源);
8、会被转换成false的情况:
1、'';
2、0;
3、[];
4、null
5、空对象
9、字符串的拼接:'.'
10、数据转换:
1、settype(变量名,'转换数据类型名') 改变变量本身
2、$i=(转换数据类型名) 变量名 生产一个新的变量
11、运算符:+-*/% += -= *= /= && || !
三元运算符:条件?对的值:错的值
i++ 先做别人的事,自己在加1
二、PHP函数和内置函数;
1、自定义函数:函数的三要素:函数名,参数,返回值;
1、引用地址参数的传递&参数;在传参的时候把实际参数本身传入到函数中。
2、带默认参数传递:可以在定义的时候给形参赋默认值,统一放在右边
3、可变数量参数的传递: 形参:…$数组名;(支持php5.6以后的版本)
5.6以前版本:形参不写,在功能体中使用$数组名=func_get_args();
4、全局变量:在函数内外都可以使用
1)、 在函数中使用全局变量:先GLOBAL+全局变量名声明 后使用;
2)、$GLOBALS[全局变量名]访问相对应的全局变量。
5、局部变量:只能在函数作用域内才可以使用;
2、变量内置函数:
1、转换数据类型:
settype(变量,数据类型) 返回值:true或false;
2、变量是否设置:
isset(变量名) 返回值:true 或 false;
3、输出函数:echo与print的区别:
1、不同:echo没有返回值,print有返回值
2、echo与print不可以打印数组和对象;
3、var_dump和print_r
1)、print_r只会显示值,var_dump值和数据类型;
2)、共同点:都可以打印数组、对象、其他数据类型;
4、时间函数:
1、time() 获得当前时间的时间戳
2、date('Y/m/d H:i:s',time())
注:1、date_default_timezone_set('PRC') 设置中国所在时区;
2、修改服务器的配置文件:php.ini-->timeZone--->去掉;---->设置时区(PRC);
3、getdate(时间戳)获取时间数组;
4、strtotime(); 字符串转换为时间戳
5、mktime:返回时间戳;
三、PHP数组
1、一维数组定义:
1、下标数组:数组名=[值1,值2,值3,值4…..]; 下标是数字
2、关联数组:下标不为数字, 数组名=[键1=>值1,键2=>值2…..];
2、下标一些特殊情况;
1、十进制的整型字符串为下标---->转为整型;
2、true或false----->转为整型(1,0);
3、浮点型数---->转为整型;
4、null---->转为''(空字符串);
5、键名相同的情况下,会被覆盖;
6、键名不写的情况下,默认最大的整型+1;
3、数组的遍历:
1、foreach($arr as $key=>$value){}
4、数组的添加:array_push($arr,添加的值);
5、数组键值互换:array_flip($arr);
6、产生数组:range(开始位置,结束位置,间隔);
7、计算数组长度:count()=sizeof();
8、查找:array_search(要查找的值,数组);
9、对数字进行增删改查:
array_splice(数组,起始位置,删除几个,替换几个);
四、PHP面向对象
1、面向对象OOP的三大特性:
封装(不关注具体的实现,只关注整体,隐秘性)、
继承
多态;
2、类是一个模板,抽象的;对象是一个具体的实物,
3、PHP类的定义:class 类名{属性、构造函数、方法、析构函数};
4、属性的声明: 访问修饰符:public 变量名;
5、访问修饰符:
public(公共的,内外都可以访问)、
private(私有属性,只可以在类的内部访问);
protected(受保护的);
6、构造函数:public function __construct(){} 在实例化(new)的时候自动调用、属性的赋值。
7、析构函数:public function __destruct(){} 在关闭资源或者销毁变量时使用。
8、类的内部访问属性:$this->属性名;类的外部访问属性:对象名->属性
9、继承的声明:extends声明;
10、继承的格式:引用父类资源 class subClass extend superClass{};
其中 subClass为子类名称,superClass为父类名称;
11、父类的私有属性无法被继承;
12、父类保护属性只能在父类内部和子类内部使用;
13、多态:重写父类的方法,子类调用方法时,重写父类方法;
14、final class 类名: 无法被继承;
15、abstract :抽象类:
语法:abstract class 类名{}
16、有抽象方法的类,一定是抽象类,
17、抽象方法没有具体的实现,抽象方法一定要被子类实现。
18、设计模式(单例): 某个类只能被实例化一次
1、将构造函数私有化;
2、定义一个静态方法
3、定义一个静态属性
4、判断静态属性是否已经赋值;
19、静态变量:声明:static 只能被初始化一次;
五、PHP文件处理
1、文件操作
1、打开文件:fopen(参数1,参数2)
参数:参数1:文件路径
参数2:打开方式:a+、r+、w+
会自动创建文件的打开方式 :w+(会覆盖原文件) ,a+;
a+与r+的区别:a+是从尾部添加,r+从头部覆盖;
2、文件的写入:fwrite(资源路径,“写入内容”);
3、文件的读取:fgets(资源类型) 每次读取一行;
4、判断文件是否到达末尾:feof 到达true;未到达false;
5、写入数组到文件
1、先定义一个数组;
2、将数组转换成JSON字符串 :json_encode() ;
6、文件上传
1、打开对应版本PHP的配置文件PHP.ini->upload,确保file_uploads=ON打开;
2、编写一个前端页面
1、<from action="提交路径" method="提交方式" enctype=“multipart/form-data”;
2、ipnput type=“file” name=“提交的名字”;
3、按钮:input type=“sumbit”;
3、action.php
1、接收到文件 $_FILES['提交的名字'];
2、根据接收的结果的数组,编辑业务逻辑;
3、move_uploaded_file 去把临时文件 移动到工程目录下(iconv 转码);
4、保存路径;
六、PHP网页基础
1、PHP工作原理
2、网络的传输格式:get、post
1、get 直接在url上传递数据,不安全
2、post相对安全,信息量大;
3、后端接收数据
1、get:$_GET['提交的名字']
2、post:$_POST['提交的名字'];
3、通用接收:$_REQUEST['提交的名字'];
4、url:http://域名(IP地址):post/文件名?key1=val1&key2=val2
七、Cookie与Session
1、cookie与session都是存储数据的缓存
2、cookie存储在客户端,session存储在服务端;
3、设置cookie
setcookie(key,val,过期时间,地址)
4、cookie存储数组:serialize(数组名);将数组序列化为字符串
cookie取数组 unserialize($_COOKIE[KEY]) ; 将字符串反序列化;
5、session工作原理:当session_star()代码执行后,服务端生成一个临时的文件,给客户端发送一个PHESESSIONID,PHESESSIONID与临时文件名相
八、AJAX
1、ajax:是一个网络请求,http协议,一个短连接;
2、ajax与form表单的不同
1、form表单需要跳转页面
2、ajax不需要跳转页面
3、原生ajax是利用XMLHttpRequest对象实现的,
XMLHttpRequest.open("提交方式","url",true);
XMLHttpRequest.send()
4、jq 与ajax请求
语法:$.ajax({
type:"" 请求类型;
url:"" 请求路径;
dataType:"" 预期服务器返回的数据类型;
success:function(){} 成功之后执行的回调函数
error:function(){} 失败之后执行的回调函数
})