文档库 最新最全的文档下载
当前位置:文档库 › (php初级)知识点80

(php初级)知识点80

第一单元【php入门】
1.php简单概述
2.b/s与c/s简单比较,区别:
--a、运行环境不同(广域网、局域网)
--b、安全级别不同(低/高)
--c、用户群不同(全部用户/局部用户)
--d、系统升级不同(无缝升级/整体升级)
--e、用户开启不同(浏览器/特制软件)
--f、软件界面特点不同(信息流/用户体验)
比如:b/s就是网上的微博、博客;c/s就是在网吧打的网络游戏(奇迹、传奇等)
3.php是什么:运行在服务器端的脚本语言
--Hypertext Preprocessor
--personal home page
4.php语言能做什么
--图形化用户界面程序
--服务器端运行脚本程序
5.简单特点:
--a、大小写(自己定义的类名和函数名是不区分的)
--b、分号
--c、程序的注释
6.wamp集成环境安装
******************************************************************************
******************************************************************************
第二单元【php语法基础】
1.变量的定义
--美元符号"$"加上变量名称,例如$str。
--变量名称命名规则:是由字母和下划线开始,后接任意数量的字母、数字、下划线
2.可变变量
例如:
$a = "hello";
则$$a 和 $hello 同理
3.数据类型:
四个标量类型(int,string,float,boolean)
两个符合类型(array,object)
两个资源类型(resource,NULL)
4.什么是常量
常量的值是固定的,不能随便变化的,例如圆周率、系统里边的用户名、密码等等。
5.常量名的命名规则
没有美元符号"$",名字的命名规则和变量名一样,按照习惯都是大写的
6.常量的定义
define('CIRCLE',3.14159);
7.常量的使用,直接引用
例如可以这样使用上边的变量echo CIRCLE;
还可以使用php系统里边自带的常量例如
echo __FILE__;
echo __LINE__;
8.变量和常量的区别
a.常量前面没有美元符号($);
b.常量只能用 define( ) 函数定义,而不能通过赋值语句;
c.常量可以不用理会变量范围的规则而在任何地方定义和访问;
d.常量一旦定义就不能被重新定义或者取消定义;
e.常量的值只能是标量类型。
9.php外部变量$_POST[]、$_GET[];

