PHP专题重点函数静态化缓存面向对象异常处理.docx
- 文档编号:5427403
- 上传时间:2022-12-16
- 格式:DOCX
- 页数:22
- 大小:50.74KB
PHP专题重点函数静态化缓存面向对象异常处理.docx
《PHP专题重点函数静态化缓存面向对象异常处理.docx》由会员分享,可在线阅读,更多相关《PHP专题重点函数静态化缓存面向对象异常处理.docx(22页珍藏版)》请在冰豆网上搜索。
PHP专题重点函数静态化缓存面向对象异常处理
PHP专题
选择的理由、重要函数、面向对象、异常处理、静态化、缓存与Smarty
选择PHP是有理由的:
这一章里将覆盖一下几点内容:
第一:
选取优秀的释义来说明PHP是什么;
第二:
归纳出PHP卓越的特点;
第三:
显示PHP被使用的状况;
第四:
提供一种学习PHP的流程;
第五:
前瞻这个专题讲解的逻辑。
PHP是什么?
对于php程序员来说,应该非常了解php是什么了,不过也有很不少人所知甚少,要不,你看很多人在问PHP怎么打开,PHP要用什么播放器打开之类的提问。
当然一个好的释义对于我们了解它的本质是很有帮助的。
PHP:
HypertextPreprocessor超级文本预处理语言(起初只是PersonalHomePage,个人主页).PHP是一种HTML内嵌式的语言,PHP与微软的ASP颇有几分相似,都是一种在服务器端执行的嵌入HTML文档的脚本语言,语言的风格有类似于C语言,现在被很多的网站编程人员广泛的运用。
PHP独特的语法混合了C、Java、Perl以及PHP自创新的语法。
它可以比CGI或者Perl更快速的执行动态网页。
用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;与同样是嵌入HTML文档的脚本语言JavaScript相比,PHP在服务器端执行,充分利用了服务器的性能;PHP执行引擎还会将用户经常访问的PHP程序驻留在内存中,其他用户再一次访问这个程序时就不需要重新编译程序了,只要直接执行内存中的代码就可以了,这也是PHP高效率的体现之一。
PHP具有非常强大的功能,所有的CGI或者JavaScript的功能PHP都能实现,而且支持几乎所有流行的数据库以及操作系统。
(摘自XX百科,非常优秀的释义。
)
从释义中我们可以归纳出几点PHP卓越的特点:
PHP卓越的优势:
第一:
PHP具有跨平台的特性,可以在多种操作系统下运行;PHP能在多种服务器平台上运行,而与之相比,ASP,JSP等则只能在单一的服务器平台上运行。
第二:
PHP是一种服务器端脚本语言,是动态网页脚本语言的一种,而且必须在服务器端运行。
第三:
PHP是一种HTML内嵌式的语言,它可以很简单地嵌入到普通的HTML页中,用户要做的的只是在普通HTML页中加入PHP代码即可,学习起来并不困难。
第四:
PHP通常与MySQL配合使用,但它同时也支持流行的几乎所有的数据库系统,而其它网页脚本语言则没有这种特性。
第五:
PHP是一个开源的程序,所有的PHP源代码事实上都可以得到,并且是免费的。
第六:
效率高,PHP消耗相当少的系统资源。
第七:
在php4,php5中,面向对象方面都有了很大的改进,现在php完全可以用来开发大型商业程序。
当今PHP使用的状况:
据PHPChina提供的统计数据显示:
后缀形式分类的网页情况来看,PHP现在排名第一:
占24.4%,其次是Html是19.4%;Asp仅仅是14.3%,Aspx则为4.7%.
PHP起步相对较晚,1994年RasmusLerdorf创建,刚刚开始只是一个简单的用Perl语言编写的程序,用来统计他自己网站的访问者,有如今迅猛的发展强劲,不能不归功于PHP这些卓越的特点。
我建议的学习PHP的流程(前提是对静态网页编写以及网站的常规知识已有了确切把握):
(一)明确学习的目的,通过接触PHP培养浓厚的兴趣和求知欲;
(二)搭建PHP运行环境(可以使用PHP+MySQL+Apache安装包,这样搭建一个工作环境很简捷);
(三)足够的学习资料,包括书本,网页教材,视频教材,专业性网站,论坛,QQ群,电子书,博客等;
(四)勤动手,亲自实现一个又一个小程序并擅于总结;
(五)从简单的语法到系列函数,数组,安全事务等;
(六)使用数据库;
(七)学习面向对象编程;
(八)PHP静态化与缓存技术;
(九)使用模板;
(十)实现Ajax.
另外:
坚定一个目标,千万别这会学这过会学那;学无止境,要做得更好;努力固然重要,但有时选择比努力更加重要,特别是IT行业,技术一日千里,要擅于随时发现新技术。
专题前瞻:
在这个专题里,我把重心放在讲解PHP的重要环节上。
首先是函数,这章里我不会进行简单的罗列,也不可能系统讲解,而是抽取重要的,或常用到的,或不经常使用到但非常有用的函数进行别致的分析。
面向对象这一章以一个独到的实例尽量把有关面向对象编程的重要概念引用进去,深刻了解OOP机制。
异常处理与静态化两章主要是讲解必要性以及具体怎么实现。
Smarty这一章介绍模块的使用,以及如何实现PHP的缓存技术。
祝大家有个快乐与获益的旅程!
非常有用的常见函数或非常见函数
PHP内置了大量的函数,非常熟练地掌握越多的函数,编程起来也就会更有效率。
这些函数囊括了字符(串)类,数组类,数据库类,文件目录类,图像处理类,网络通信类,服务器类,Win32类等等。
下面对一些重要的函数进行归纳,分析和应用。
(一)字符文本类(String)。
试想,我们对String都会有哪些操作呢?
我把它大致总结成以下几种情况:
(1)特殊字符的转义转换;
(2)查找统计;(3)插入,更换,删除,格式化,再分配。
下面我以表格的形式选取fatalFun(至关重要的函数)进行讲解。
(正则表达式可以独立成章在此暂时不讲。
)
★★特殊字符转义转换★★
函数原型
功能分析
使用实例
addslashes($str)
使用反斜杠(\)转义单双引号(注意先使用magic_quotes_gpc函数判断是否已启动自动转义)
addslashes($_POST["uname"])
htmlentities($str)
转换字符为HTML编码,即HTML标签不再起作用被原貌输出
htmlentities("不会粗体")
nl2br($str)
将换行字符转成
nl2br("断\n开")
stripslashes($str)
清除反斜杠
stripslashes("多余的'\'")
quotemeta($str)
对".\+*"等字符加入反斜杠
quotemeta("1.2+1=?
");
★★查找统计★★
函数原型
功能分析
使用实例
substr($str,$start[,$len])
从$start起取[取$len个],$start为负则从尾(-1,正时为0)起,$len为负意为取到倒数第几
substr("helloworld!
",2,-5)→"llowor"
strchr($str,$char)
取出从首次出现$char后的字符串(区分大小写);php5中的stristr功能与此同,但不区分大小写<
strchr("HElloworld!
","l")→lloworld!
strpos($str,$char)
$char在文本$str中第一次出现的位置(区分大小写);php5中的stripos功能与此同,但不区分大小写
strpos("HELloWold","l")→3
strcspn($str,$char[,$start[,$len]])
char在文本$str中第一次出现的位置(区分大小写);若有$start,$len则表示从哪里开始计数,考虑查多少位。
strcpn("012345678","5",2,5)→3
substr_count($str,$char[$start[,$len])
统计$char在$str出现的次数,若有$start,$len则表示从哪里开始查,考虑查多少位。
substr_count("helloworld","o",5,1)→0
★★插入,替换,删除,格式化,再分配★★
函数原型
功能分析
使用实例
str_replace($str1,$str2,$str);
strtr($str,$str1,$str2)
用$str2替换$str中的$str1
str_replace(">",">",$title)
substr_replace($str,$char,$start[,$len])
从$start起用$char替换之后的所有字符,若有$len,则$len长度
substr_replace("helloworld!
","mylove",6,5)→hellomylove!
strtolower($str);strtoupper($str);
ucfirst($str);ucwords($str)
全部小写或大写;
首字母大写或每个单词首字母大写
ucwords("helloworld!
")→HelloWorld!
implode($glue,$arr);
join($str,$arr)
将数组$arr的值用字符$glue连接合并成字符串
implode("or",array("tobe","nottobe"))→"tobeornottobe"
explode($glue,$str[,$num])
按$str中的标志$glue分割成数组成员,若有则表示数组成员的个数
explode("@","1@2@3",2)→Array([0]=>1,[1]=>2@3)
chop($str);ltrim($str);
trim($str);rtrim($str)
去除连续,左,两端,右空格,制表符,回车
chop(" hello world")→"helloworld"
(二)数组操作类
在PHP编程中,有相当多的内容都与数组有联系,入库的信息需要纳入数组,统计一些信息需要写入数组等,这些操作都离不开数组,很多信息都是用数组作为载体的,所以数组的操作在PHP编程中占有很大的比重,只有熟练地操作数组,才能写出高效的PHP程序。
PHP支持一维数组和多维数组,数组的元素也有很大的灵活性,数组可以有用户创建或由函数生成,有一些特定的数据库处理函数可以从数据库查询中生成数组,还有一些函数的返回值也是数组等。
下面介绍几种操作数组非常实用的函数
函数原型
功能分析
使用实例
Boolin_array($str,$arr)
判断字符$str是否在数组$arr里,在时返回TRUE,否则为FALSE
if(in_array("love",array("love","like")))→true
Arrayarray_combine($arr1,$arr2)
返回以$arr1作键$arr2作值的数组
array_combine(array("中国","日本"),array("伟大","尾大"))→array(["中国"]=>"伟大",["日本"]=>"尾大")
Arrayarray_chunk($arr,$num[,$kpkey])
将数组$arr以$nme个成员为一组,返回新数组,$kpkey表示是否保留原来的键名.
array_chunk(array(["中国"]=>"伟大",["日本"]=>"尾大",["美国"]=>"大尾"),2,true)→array([0]=>array(["中国"]=>"伟大",["日本"]=>"尾大"),[1]=>array(["美国"]=>"大尾"))
Arrayarray_count_values($arr)
统计数组$arr中值的出现次数,以新数组返回
array_count_values(array("100","120","100"))→array([100]=>2,[120]=>1);
msyql_diff($arr1,$arr2)
msyql_diff_key($arr1,$arr2)
msyql_diff_assoc($arr1,$arr2)
对应的,通过只比较值/之比较/键名/两者都比较来返回只在$arr1不在$arr2的新数组。
mysql_diff_assoc(array(1,["k"]=>"wl"),array(1,2))→array(["k"]=>"wl")
msyql_intersect($arr1,$arr2)
msyql_intersect_key($arr1,$arr2)
msyql_intersect_assoc($arr1,$arr2)
对应的,通过只比较值/之比较/键名/两者都比较来返回同时在$arr1与$arr2的新数组。
mysql_diff_assoc(array(1,["k"]=>"wl"),array(1,2))→array([0]=>1)
(三)数据库类
使用PHP少不了对数据库的操作,PHP+MySQL是一对不可多得的"黄金组合",下面就介绍一些操作MySQL数据库的重要函数.
函数原型
功能分析
使用实例
mysql_connect($host,$urer,$psd);
mysql_pcoonent($host,$urer,$psd)
这两个都是用于连接数据库返回连接标志符,后者为持久连接,即它会先寻找已打开的链接,若找到则返回此连接标识符而不打开新的连接,此连接将保持打开以备后续操作。
$link=mysql_pconenct("localhost","my","123")
mysql_close([$link])
mysql_free_result($res)
关闭连接与释放资源
mysql_free_result($result)
BOOLmysql_ping($link)
检查数据库的连接是否正常,若已断开,则自动尝试连接,本函数可用于空闲很就的脚本来检查服务器是否关闭了连接,连接可用则返回TRUE
if(mysql_ping($link){echo"服务器连接还在"})
mysql_error([$link])
mysql_errno([$link])
返回错误的文本内容或错误的数字代号
msyql_select_db($db,$link)ordie("错误:
",mysql_errno($link))
resoursemysql_unbuffered_query($sql,[,$link])
该函数不会自动获取并缓存结果集,可以节省内存,并且获取第一行后立即执行,而不用等到SQL语句全部执行完毕。
当使用多个数据库连接时,必须制定$link
$result=mysql_unbuffled_query($sql)
intmysql_affected_rows([$link])
获取最近一次与指定数据库关联的INSERT,UPDATE或DELETE查询所影响的记录行数。
查询成功则返回行数,失败则为-1;注意当删除所有记录时返回0,当使用UPDATE时,MySQL不会将原值与新值一样的列更新,这使得它的返回值不一定就是符合查询条件的记录数。
mysql_query("deletefromtbwhereid>12");printf("被删除的记录行数为:
d%\n",mysql_affected_rows();)
Arraymysql_fetch_row($res)
Arraymysql_fetch_assoc($res)
Arraymysql_fetch_array($res[,$query_type])
objectmysql_fetch_object($res)
分别表示:
从结果集中获取一行返回数字数组,关联数组,数字或关联数组,返回对象。
其中$res为查询结果集
数字数组表以数字作键名的数组,关联数组以字符为键名,返回对象则通过该对象访问数据。
Objectmysql_fetch_field($res)
从结果集中获取列信息,并返回一个包含字段信息的对象,如列名,是否有最大长度设置,是否允许为空,是否为关键字等,是为1,否为0,其它返回相应字符。
。
while($i
mysql_num_rows($res)
mysql_num_fields($res)
返回结果集中的行数或字段数
主要是用于遍历结果集
(四)变量检查类函数
变量检查类函数,我把它分为这么几种情况:
检查变量是否存在,是否有值,数据类型是什么,强制转换,以及打印出变量的详细信息,具体如下表:
函数原型
功能分析
使用实例
boolisset($var)*
unset($var)
检查变量是否存在,以及销毁一个变量。
$var=NULL;if(isset($var){echo"$var已设置,所以返回为TRUE,你将看到这一段话。
";}
boolempty($var)
检查变量的值是否为空,包括"",0,"0",NULL,FALSE,array(),var$var以及没有任何属性的对象都被认为为空,如果为空,则返回TRUE
$var=0;if(empty($var)){echo"变量为空,看到此句话。
";}
is_numeric*int*float*bool
string*object*null*array*resource
scalar($var)
检查数据类型,从字面就可以看出都是检查什么,这里不赘述,需要说明的是,如果是那种类型时,函数将返回TRUE.其中is_scaler($var)用于检查是否为标量,标量指的是int,float,string,bool,而array,object,resource则不属于标量。
$var="123";if(is_numeric($var)){echo"是数值或数值字符串,所以看得到这句话。
";}
floatval*intval*round*ceil*floor($var)
分别为浮点数,取整,四舍五入,天花板数,地板数,看看例子就明白了:
floatval(1.23)→1.23
int(1.23)→1
int(1.51)→1
round(1.23)→1
round(1.51)→2
ceil(1.23)→2
ceil(1.51)→2
floor(1.23)→1
floor(1.51)→1
print_r($var[,$bool_return])
var_dump($var)
var_export($var[,$bool_return])
这三个函数都是用于把变量的值详细地打印出.其中当$bool_return为true时,则可以捕获该函数的返回值,并不会打印结果。
$var=print_r(array(0,1),true);echo$var;→array([0]=>0,[1]=>1)
关于正则表达式,文件目录函数,图像类函数等,我将在下次专题更新时详细讲解,欢迎关注。
PHP面向对象编程
此章思路:
首先把面向对象编程,类,对象,类的封装性,继承和多态的概念以深入浅出的方式阐明;
再全面剖析面向对象编程中用到的关键字与内置方法函数;
最后以一个简单的例子说明如何面向对象编程。
1.面向对象的概念
面向对象编程(ObjectOrientedProgramming,OOP)是一种计算机编程架构,OOP的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成,OOP达到了软件工程的三个目标:
重用性、灵活性和扩展性。
为了实现整体运算,每个对象都能够接收信息、处理数据和向其它对象发送信息。
面向对象一直是软件开发领域内比较热门的话题,首先,面向对象符合人类看待事物的一般规律。
其次,采用面向对象方法可以使系统各部分各司其职、各尽所能。
为编程人员敞开了一扇大门,使其编程的代码更简洁、更易于维护,并且具有更强的可重用性。
有人说PHP不是一个真正的面向对象的语言,这是事实。
PHP是一个混合型语言,你可以使用OOP,也可以使用传统的过程化编程。
然而,对于大型项目,你可能需要在PHP中使用纯的OOP去声明类,而且在你的项目里只用对象和类。
这个概念我先不多说了,因为有很多朋友远离面向对象编程的主要原因就是一接触面向对象概念的时候就理解不上去,所以就不想去学下去了。
等读者看完整体内容后再去把概念搞明白吧.
2.什么是类,什么是对象,类和对象这间的关系
类的概念:
类是具有相同属性和服务的一组对象的集合。
它为属于该类的所有对象提供了统一的抽象描述,其内部包括属性和服务两个主要部分。
在面向对象的编程语言中,类是一个独立的程序单位,它应该有一个类名并包括属性说明和服务说明两个主要部分。
对象的概念:
对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位。
一个对象由一组属性和对这组属性进行操作的一组服务组成。
从更抽象的角度来说,对象是问题域或实现域中某些事物的一个抽象,它反映该事物在系统中需要保存的信息和发挥的作用;它是一组属性和有权对这些属性进行操作的一组服务的封装体。
客观世界是由对象和对象之间的联系组成的。
类与对象的关系就如模具和铸件的关系,类的实例化结果就是对象,而对一类对象的抽象就是类。
类描述了一组有相同特性(属性)和相同行为(方法)的对象。
上面大概就是它们的定义吧,也许你是刚接触面向对象的朋友,不要被概念的东西搞晕了,给你举个例子吧,如果你去中关村想买几台组装的PC机,到了那里你第一步要干什么,是不是装机的工程师和你坐在一起,按你提供的信息和你一起完成一个装机的配置单呀,这个配置单就可以想象成是类,它就是一张纸,但是它上面记录了你要买的PC机的信息,如果用这个配置单买10台机器,那么这10台机子,都是按这个配置单组成的,所以说这10台机子是一个类型的,也可以说是一类的。
那么什么是对象呢,类的实例化结果就是对象,用这个配置单配置出来(实例化出来)的机子就是对象,是我们可以操作的实体,10台机子,10个对象。
每台机子都是独立的,只能说明他们是同一类的,对其中一个机做任何动作都不会影响其它9台机器,但是我对类修改,也就是在这个配置单上加一个或少一个配件,那么装出来的9个机子都改变了,这是类和对象的关系(类的实例化结果就是对象)。
3.什么是面向对象编程呢?
先不说他的概念,如果你想建立一个电脑教室,首先要有一个房间,房间里面要有N台电脑,有N张桌子,N把椅子,白板,投影机等等,这些是什么,刚才咱们说了,这就是对象,能看到的一个个的实体,可以说这个电脑教室的单位就是这一个个的实体对象,它们共同组成了这个电脑教室,那么我们是做程序,这和面向对象有什么关系呢?
开发一个系统程序和建一个电脑教室类似,你把每个独立的功能模块抽象成类,形成对象,由多个对象组成这个系统,这些对象之间都能够接收信息、处理数据和向其它对象发送信息等等相互作用。
就构成了面向对象的程序。
4.如何抽象出一个类?
_上面已经介绍过了,面向对象程序的单位就是对象,但对象又是通过类的实例化出来的,所以我们首先要做的就是如何来声明类,做出来一个类很容易,只要掌握基本的程序语法定义规则就可以做的出来,那么难点在那里呢?
一个项目要用到多少个类,用多少个
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PHP 专题 重点 函数 静态 缓存 面向 对象 异常 处理
![提示](https://static.bdocx.com/images/bang_tan.gif)