【PHP开源代码栏目提醒】:网学会员鉴于大家对PHP开源代码十分关注,论文会员在此为大家搜集整理了“PHP专题——重点函数静态化缓存面向对象异常处理4 - 毕业设计”一文,供大家参考学习
1
PHP专题 选择的理由、重要函数、面向对象、异常处理、静态化、缓存与Smarty 选择
PHP是有理由的 这一章里将覆盖一下几点内容 第一选取优秀的释义来说明
PHP是什么 第二归纳出
PHP卓越的特点 第三显示
PHP被使用的状况 第四提供一种学习
PHP的流程 第五前瞻这个专题讲解的逻辑。
PHP是什么 对于
php程序员来说应该非常了解
php是什么了不过也有很不少人所知甚少要不你看很多人在问
PHP怎么打开
PHP要用什么播放器打开之类的提问。
当然一个好的释义对于我们了解它的本质是很有帮助的。
PHP:Hypertext Preprocessor 超级文本预处理语言起初只是Personal Home Page 个人主页.
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都能实现而且支持几乎所有流行的数据库以及操作系统。
摘自百度百科非常优秀的释义。
从释义中我们可以归纳出几点
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.4Asp 仅仅是14.3
Aspx 则为4.7.
PHP起步相对较晚1994年Rasmus Lerdorf创建刚刚开始只是一个简单的用Perl语言编写的程序用来统计他自己网站的访问者有如今迅猛的发展强劲不能不归功于
PHP这些卓越的特点。
我建议的
学习PHP的流程前提是对静态网页编写以及网站的常规知识已有了确切把握 一 明确学习的目的通过接触
PHP培养浓厚的兴趣和求知欲 二搭建
PHP运行环境可以使用PHPMySQLApache安装包这样搭建一个
工作环境很简捷 2 三足够的学习资料包括书本网页教材视频教材专业性网站论坛QQ群电子书博客等 四勤动手亲自实现一个又一个小程序并擅于总结 五 从简单的语法到系列函数数组安全事务等 六 使用数据库 七学习面向对象编程 八
PHP静态化与缓存技术 九使用模板 十 实现Ajax. 另外坚定一个目标千万别这会学这过会学那学无止境要做得更好努力固然重要但有时选择比努力更加重要特别是IT行业技术一日千里要擅于随时发现新技术。
专题前瞻 在这个专题里我把重心放在讲解
PHP的重要环节上。
首先是函数这章里我不会进行简单的罗列也不可能系统讲解而是抽取重要的或
常用到的或不经常使用到但非常有用的函数进行别致的分析。
面向对象这一章以一个独到的实例尽量把有关面向对象编程的重要概念引用进去深刻了解OOP机制。
异常处理与静态化两章主要是讲解必要性以及具体怎么实现。
Smarty这一章介绍模块的使用以及如何实现
PHP的缓存技术。
祝大家有个快乐与获益的旅程 非常有用的常见函数或非常见函数
PHP内置了大量的函数非常熟练地掌握越多的函数编程起来也就会更有效率。
这些函数囊括了字符串类数组类数据库类文件目录类图像处理类
网络通信类服务器类Win32类等等。
下面对一些重要的函数进行归纳分析和应用。
一字符文本类String。
试想我们对String都会有哪些操作呢我把它大致总结成以下几种情况1特殊字符的转义转换2查找统计3插入更换删除格式化再分配。
下面我以表格的形式选取fatalFun至关重要的函数进行讲解。
正则表达式可以独立成章在此暂时不讲。
★★特殊字符转义转换★★ 函数原型 功能分析 使用实例 addslashesstr 使用反斜杠转义单双引号注意先使用magic_quotes_gpc函数判断是否已启动自动转义 addslashes_POSTquotunamequot htmlentitiesstr 转换字符为HTML编码即HTML标签不再起作用被原貌输出 htmlentitiesquotltbgt不会粗体lt/bgtquot nl2brstr 将换行字符转成ltbrgt nl2brquot断n开quot stripslashesstr 清除反斜杠 stripslashesquot多余的quot quotemetastr 对quot. quot等字符加入反斜杠 quotemetaquot1.21quot ★★查找统计★★ 函数原型 功能分析 使用实例 3 substrstrstartlen 从start起取取len个start为负则从尾-1正时为0起len为负意为取到倒数第几 substrquothello world quot2-5→quotllo worquot strchrstrchar 取出从首次出现char后的字符串区分大小写
php5中的stristr功能与此同但不区分大小写lt strchrquotHEllo world quotquotlquot→llo world strposstrchar char在文本str中第一次出现的位置区分大小写
php5中的stripos功能与此同但不区分大小写 strposquotHELlo Woldquotquotlquot→3 strcspnstrcharstartlen char在文本str中第一次出现的位置区分大小写若有startlen则表示从哪里开始计数考虑查多少位。
strcpnquot012345678quotquot5quot25→3 substr_countstrcharstartlen 统计char在str出现的次数若有startlen则表示从哪里开始查考虑查多少位。
substr_countquothello worldquotquotoquot51→0 ★★插入替换删除格式化再分配★★ 函数原型 功能分析 使用实例 str_replacestr1str2str strtrstrstr1str2 用str2替换str中的str1 str_replacequotgtquotquotgtquottitle substr_replacestrcharstartlen 从start起用char替换之后的所有字符若有len则len长度 substr_replacequothello world quotquotmy lovequot65→hello my love strtolowerstrstrtoupperstr ucfirststrucwordsstr 全部小写或大写 首字母大写或每个单词首字母大写 uc
wordsquothello world quot→Hello World implodegluearr joinstrarr 将数组arr的值用字符glue连接合并成字符串 implodequotorquotarrayquotto bequotquotnot to bequot→quotto be or not to bequot explodegluestrnum 按str中的标志glue分割成数组成员若有则表示数组成员的个数 explodequotquotquot123quot2→Array0gt11gt23 chopstrltrimstr trimstrrtrimstr 去除连续左两端右空格制表符回车 chopquot he llo world quot→quothe llo worldquot 4 二数组操作类 在
PHP编程中有相当多的内容都与数组有联系入库的信息需要纳入数组统计一些信息需要写入数组等这些操作都离不开数组很多信息都是用数组作为载体的所以数组的操作在
PHP编程中占有很大的比重只有熟练地操作数组才能写出高效的
PHP程序。
PHP支持一维数组和多维数组数组的元素也有很大的灵活性数组可以有用户创建或由函数生成有一些特定的数据库处理函数可以从数据库查询中生成数组还有一些函数的返回值也是数组等。
下面介绍几种操作数组非常实用的函数 函数原型 功能分析 使用实例 Bool in_arraystrarr 判断字符str是否在数组arr里在时返回TRUE否则为FALSE ifin_arrayquotlovequotarrayquotlovequotquotlikequot→true Array array_combinearr1arr2 返回以arr1作键arr2作值的数组 array_combinearrayquot中国quotquot日本quotarrayquot伟大quotquot尾大quot→arrayquot中国quotgtquot伟大quotquot日本quotgtquot尾大quot Array array_chunkarrnumkpkey 将数组arr以nme个成员为一组返回新数组kpkey表示是否保留原来的键名. array_chunkarrayquot中国quotgtquot伟大quotquot日本quotgtquot尾大quotquot美国quotgtquot大尾quot2true→array0gtarrayquot中国quotgtquot伟大quotquot日本quotgtquot尾大quot1gtarrayquot美国quotgtquot大尾quot Array array_count_valuesarr 统计数组arr中值的出现次数以新数组返回 array_count_valuesarrayquot100quotquot120quotquot100quot→array100gt2120gt1 msyql_diffarr1arr2 msyql_diff_keyarr1arr2 msyql_diff_assocarr1arr2 对应的通过只比较值/之比较/键名/两者都比较来返回只在arr1不在arr2的新数组。
mysql_diff_assocarray1quotkquotgtquotwlquotarray12→arrayquotkquotgtquotwlquot msyql_intersectarr1arr2 msyql_intersect_keyarr1arr2 msyql_intersect_assocarr1arr2 对应的通过只比较值/之比较/键名/两者都比较来返回同时在arr1与arr2的新数组。
mysql_diff_assocarray1quotkquotgtquotwlquotarray12→array0gt1 5 三数据库类 使用
PHP少不了对数据库的操作PHPMySQL是一对不可多得的quot黄金组合quot下面就介绍一些操作MySQL数据库的重要函数. 函数原型 功能分析 使用实例 mysql_connecthosturerpsd mysql_pcoonenthosturerpsd 这两个都是用于连接数据库返回连接标志符后者为持久连接即它会先寻找已打开的链接若找到则返回此连接标识符而不打开新的连接此连接将保持打开以备后续操作。
linkmysql_pconenctquotlocalhostquotquotmyquotquot123quot mysql_closelink mysql_free_resultres 关闭连接与释放资源 mysql_free_resultresult BOOL mysql_pinglink 检查数据库的连接是否正常若已断开则自动尝试连接本函数可用于空闲很就的脚本来检查服务器是否关闭了连接连接可用则返回TRUE ifmysql_pinglink echo quot服务器连接还在quot mysql_errorlink mysql_errnolink 返回错误的文本内容或错误的数字代号 msyql_select_dbdblink or diequot错误quotmysql_errnolink resourse
mysql_unbuffered_querysqllink 该函数不会自动获取并缓存结果集可以节省内存并且获取第一行后立即执行而不用等到SQL语句全部执行完毕。
当使用多个数据库连接时必须制定link resultmy
sql_unbuffled_querysql int mysql_affected_rowslink 获取最近一次与指定数据库关联的INSERTUPDATE或DELETE查询所影响的记录行数。
查询成功则返回行数失败则为-1注意当删除所有记录时返回0当使用UPDATE时MySQL不会将原值与新值一样的列更新这使得它的返回值不一定就是符合查询条件的记录数。
mysql_queryquotdelete from tb where idgt12quotprintfquot被删除的记录行数为dnquotmysql_affected_rows Array mysql_fetch_rowres Array mysql_fetch_assocres Array mysql_fetch_arrayresquery_type object mysql_fetch_objectres 分别表示从结果集中获取一行返回数字数组关联数组数字或关联数组返回对象。
其中res为查询结果集 数字数组表以数字作键名的数组关联数组以字符为键名返回对象则通过该对象访问数据。
Object mysql_fetch_fieldres 从结果集中获取列信息并返回一个包含字段信息的对象如列名是否有最大长度设置是否允许为空是否为关键字等是为1否为0其它返回相应字符。
。
whileiltmysql_num_fieldsres iobjmysql_fetch_fieldresifobjecho obj-gtname.obj-gtmax_length.obj-gtnot_null.obj-gtprimary_key 6 mysql_num_rowsres mysql_num_fieldsres 返回结果集中的行数或字段数 主要是用于遍历结果集 四变量检查类函数 变量检查类函数我把它分为这么几种情况检查变量是否存在是否有值数据类型是什么强制转换以及打印出变量的详细信息具体如下表 函数原型 功能分析 使用实例 bool issetvar unsetvar 检查变量是否存在以及销毁一个变量。
varNULLifissetvarecho quotvar已设置所以返回为TRUE你将看到这一段话。
quot bool emptyvar 检查变量的值是否为空包括quotquot0quot0quotNULLFALSEarrayvar var 以及没有任何属性的对象都被认为为空如果为空则返回TRUE var0ifemptyvar echo quot变量为空看到此句话。
quot is_numericintfloatbool stringobjectnullarrayresource scalarvar 检查数据类型从字面就可以看出都是检查什么这里不赘述需要说明的是如果是那种类型时函数将返回TRUE.其中is_scalervar用于检查是否为标量标量指的是intfloatstringbool而arrayobjectresource则不属于标量。
varquot123quotifis_numericvar echo quot是数值或数值字符串所以看得到这句话。
quot floatvalintvalroundceilfloorvar 分别为浮点数取整四舍五入天花板数地板数看看例子就明白了 floatval1.23→1.23 int1.23→1 int1.51→1 round1.23→1 round1.51→2 ceil1.23→2 ceil1.51→2 floor1.23→1 floor1.51→1 print_rvar bool_return var_dumpvar var_exportvar bool_return 这三个函数都是用于把变量的值详细地打印出.其中 当bool_return为true时则可以捕获该函数的返回值并不会打印结果。
varprint_rarray01trueecho var→array0gt01gt1 关于正则表达式文件目录函数图像类函数等我将在下次专题更新时详细讲解欢迎关注。
PHP面向对象编程 此章思路 首先把面向对象编程类对象类的封装性继承和多态的概念以深入浅出的方式阐明 再全面剖析面向对象编程中用到的关键字与内置方法函数 7 最后以一个简单的例子说明如何面向对象编程。
1.面向对象的概念 面向对象编程Object Oriented Programming OOP是一种计算机编程架构OOP的一条基本原则是
计算机程序是由单个能够起到子程序作用的单元或对象组合而成OOP达到了软件工程的三 个目标重用性、灵活性和扩展性。
为了实现整体运算每个对象都能够接收信息、处理数据和向其它对象发送信息。
面向对象一直是
软件开发领域内比较热门的话 题首先面向对象符合人类看待事物的一般规律。
其次采用面向对象方法可以使
系统各部分各司其职、各尽所能。
为编程人员敞开了一扇大门使其编程的
代码 更简洁、更易于维护并且具有更强的可重用性。
有人说
PHP不是一个真正的面向对象的语言这是事实。
PHP 是一个混合型语言你可以使用OOP也可以使用传统的过程化编程。
然而对于大型项目你可能需要在
PHP 中使用纯的OOP去声明类而且在你的项目里只用对象和类。
这个概念我先不多说了因为有很多朋友远离面向对象编程的主要原因就是一接触面向对象概念的时 候就理解不上去所以就不想去学下去了。
等读者看完整体内容后再去把概念搞明白吧. 2.什么是类什么是对象类和对象这间的关系 类的概念类是具有相同属性和服务的一组对象的集合。
它为属于该类的所有对象提供了统一的抽象描述其内部包括属性和服务两个主要部分。
在面向对象的编程语言中类是一个独立的程序单位它应该有一个类名并包括属性说明和服务说明两个主要部分。
对 象的概念对象是系统中用来描述客观事物的一个实体它是构成系统的一个基本单位。
一个对象由一组属性和对这组属性进行操作的一组服务组成。
从更抽象的角 度来说对象是问题域或实现域中某些事物的一个抽象它反映该事物在系统中需要保存的信息和发挥的作用它是一组属性和有权对这些属性进行操作的一组服务 的封装体。
客观世界是由对象和对象之间的联系组成的。
类与对象的关系就如模具和铸件的关系类的实例化结果就是对象而对一类对象的抽象就是类。
类描述了一组有相同特性属性和相同行为方法的对象。
上 面大概就是它们的定义吧也许你是刚接触面向对象的朋友 不要被概念的东西搞晕了给你举个例子吧如果你去中关村想买几台组装的PC机到了那里你第一步要干什么是不是装机的工程师和你坐在一起按你提供的 信息和你一起完成一个装机的配置单呀这个配置单就可以想象成是类它就是一张纸但是它上面记录了你要买的PC机的信息如果用这个配置单买10台机 器那么这10台机子都是按这个配置单组成的所以说这10台机子是一个类型的也可以说是一类的。
那么什么是对象呢类的实例化结果就是对象用这个 配置单配置出来实例化出来的机子就是对象是我们可以操作的实体10台机子10个对象。
每台机子都是独立的只能说明他们是同一类的对其中一个 机做任何动作都不会影响其它9台机器但是我对类修改也就是在这个配置单上加一个或少一个配件那么装出来的9个机子都改变了这是类和对象的关系类 的实例化结果就是对象。
3.什么是面向对象编程呢 先不说他的概念如果你想建立一个电脑教室首先要有一个房间房间里面要有N台电脑有N张桌子N把椅子白板投影机等等这些是什么刚才咱们说了这就是对象能看到的一个个的实体可以说这个电脑教室的单位就是这一个个的实体对象它们共同 组成了这个电脑教室那么我们是做程序这和面向对象有什么关系呢开发一个系统程序和建一个电脑教室类似你把每个独立的功能模块抽象成类形成对象 由多个对象组成这个系统这些对象之间都能够接收信息、处理数据和向其它对象发送信息等等相互作用。
就构成了面向对象的程序。
4.如何抽象出一个类 上面已经介绍过了面向对象程序的单位就是对象但对象又是通过类的实例化出来的所以我们首先要做的就是如何来声明类做出来一个类很容易只要掌握基 本的程序语法定义规则就可以做的出来那么难点在那里呢一个项目要用到多少个类用多少个对象在那要定义类定义一个什么样的类这个类实例化出多少 个对象类里面有多少个属性有多少个方法等等这就需要读者通过在实际的开发中就实际
问题分析
设计和总结了。
8 类的定义 class 类名 使用一个关键字class和后面加上一个你想要的类名以及加上一对大括号 这样一个类的结构就定义出来了只要在里面写
代码就可以了但是里面写什么 能写什么怎样写才是一个完整的类呢上面讲过来使用类是为了让它实例出对象来给我们用这就要知道你想要的是什么样的对象了像上面我们讲的一个装机 配置单上写什么你装出来的机子就有什么。
比如说一个人就 是一个对象你怎么把一个你看好的人推荐给你们领导呢当然是越详细越好了 首先你会介绍这个人姓名、性别、年龄、身高、体重、电话、家庭住址等等。
然后你要介绍这个人能做什么可以开车会说英语可以使用电脑等等。
只要你介绍多一点别人对这个人就多一点了解这就是我们对一个人的描述 现在我们总结一下所有的对象我们用类去描述都是类似的从上面人的描述可以看到 做出一个类来从定义的角度分两部分第一是从静态上描述第二是从动态上描述静态上的描述就是我们所说的 属 性像上面我们看到的人的姓名、性别、年龄、身高、体重、电话、家庭住址等等。
动态上也就是人的这个对象的功能比如这个人可以开车会说英语可以使 用电脑等等抽象成程序时我们把动态的写成函数或者说是方法函数和方法是一样的。
所以所有类都是从属性和方法这两方面去写属性又叫做这个类的成员 属性方法叫做这个类的成员方法。
class 人 成员属性姓名、性别、年龄、身高、体重、电话、家庭住址 成员方法可以开车 会说英语 可以使用电脑 .