10.自定义函数
11.变量的能见度
12.函数参数传递(两种)
13.代码重用(include,require,include_once,require_once)
14.递归调用
15.运算符(算术、递增/递减、比较、逻辑、位、其他)
特殊运算符
'.'是连接符
".="是连接赋值
"@"屏蔽错误信息 $link=@mySQl_connect(主机,用户名,密码)
16.流程控制(顺序、选择、循环)
作业,自己写一个函数,输入年份判断出当前输入参数是否是闰年
******************************************************************************
******************************************************************************
第三单元【字符串】
1.字符串的三种定义方式(单

引号、双引号、定界符)
---单引号定义(转义\'和\\)
---双引号定义(转义\n \r \t \$ \\ \")
---定界符方法<<
2.函数部分
explode/implode
substr()**
str_replace/trim/ltrim/rtrim

strstr(str, search)获得指定字符串最开始出现到最后的内容
strrchr(str, search)获得指定字符串最后出现到最后的内容
strpos(str, search)获得指定字符串最开始出现的位置
strrpos(str, search)获得指定字符串最后出现的位置
ucfirst(str)将字符串第一个字母大写
ucwords(str)将字符串的每个单词的第一个字母大写
strlen(str)获得字符串长度
strcmp(str1, str2)比较两个字符串大小,
返回负数表示 str1 小于 str2;
返回正数表示 str1 大于 str2;
返回零表示二字符串相同
strtr()字符串翻译
--strtr(str, mode, replace)
--strtr(str,array)

urlencode(str)替换所有非字母数字的字符,变为%后面跟两位16进制数,空格变为+号
urldecode(str)对已%##编码的URL进行解析还原
parse_url(str)解析完整的url转变为为数组
parse_str(str,out)解析请求字符串转变为数组
htmlspecialchars()转换html代码为实体代码
printf/sprintf %b %d %c %x %s %f %X
– b 整数转成二进位。
– c 整数转成对应的 ASCII 字符。
– d 整数转成十进位。
– f 单倍精确度数字转成浮点数。
– o 整数转成八进位。
– s 转成字符串。
– x 整数转成小写十六进位。
– X 整数转成大写十六进位。

******************************************************************************
******************************************************************************
第四单元【数组】
1.数组按照键名分索引和关联
2.数组赋值方式(一维、二维)
3.遍历数组方式:foreach while/list/each
4.数组和栈的操作
array_push(目标数组,字符串)将字符串压入数组的最后
array_pop(目标数组)将数组最后的元素弹出并返回
5.数组和队列的操作
array_unshift(目标数组,字符串)将字符串放到数组的开始位置
array_shift(目标数组)删除数组的第一个元素并返回
6.数组和指针的操作key() current() next() prev() reset() end()
7.数组常用函数count()、array_sum()、in_array()、extract()、
array_unique()、sort()、rsort()、array_flip() print_r()
is_array()
isset()检查变量是否被定义
empty()检查变量是否为空
unset()删除变量
8.了解函数 array_change_key_case(目标数组,型态常数)
会将目标数组索引值中所有字符串索引的英文字母转换为大写或小写CASE_UPPER/CASE_LOWER
array_chunk()分隔数组 以指定的个数分割
array_count_values()计算目标数组中各值出现次数
array_filter()利用指定的函数挑选数组元素
数组的合并 array_merge() Array_merge_recursive()
差集Array_diff() Array_diff_assoc()

集array_intersect() Array_intersect_assoc()
9.预定义数组($_GET $_POST $_FILES $_COOKIE $_SESSION)

******************************************************************************
******************************************************************************
第五单元【表单处理】
$_GET $_POST
1.为什么要用表单,表单可以实现两个或多个页面之间传递数据。
2.制作一个表单(文本框、密码框、单选按钮、多选按钮、下拉菜单、文本域、隐藏域)
3.制作一个接收页面,用于接收表单数据
4.分别利用post和get两种方式进行表单数据传递
5.利用超链接方式进行get方式传送数据
作业:
进行表单验证
******************************************************************************
******************************************************************************
第六单元【其他常用函数】
date(format,[timestamp])//格式化时间信息,并返回
time()//返回当前时间戳信息

mktime(hour,minute,second,month,day,year)
mktime(小时,分钟,秒,月,天,年)//取得一个日期的 Unix 时间戳

header()发送http头信息
-header("content-type:text/html; charset=utf-8");-------------------//当前页面输出内容是html,编码为utf-8格式
-
-header("content-type:image/png gif jpeg");----------------------------------//当前页面输出内容的格式是图片
-header("refresh:5;url=https://www.wendangku.net/doc/5814015128.html,/five/string.php");--//页面5秒后要跳转到新网址
-header("location:https://www.wendangku.net/doc/5814015128.html,/five/string.php");-----------//页面重定向
abs(-4.6)//取得绝对值信息
ceil(4.1)//向上取整

max()//取得最大值
-echo max(1, 3, 5, 6, 7); // 7
-echo max(array(2, 4, 5)); // 5
-echo max(0, '1hello'); // 1hello
-echo max('hello', 0); // hello
-echo max(-1, 'hello'); // hello
-echo max(array(2, 4, 8), array(2, 5, 7)); // array(2, 5, 7)
-echo max('string', array(2, 5, 7), 42); // array(2, 5, 7)数组和非数组比较数组总认为最大

mt_rand(65,94)//获得随机数
round()//四舍五入取整
flush()//输出准备区内容
urlencode('张三')//返回字符串中,除了-_.之外的所有非字母数字部分为%后接两位
16进制数,空格转化为+
urldecode()//对已经编码的部分反编码
empty()//判断一个变量是否为空
isset()//判断一个变量是否有设置
unset()//删除一个变量
var_dump()//输出变量的详细信息(八种数据类型数据都可以输出)

chr(mt_rand(65,94))随机获得字母
ord(chr(mt_rand(65,94)))将字母转化为数字
basename(路径名)获得路径中文件名部分
strtolower转换小写
******************************************************************************
******************************************************************************
第七单元【php连接mysql】
*mysql_connect(主机,用户名,密码

) 打开一个到 MySQL 服务器的连接
*mysql_select_db(数据库,连接数据库资源) 选择 MySQL 数据库
*mysql_query("set names utf8");设定字符集
*mysql_close() 关闭 MySQL 链接
*mysql_query(语句) 发送并执行一条sql语句
mysql_fetch_row(结果资源)从结果集中取得一行结果(索引数组)
mysql_fetch_assoc(结果资源)从结果集中取得一行结果(关联数组)
*mysql_fetch_array(结果资源)从结果集中取得一行结果(索引/关联数组)
mysql_fetch_object(结果资源)从结果集中取得一行结果(对象数组)

mysql_errno()返回错误号码
*mysql_error()返回错误信息
*mysql_num_rows(结果资源)用于计算查询结果中所得行的数目
*mysql_affected_rows()获得受影响的结果数目
*mysql_insert_id()传回最后一次使用 INSERT 指令产生的自动增长 ID 值

mysql_result(结果集,索引行,字段)指定获取结果
mysql_free_result(结果资源)释放结果集
mysql_num_fields(结果资源)用于计算查询结果中所得列的数目
mysql_fetch_field(结果资源)从结果集中取得列的结果,以对象形式返回

mysql_pconnect()永久连接数据库
作业:
1.建立一个数据库user
2.数据库里边建立一个数据表student
id int 主键、自增
name varchar 姓名
addr varchar 地址
sex varchar 性别
3.实现通过html表单写入数据到数据库
id name addr sex
1 张三 北京 男
2 李四 上海 男
3 王五 天津 女
4.(自选)将写入的数据展现到页面
******************************************************************************
******************************************************************************
第八单元【留言板】
做留言板可以在宏观上对php编程有一个整体认识
可以复习之前学习的表单知识
可以复习数据库知识
1.建立数据库bbs,建立两张表leave_word和back_word(留言表和回复表)
leave_word:
字段 数据类型
id int 主键、自增
title varchar(20) 标题
content text 内容
itime datetime 添加时间

back_word:
id int 主键、自增
leave_id int 外键(留言id)
content text 内容
btime datetime 回复时间
2.制作添加留言表单,实现留言的添加
3.留言明细页面,逐条显示留言信息
4.删除留言,对无效、无用的留言实现删除功能(这时需要用get方式传递被删除留言id值)
5.修改留言,对需要修改(get方式传递被删除留言id值,再利用隐藏域方式传递给接收页面)
6.留言详细显示功能,有的留言内容比较多,在明细页面不可能全部显示出来(这时利用get方式传递留言id)
7.在详细页面可以实现回复功能和回复留言展示,步骤:制作一个回复表单和接收数据页面
****************

**************************************************************
******************************************************************************
第九章 面向对象
A 1.理解面向对象思想
2.理解类和对象(实例化对象)
3.类的成员属性和方法
4.对象访问成员属性和方法
类:车、灯、鱼、人、学生
对象:
车(学生甲、乙、丙、丁等)车撞树
灯(灯甲、乙、丙、丁等)灯坏了
鱼(鱼甲、乙、丙、丁等)鱼吐泡
人(张三、李四、王五、赵六、田七等)人打架
学生(学生甲、乙、丙、丁)学生迟到

B 1.实例化对象在内存中如何分配
2.对象中成员属性和方法的访问、"$this"关键字使用
3.构造方法和析构方法
构造函数:实例化对象首先第一个需要做的事情就是构造函数。一个小孩出生到5岁之前,所有的事情都是父母帮助做的,包括起名字、穿衣服、吃饭等等。
析构函数:一个对象被使用完后需要做一些善后工作,这些善后工作是不需要人为干预的,例如资源释放、变量删除等。例如:一个小狗死后,主人非常爱惜它,就把它埋在了家后园的一颗树下。小狗被埋这件事情是主人做的,不是狗做的。这就是析构函数。

C 1.类的继承:
子类和父类之间的事情
车(汽车、卡车、小轿车、客车等)
灯(台灯、灯管、路灯、灯塔等)
鱼(金鱼、鳄鱼、鲨鱼、鲸鱼、鲤鱼、刀鱼等)
人(黑人、白人、黄种人、中国人、美国人、男人、女人等)

2.类的封装
3.类的重写
子类和父类之间的事情,就是说父类有的方法,子类不但可以直接使用,还可以在子类中
重新定义具体内容,例如有一个父亲会驾驶汽车,那么他的儿子也会驾驶汽车,但他的儿子
可以不驾驶汽车,而驾驶飞机,这就是类方法的重写。
4.类中的修饰符:public、protected、private
public:类成员访问没有限制,多有外部成员都可以访问
protected:受保护的,不能被类外部成员访问,该类的直接子类可以访问,可以实现对成员属性的读、写操作
private:私有的,只能类里边的成员自己访问,类外部的成员都不能访问
5.了解内容__get()、__set()
一个属性被修饰为私有的(private),那么这个属性在类的外部是不可以读取和修改的,现在有一种方法
可以设置该属性既是私有的,还可以被类的外部成员读取即__get()和__set()

D 1.final(最后的)关键字使用
该关键字修饰的类不能被继承
该关键字修饰的方法不能被重写
2.static(静态)关键字使用(类的内部、外部、子类)

例化对象在内存中的分配有讲到大的数据在内存被分配到堆空间里边。现在有一个例子:有一个
"学生"这个类,里边有一个成员属性是"国家",标识该对象是属于哪个国家的,比如美国、英国、德国等
,这个类在实例化对象时候,每个对象在内存中都会分配一个空间用于存放国家这个成员属性,如果
有100个对象,那么在内容中会分配100个相应的空间。如果这个类的使用对象是在"中国"境内,那么
每个对象的国家属性就会是一样的,即"中国",相应的在内存中会有100个空间存放100个相同的内容
这会造成空间浪费,其实到这里我们可以知道100个相同的内容用一个空间存放就可以,反正都是一样的,
这就产生了静态化概念"static"。
用static修饰的成员属性,该属性就不是对象的,而是类的。
3.self和parent关键字使用
在类的内部访问类中的成员(属性和方法),可以用"$this",该关键字泛指对象,这是访问一般的类
成员,如果访问的成员是用static关键字修饰的,就不能用"$this"了,因为用static修饰的类
成员是被类本身拥有,不属于任何对象了,这时候需要用"self"关键字修饰 self::成员
在类的外部访问类本身拥有的成员可以这样 类名::成员属性。
在子类中访问父类拥有的成员可以用parent关键字 parent::成员属性
4.const(常量)关键字使用
在php中可以定义常量,类外部用define定义,类内部用const定义。
常量的拥有者是类本身,类内部访问常量用 self::常量
类外部访问常量用 类名::常量
子类访问常量 parent::常量
5.类成员的访问self、类名、parent
6.魔术方法clone、__call、__autoload使用
clone:在一个项目里边我们有时候需要两个或多个完全一样的初始化对象,这时候可以使用clone技术
不用clone技术也可以,不过每个新的对象都需要初始化属性值,这样比较繁琐,也容易出错,
使用clone就比较简单,克隆出来的多个对象彼此是独立的,互不相干。
$p2 = clone $p1;
__call:在类的使用过程中,如果一个对象调用的方法不在类里边,那么这时候程序要报错,然后程序退
出不能继续运行。这样做用户体验非常不好,如果有一种方法可以使得程序报错完后可以继续运
行,这样的程序给人更智能、用户体验更好的感觉,这时候就可以用__call
public function __call($method_name,$args){
echo "你访问的方法:";
echo $method_name;
echo "参数:";
print_r($args);
echo "不存在";
}
__autoload:开发一个软件系统

,往往里边会有很多类,在初始化类对象之前需要先include这个对
象对应的类文件。所有的类不能都放到一个文件(文件臃肿,不易维护),这样就会在程
序开始处有很多的include列表,这样做非常繁琐,出现一个新的类就需要被include,
有没有一种方法可以使得被include的类文件在实例化对象时候才引入,否则不动作,
答案是有的,这时候可以用魔术方法__autoload
function __autoload($className){
include($className.'.php');
}
7.了解内容__toString()、serialize()方法
8.子类继承父类时候成员修饰符限制,子类的修饰级别大于父类。例如父类的修饰符是protected,
则子类修饰级别是protected或public。父类是public的,子类也必须是public的

E 1.抽象类
在类里边定义的没有方法体的方法就是抽象方法,有抽象方法的类被称为抽象类。抽象类不能实例化对象。
所谓没有方法体就是方法在声明时候没有花括号和里边的内容。
作用之处:
例如:我有一个类"动物",里边有方法"吃食"(还可以有许多其他的方法)
动物这个类可以有许多子类例如:狗、鱼、鸟等,这些子类有一个共性就是都有吃食这个方法
一般的解决方法是:定义3个类,里边都有吃食方法。这样实现没有问题的,但是如果其中一个
类没有吃食方法,这时候程序是不给报错的。我们现在要做的就是3个类中任何一个没有吃食方法
系统就要报错。这时候就需要用到抽象类了。
抽象类按照字面意思理解就是对3个类的进一步抽象。抽象出来吃食方法。
抽象类技术特性:
a、抽象类不能实例化
b、类的成员方法是抽象的,则这个类也是抽象的
c、抽象方法体内没有实现细节,具体实现留给子类实现
d、继承抽象类的子类必须实现父类的抽象类,除非自己也是抽象类。

2.接口
打个比方,每个用电器都有插头,我们不可能用电器时都直接把零线火线直接绑到插头上,所以我们按一定
规格制定了插座,并要求用电器的插头都要符合这个规格,以方便使用。这个插座就是接口。

当一个抽象类里边的全部方法都是抽象方法时候,这个抽象类就是"接口"。
接口技术特性:
a、interface声明
b、全部接口方法是public的,因此可以省略
c、接口只定义方法,没有具体方法实现
d、实现类用implements实现接口,全部接口方法都要实现
e、接口可以多实现,中间用逗号分开
f、接口是对抽象类的抽象,抽象类是对类的抽象,类是对事物的抽象。

g、接口不能实例化
(1)、抽象类和接口有什么不同
抽象类只能单继承,接口可以多实现
抽象类里面可以有抽象方法和普通方法,而接口里面只有没有实现的方法。
抽象类里面可以有自己的属性,而接口里面只能有常量
接口里面的方法必须是public的,而抽象类不同
(2)、抽象类和接口的相似之处
抽象类里面的抽象方法在继承的时候必须都要重写,接口里面的方法也必须都要实现。
抽象类和接口都不能直接实例化,
抽象类需要继承(extends),接口需要实现(implements)。
抽象类和接口都体现了多态的特性。

相关文档