前言
TIOBE 2017 年度编程语言榜单已出炉,世界上最好的语言 PHP 再度无缘年度编程语言。
距离其上次(2004 年)获得年度编程语言,已有 13 年之久。而从历年 TIOBE 编程排行榜趋势图也可以看到,自 2014 年以来,PHP 总体处于持续下滑趋势。
作为世界上最好的语言,PHP 的霸主地位会被撼动吗?
据 W3Techs.com 的数据显示,近年来,有超过 80% 的网站在服务器端的编程语言选择了 PHP,一门语言流行的背后必会有其原因,PHP 一开始凭借其简单上手而流行起来,而持续流行了这么多年,我们相信不仅仅是由于它的易于使用,作为一门服务器端的语言,如果性能没有足够好,很难一直被流行至今。
PHP 7 之后会有什么 —— JIT
这是一个十分值得我们期待的版本,目前由 Zend 引擎的 Dmitry Stogov 主导。虽然它是基于 PHP 7.1 版本,但实际版本号尚未确定。
JIT 是什么?为什么是 JIT?
JIT (Just-In- Time 即时编译) 并非是新技术,很多语言例如 Java 早已实现。JIT 的思想很简单,即在程序运行时动态对程序进行编译,生成平台相关的机器码(比如运行它的机器 CPU 的本地代码),从而加快程序的运行速度。
为什么是 JIT?
不妨先来看看 PHP 文件的执行流程。PHP 文件的执行流程大致是首先引擎加载 PHP 文件,解释器逐条解释执行代码。
引入 JIT 后,前面部分一样,重点是 JIT 编译器会根据 Runtime 信息对热点代码进行动态编译生成机器码,此后这部分代码就可以直接执行,不再需要解释器逐条解释执行,因此运行效率会得到提升。
Facebook 开源的 PHP 虚拟机 HHVM(HipHop Virtual Machine) 就采用了 JIT,这让他们的 PHP 性能测试结果提升了一个数量级,也让开发者意识到 JIT 是一项点石成金的强大技术。HHVM 也是目前最热门的带 JIT 编译器的 PHP 实现。
12个提问频率最高的PHP面试题
问题1:请用最简单的语言告诉我PHP是什么?
回答:PHP全称:Hypertext Preprocessor,是一种用来开发动态网站的服务器脚本语言。
问题2:什么是MVC?
回答:MVC由Model(模型), View(视图)和Controller(控制器)组成,PHP MVC可以更高效地管理好3个不同层的PHP代码。
Model:数据信息存取层。
View:view层负责将应用的数据以特定的方式展现在界面上。
Controller:通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。
问题3:在页面中引用CSS有几种方式?
回答:在页面中使用CSS有3中方式:
引用外部CSS文件
内部定义Style样式
内联样式
问题4:PHP支持多继承吗?
回答:不可以。PHP类只能继承一个父类,并用关键字“extended”标识。
问题5:请问PHP中echo和print有什么区别?
回答:这两个看起来很相似,因为它们都是将一些值打印在屏幕上。但是echo和print的本质区别在于:echo用来输出字符串,显示多个值的时候可以用逗号隔开。只支持基本类型,print不仅可以打印字符串值,而且可以打印函数的返回值。
问题6:请问GET和POST方法有什么区别?
回答:我们再网页上填写的表单信息都可以通过这两个方法将数据传递到服务器上,当我们使用GET方法是,所有的信息都会出现在URL地址中,并且使用GET方法最多只能传递1024个字符,所以如果在传输量小或者安全性不那么重要的情况下可以使用GET方法。说到POST方法,最多可以传输2MB字节的数据,而且可以根据需要调节。
问题7:PHP中获取图像尺寸大小的方法是什么?
回答:getimagesize () 获取图片的尺寸
Imagesx () 获取图片的宽度
Imagesy () 获取图片的高度
问题8:PHP中的PEAR是什么?
回答:PEAR也就是为PHP扩展与应用库(PHP Extension and Application Repository),它是一个PHP扩展及应用的一个代码仓库。
问题9:如何用PHP和MySQL上传视频?
回答:我们可以在数据库中存放视频的地址,而不需要将真正的视频数据存在数据库中。可以将视频数据存放在服务器的指定文件夹下,上传的默认大小是2MB,但是我们也可以在php.ini文件中修改max_file size选项来改变。
问题10:PHP中的错误类型有哪些?
回答:PHP中遇到的错误类型大致有3类。
提示:这都是一些非常正常的信息,而非重大的错误,有些甚至不会展示给用户。比如访问不存在的变量。
警告:这是有点严重的错误,将会把警告信息展示给用户,但不会影响代码的输出,比如包含一些不存在的文件。
错误:这是真正的严重错误,比如访问不存在的PHP类。
问题11:如何在PHP中定义常量?
回答:PHP中使用Define () 来定义常量。
define (“Newconstant”, 30);
问题12:如何不使用submit按钮来提交表单?
如果我们不想用submit按钮来提交表单,我们也可以用超链接来提交,我们可以这样写代码:
<a href=”javascript: document.myform.submit();”>Submit Me</a>
最后
PHP 在服务端编程语言领域依旧占据主导地位,同时,PHP 社区组持续不断地做版本迭代更新,性能提升。让我们共同来期待PHP更好的未来吧。
在php中有很多的过滤,可以对输入的字符串进行过滤,同时也可以对邮件地址进行过滤,接下来我要讲的是php中的3种高级过滤,在开发中很实用。
第一种:过滤数值范围
在php经常要接收各种数据,其中数值是非常普遍的一种,我们接收到的数值并不是多大都行的,无用的数据对于我们的数据库来说就是浪费资源,所以在接收数据的时候,有必要对数字的范围进行过滤。
对数字的范围进行过滤这里需要用到的是FILTER_VALIDATE_INT这个关键字以及它的附加条件,步骤如下:
1、新建一个变量。
2、通过filter_var函数对这个变量进行过滤,过滤的根据是FILTER_VALIDATE_INT,附加条件是数字的最大值和最小值。例如:filter_var($shuzi,FILTER_VALIDATE_INT,array("options"=>array("min_range"=>$min,"max_range"=>$max))。
3、最后就是根据过滤的结果给出相应的提示信息。
第二种:对ipv6地址进行过滤。
如今ipv4地址已经用完了,逐渐开始使用ipv6地址,在接收这类IP地址的时候,我们很可能就会遇到ipv6这样的地址,针对这样的地址,我们借用FILTER_VALIDATE_IP,FILTER_FLAG_IPV6这两个条件来进行过滤。实例代码如下:
$ipv6="2004:0db9:89a3";
$panduan=filter_var($ipv6,FILTER_VALIDATE_IP,FILTER_FLAG_IPV6);
if($panduan){
echo "这是合法的ipv6地址";
}
else{
echo "这个ipv6地址不合法";
}
第三种:对查询语句的过滤。
在接收数据的时候,我们不能防止用户输入什么内容,有些用户就故意在输入信息的时候,搞sql注入,在网址上添加查询语句,这样的语句我们是要拒绝接收的,所以,在接收网址的时候,对它进行过滤是非常有必要的,判断地址中是否包含了查询语句。
判断是否包含查询语句,我们可以通过FILTER_VALIDATE_URL和FILTER_FLAG_QUERY_REQUIRED这两个关键字来实现,具体代码如下:
$chaxun="http://www.nihao select * from b hello";
$panduan=filter_var($chaxun,FILTER_VALIDATE_URL,FILTER_FLAG_QUERY_REQUIRED);
if($panduan){
echo "url地址是不合法的";
}
else{
echo "url地址是合法的";
}
以上就是关于3种php高级过滤,有兴趣的朋友可以了解一下,同时欢迎提出宝贵的意见和建议。
编程开发框架是什么?通俗的讲是别人封装好常用方法,开发者直接调用或使用即可。
php发展到现在已经有24年,目前php流行框架大概有十几个左右,我们常用的也是目前市场上需求最大的五个框架,分别是:ThinkPHP(国内)、Zend Framework(国外)、Yii(国外)、Laravel(中外)、CakePHP(国外)。
很多网友发现,php很多框架都是国外开发的,目前纯属于国人自己开发的只有thinkphp框架,我们简称“TP”框架。Laravel为什么说中外开发呢?Laravel目前中文文档也是比较全面,而且有中国自己人参与开发,也是目前国内使用率比较的php框架,现在流行前后台模板分离,Laravel在API设计是目前所有php框架中最好的一个,所有Laravel未来在国内市场还会继续上升。
很多国内企业开发喜欢用Zend Framework与Yii,这两个框架适合大型项目开发。对于大型项目中,他们开发简单、高效,扩展支持多。其中Yii将 Web编程中的可重用性发挥到极致,能够显著加速开发进程。CakePHP是基于十分注重快速开发,使得它成为一个非常好的用于RAD的开发框架。
最后我们来说下,我们国人自己开发的TP框架,也是目前国人使用最多的框架。初学者学习框架优先选择TP框架,完全免费中文文档,学习资料齐全,不用翻译也不用担心看不懂,学习社区也非常多。在TP5.0出来之后,号称是为API而生,其中开发模式是MVC,开发方式和思维符合我们国人的开发思维。
其实为什么国人都喜欢TP框架是:简单、资料多、容易上手、完美胜任日常项目、后期维护简单。
责任编辑:莫兰新
PHP是一门非常优秀的脚本编程语言,与其它编程语言有一个非常不同的地方,那就是魔术方法,PHP有非常多的魔术方法用于实现一些非常不可思议的功能。
啥是PHP的魔术方法?
在定义类时,以两个下划线字符(__)开头的方法都是魔术方法,而且方法名都是PHP预先定义好的,每一个都拥有魔术般的功能。我们自己在定义方法时,不建议使用两个下划线字符开头,这样会与PHP的魔术方法混淆。
PHP有哪些魔术方法?
PHP提供了非常多的魔术方法,比如: __construct(), __destruct(), __call(), __callStatic(), __get(), __set(), __isset(), __unset(), __sleep(), __wakeup(), __toString(), __invoke(), __set_state(), __clone() 等等,今天我来给大家说说其中非常实用的5个。
第1:__construct()构造方法
执行时机:在使用 new关键字使用类实例化一个对象时自动执行
功能作用:通常用于对对象的属性进行初始化
用法示例:
如何记住:construct 含义:构成;修建;建造; 读音: [knstrkt] ,可以理解为构造对象的方法,在构造对象时自动执行。
第2:__destruct()析构方法
执行时机:在对象被销毁(unset或PHP执行结束)时自动执行
功能作用:通常用于释放对象占用的第三方资源(如:数据库)
用法示例:
如何记住:destruct 含义:破坏;破坏的; 读音: [d'strkt]
第3:__toString()转换字符串
执行时机:在对象被当成字符串使用时自动执行
功能作用:兼容对象的字符串调用形式,根据用户需求显示出对象的字符串形态
用法示例:
如何记住:toString 含义:to到;向,朝着; String 字符串; 读音: [tu,t] [str]
第4:__invoke()函数调用方法
执行时机:在对象被当成函数使用时自动执行
功能作用:兼容对象的函数调用形式,允许用户像使用函数一样使用对象
用法示例:
如何记住:invoke 含义:援引;乞灵;祈求; 读音: [nvok]
第5:__clone()克隆方法
执行时机:在克隆(clone)对象时自动执行
功能作用:在克隆对象时可以同时执行一些其它操作,甚至可以阻止对象被克隆
用法示例:
如何记住:clone 含义:复制;克隆; 读音: [klon]
总述,PHP提供了很多这样的魔术方法,他们都有神奇的功能,在做相应的操作时都会自动执行,由于时间关系我们本次就只能盘点PHP这5大魔术方法及其功能作用,如果对本次总结的魔术方法或其它的PHP魔术方法有疑惑也可以随时来源码时代一起讨论交流哦。
常见问题问题(区别篇)
session与cookie的区别
cookie定义:cookie是会话技术中的一种,是一种服务器将能够 标识用户的数据保存在客户端的一种机制
1、session跟cookie都是用于记录用户的信息
2、Session默认情况下是存储在磁盘上(可以修改session的 机制使存储位置不一样)(have_set_save_handle)。Cookie 保存在”浏览器上的”
3、Session是基于cookie的基础之上的
4、cookie有存储上限
post与 get的区别
1、提交方式不同,get地址栏提交,post协议后台提交
2.传输大小不同,post相对大一些,浏览器限制
3.安全性不同,post相对安全,(两者均可以被模仿)
4.http协议请求行不同,get后有空行,post没有
redis与memcache的区别
1.memcache主要作用减少mysql服务器压力
2.内存性的数据缓存系统,读取速度更加快,安全性低
3.memcache需要对数据有备份,临时存储,服务器重启,内 存数据丢失
4.数据读取直接使用,没有从数据库读取并缓存memcache中
5.mecache原始数据修改,更新对应缓存或直接删除
6.memcache只支持字符串类型
7.redis数据持久化,备份功能,写入磁盘中,数据库特效
(1.redis支持持久化;redis支持数据类型多; Memcache 相对稳定,当redis数据较大性能有所下降,对于字符 串Memcache 支持1M,redis支持512M;redis的key没有上 限,memcach最大为250字符)
http、https与tcp协议认识
1. TCP 传输控制协议,是一种提供可靠数据传输的通用协 议,TCP协议更靠近应用层。
2.HTTP协议即超文本传送协议,服务及客户端响应性,无状 态,无连接。
3.HTTP下加入SSL层,HTTPS的安全基础是SSL,需要交费,端 口号为443。
4.https协议效率是http的十分之一。
TPthink框架中D与M函数区别
1.M函数实例化的是基类模型,D实例化自定义模型
2.M相对处理代码业务功能性较低
3.M函数可以垮库及多库连接
面向过程跟面向对象认识
1.面向过程指把一个问题当做一个流程,把问题分析成一步 一步的步骤,再写代码,函数,按过程的顺序依次调用
(第1步:分析步骤;第2步:使用函数实现每一个步骤;第3 步:按顺序调用即可。)
2.第1步:分析步骤;第2步:封装函数;第3步:封装到对 象;第4步:按顺序调用。
相同点:模块化的编程,封装到函数,满足代码复用
不同点:1.面向过程解决问题最高效
2.面向对象效率相对较低
3.面向对象适合大项目,后期维护,扩展方便
MVC认识:
1.一种网页开发的设计思想,将数据输入,业务处理,数据 输出,分离开,由控制器,模型,视图三部分构成;
2控制器控制模型获取数据,控制视图显示数据;模型调用 mysql获取数据,视图调用模板;
优点: 1. 耦合性低,模型业务逻辑分离,更改影响较小
2.可重用性高,多个视图共享一个模型,并且返回的数据没 有进行格式化
3.可维护性,扩展性强。逻辑及视图分离原因
4.部署完架构后,开发效率非常快
缺点:
1.没有明确的定义,故网址的布局,业务逻辑要求高
2.由于需要花费较多时间部署模型,不适应与中小型项目,
3.内部使用了复杂的构建,所以运行效率相对较低
PHP中抽象类跟接口区别:
1.抽象类是一种特殊类,接口是一种特殊的抽象类;
2.继承关键字为“extends”,接口为“implements”
3.抽象类可以声明变量,接口只能用const定义常量
4.类可以实现多个接口,却只能实现一个抽象类
5.抽象类定义-》abstract,接口定义-》interface
6.抽象类为半成品,接口里面全部都是抽象方法;
多态的重写与重载区别:
重载定义:
类外对不可访问的属性进行访问的处理方式
1.重写指的是子类继承父类,并实现对父类中的方法重写
2.重载值的是类中有多个同名的方法,根据传参不同,调用 不同的函数
进程跟线程的区别:
1.进程指一个应用程序的运行
2.运行程序中的某一部分组成
include与require/include_once、require_once区别:
1.include 错误报一个warning,php脚本继续执行
2.require 报error,php脚本终止执行
3.include_once、require_once 先检查是否引入过就不在引入
char与varchar区别:
1.两者存储大小不同,char 258,varchar65535
2.char为定长,varchar变长,char效率更高,时间换空间
3.char保留两边的空格,varchar会去掉空格
掌握知识点1,2在上一篇文章已经介绍过了,现在我们从第三个知识点来讲吧!
不仅仅是码农1.Array 函数2.Calendar 函数3.cURL 函数4.Date 函数5.Directory 函数6.Error 函数7.Filesystem 函数8.Filter 函数9.FTP 函数10.HTTP 函数11.LibXML 函数12.Mail 函数13.Math 函数14.Misc 函数15.MySQLi 函数16.SimpleXML 函数17.String 函数18.XML Parser 函数19.Zip 函数
PHP cURL 函数
概述PHP支持的由Daniel Stenberg创建的libcurl库允许你与各种的服务器使用各种类型的协议进行连接和通讯。libcurl目前支持http、https、ftp、gopher、telnet、dict、file和ldap协议。libcurl同时也支持HTTPS认证、HTTP POST、HTTP PUT、 FTP 上传(这个也能通过PHP的FTP扩展完成)、HTTP 基于表单的上传、代理、cookies和用户名+密码的认证。PHP中使用cURL实现Get和Post请求的方法这些函数在PHP 4.0.2中被引入。需求为了使用PHP的cURL函数,你需要安装 libcurl包。PHP需要使用libcurl 7.0.2-beta 或者更高版本。在PHP 4.2.3 里使用cURL,你需要安装7.9.0或更高版本的libcurl。从PHP 4.3.0开始你需要安装7.9.0或更高版本的libcurl。从PHP 5.0.0开始你需要安装7.10.5或更高版本的libcurl。安装要使用PHP的cURL支持你必须在编译PHP时加上--with-curl[=DIR] 选项,DIR为包含lib和include的目录路径。在include目录中必须有一个名为curl,包含了easy.h和curl.h的文件夹。lib文件夹里应该有一个名为libcurl.a的文件。对于PHP 4.3.0你可以配置--with-curlwrappers 使cURL使用URL流。注意: Win32用户注意 要在Windows环境下使用这个模块,libeay32.dll和ssleay32.dll必须放到PATH环境变量包含的目录下。 不用cURL网站上的libcurl.dll。资源类型这个扩展定义了2中资源:cURL句柄和cURL批处理句柄。PHP cURL 函数以下包含了PHP cURL函数列表:
1、Notepad++
总结来说就是小而精,7.4版本的软件包只有2.9M,比一般的IDE小数十倍,但是Notepad++的功能确是很全面的,代码高亮,语法折叠,宏功能,内置支持27种编程语言,基本上常见的C、C#、C++、Java、PHP、ASP、Python、JSP、CSS、Js,它都能够很好的提供支持,具有很好的扩展性,可添加多种插件,如Insertion、XML Tools、TextFX、Doc Updater等。比较适合新手和大神级使用。
Notepad++2、sublime
这是一款号称神级代码编辑器,这么说它也是有原因的,sublime具有漂亮的页面和强大的功能,打开速度快、多种语言支持,跨平台性。在功能上代码缩进、代码提示、快速搜索、而且具有很强大的插件功能,虽然不是开源软件,但是使用者还是非常的,总结来说就是轻量、简洁、高效。
sublime3、phpstorm
这是一款商业PHP集成开发工具,同时也是一款智能高效的编辑工具,功能非常强大,代码高亮、代码提示、自动补全、错误提醒、代码同步、自动保存、本地代码库、诸多快捷键、诸多插件。
phpstorm4、ftp
是用于在网络上进行文件传输的一套标准协议,使用客户/服务器模式。它属于网络传输协议的应用层。文件传送(file transfer)和文件访问(file access)之间的区别在于:前者由FTP提供,后者由如NFS等应用系统提供。
FTP是一个8位的客户端-服务器协议,能操作任何类型的文件而不需要进一步处理,就像MIME或Unicode一样。但是,FTP有着极高的延时,这意味着,从开始请求到第一次接收需求数据之间的时间,会非常长;并且不时的必须执行一些冗长的登录进程。
ftp5、FinalShell
FinalShell是一体化的的服务器,网络管理软件,不仅是ssh客户端,还是功能强大的开发,运维工具,充分满足开发,运维需求。特色功能:免费海外服务器远程桌面加速,ssh加速,双边tcp加速,内网穿透。
6、git
是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。 Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆(git clone),在本地机器上拷贝一个完整的Git仓库。
git7、svn
SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS迁移到Subversion。说得简单一点SVN就是用于多个人共同开发同一个项目,共用资源的目的。
集中式代码管理的核心是服务器,所有开发者在开始新一天的工作之前必须从服务器获取代码,然后开发,最后解决冲突,提交。所有的版本信息都放在服务器上。如果脱离了服务器,开发者基本上可以说是无法工作的。
svn8、百度翻译
百度翻译是百度发布的在线翻译服务,依托互联网数据资源和自然语言处理技术优势,致力于帮助用户跨越语言鸿沟,方便快捷地获取信息和服务。
百度翻译9、Xmind
XMind 是一款非常实用的商业思维导图软件,应用全球最先进的Eclipse RCP 软件架构,全力打造易用、高效的可视化思维软件,强调软件的可扩展、跨平台、稳定性和性能,致力于使用先进的软件技术帮助用户真正意义上提高生产率。
xmind10、TeamViewer免装版
TeamViewer是一个能在任何防火墙和NAT代理的后台用于远程控制的应用程序,桌面共享和文件传输的简单且快速的解决方案。为了连接到另一台计算机,只需要在两台计算机上同时运行 TeamViewer 即可,而不需要进行安装(也可以选择安装,安装后可以设置开机运行)。该软件第一次启动在两台计算机上自动生成伙伴 ID。只需要输入你的伙伴的ID到TeamViewer,然后就会立即建立起连接。
TeamViewer
Php是超文本预处理器(Hypertext Preprocessor)英文全称首字母的缩写,php从1995年发展到现在现在已经成为流行开发动态网站的程序开源服务器端语言。它融合了c、java、perl语言一些好的特点成为网站开发最佳的工具。
php工作原理php工作原理是什么?
PHP、Apache和MySQL的组合已经成为Web服务器的标配,php可以做很多事情,PHP是服务端的脚本程序,需要安装php应用程序去解释执行,简单来说php是web服务器(iis、apache)功能扩展,这种结构更加适合网站原理,php需要和web服务器、数据库一块才能发挥功能。
php常用功能下面为大家简单介绍php常用功能有哪些?
1.收集表单数据
表单是最常用的数据收集界面。在提交时可以用GET或POST的方法将数据发送给PHP程序脚本。另外PHP也可以以变量的形式访问每一个表单域,这些功能使php再收集客户输入的数据是非常简单的。
2.生成动态网页
PHP和JavaScript不同是php运行在服务器端,可以根据客户端不同请求动态输出内容,而客户端接受数据却不知道背后代码如何运行的,而javascript客户端运行的语言无法做到这点。
3.字符串处理
在处理文本时,经常要处理各种字符串,字符串处理是程序员使用最多技术之一,而PHP是把字符串作为基本的数据类型来处理。另外PHP中提供了丰富的字符串函数,来供我们使用。
4.动态输出图像
PHP通过使用GD扩展库来动态输出图像,登录大多数的验证码就是使用这个功能,我们也可以使用缩略图和添加水印等图像处理功能。
5.处理服务器端文件
要想让数据可以长期保留,必须要使用数据库或是文件系统,PHP可以利用文件系统函数任意操作服务器中的目录或文件(编辑、删除、创建等功能)。
6.会话控制
我们使用HTTP协议访问网站时它是一个无状态,没有内建机制来维护两个事务之间的状态。换句话来说http无法区分两个请求是否都是来自一个用户请求,而PHP就可以使用会话控制在网站中跟踪一个用户,控制该用户的行为。
以上的6项是php中常用的功能,剩下的就不一一列举,大家有什么好的想法可以发表意见欢迎发表一块讨论下。
在php开发中,我们经常会用到一些操作,现在我整理下来,与大家共同分享:
一、字符串
a、使用:在php中字符串用单引号和双引号是有区别的,因为在双引号中可以引用变量,单引号就不行;所以我们在使用字符串变量时使用单引号,性能会好点;
b、去除空格:trim去除首尾空格、ltrim去除左侧空格、rtrim去除右侧空格
trimtrim结果c、字符串大小写转换:strtolower,全部转换成小写;strtoupper全部转换成大写;ucfirst字符串第一个字符大写;ucwords字符串每个字第一个字符大写。
d、字符串比较:strcmp二进制安全比较,strncmp二进制比较字符串前几个字符,strcasecmp不分大小写比较字符串;strnatcmp自然排序法比较字符串;similar_text计算字符串相似度。
e、字符串与HTML:htmlspecialchars将特殊符号转成HTML实体,比如<转成<;strip_tags去除标签包括HTML和PHP;nl2br\n转成HTML标签<br/>
f、字符串填充str_pad:可以指定填充的字符,长度,前后位置:
字符串填充g、字符串反转strrev,字符串长度strlen,以千分位格式化字符串数字number_format,字符串分割转换数组:explode,或者使用str_split将数组按照长度分割,字符串替换str_replace,不区分大小写str_ireplace;截取字符串含中文时,用mb_substr,不然会乱码;
二、数组
a、使用:直接接使用array,或者[];
b、数组新增:直接使用$arr[]=$newval;向数组末尾追加;或者使用array_pad($arr,size,newval)指定添加方式,第一个参数为待添加的数组,第二个为新数组大小,为正值则追加数组末尾,负值则向数组首部插入;array_push向末尾添加;array_unshift向数组首部添加;
c、数组删除:删除整个数组unset,这个时候数组不再存在;删除元素array_splice,指定开始删除元素索引,删除个数,同时可以添加新的元素;
d、数组排序:sort从低到高排序、rsort逆向排序;asort、arsort保留索引的排序;
f、数组比较:array_diff返回参数一数组有而参数二数组没有的;array_diff_assoc同array_diff(),只是它对键值也比较 ;array_diff_key比较键值;
g、其他操作:
array_product($array):返回数组的所有数的乘积
array_sum($array):所有数值的和
array_rand($array,$n):在$array数组中取出$n个数值,返回数组
array_intersect($array1,$array2):取得两个数组的交集
array_intersect_assoc($array1,$array2):在array_intersect 的基础上进行键值比较
array_intersect_key($array1,$array2):比较两个数组键值的交集
implode($split,$array):数组转换为字符串
三、常用函数
a、脚本执行时间:set_time_limit参数为0则不限时间
b、获取时间:可以先设置时区date_default_timezone_set('Asia/Hong_Kong');然后用date('Ymd h:m:s')格式化时间
c、判断文件是否是通过 HTTP POST上传的is_uploaded_file(),将上传的文件移动到新位置move_uploaded_file
d、脚本延迟10秒继续执行sleep(10)
今天就整理这么多,希望和大家一起进步!
框架其实就是可重用代码的集合,框架的代码是框架架构的代码,不是业务逻辑代码,框架代码保护类.方法.函数等等,框架代码按照一定的规则组合起来就形成了框架。
1、zendframwork: (ZF)是Zend公司推出的一套PHP开发框架。
功能非常的强大,是一个重量级的框架,ZF 用 100% 面向对象编码实现。 ZF 的组件结构独一无二,每个组件几乎不依靠其他组件。这样的松耦合结构可以让开发者独立使用组件。 我们常称此为 “use-at-will”设计。
2、Yii由国人开发的重量级的框架,这个框架把代码的可重用性发挥到极致。
Yii是一个高性能的PHP5的web应用程序开发框架。通过一个简单的命令行
PHP框架工具 yiic 可以快速创建一个web应用程序的代码框架,开发者可以在生成的代码框架基础上添加业务逻辑,以快速完成应用程序的开发。
3、CakePHP是国外的框架.
CakePHP是一个运用了诸如ActiveRecord、Association Data Mapping、Front Controller和MVC等著名设计模式的快速开发框架。
该项目主要目标是提供一个可以让各种层次的PHP开发人员快速地开发出健壮的Web应用,而又不失灵活性
4.Symfony,是一套国外的PHP开源框架。
简单的模板功能symfony是一个开源的PHP Web框架。基于最佳Web开发实践,已经有多个网站完全采用此框架开发,symfony的目的是加速Web应用的创建与维护。 它的特点如下:缓存管理 、自定义URLs、搭建了一些基础模块、多语言与I18N支持、采用对象模型与MVC分离、Ajax支持、适用于企业应用开发。
5、CodeIgniter(CI)轻量级框架,运行速度快。
CodeIgniter 是一个简单快速的PHP MVC 框架。
它为组织提供了足够的自由支持,允许开发人员更迅速地工作。使用 CodeIgniter 时,您不必以某种方式命名数据库表,也不必根据表命名模型。这使 CodeIgniter 成为重构遗留 PHP 应用程序的理想选择,在此类遗留应用程序中,可能存在需要移植的所有奇怪的结构。
6、CanPHP框架是一个简洁,实用,高效,遵循apache协议的php开源框架。
它既可以完美的支持MVC模式,又可以不受限制的支持传统编程模式。它是一个轻量级的php框架,同时也是一个实用的php工具 包。以面向应用为主,不纠结于OOP,不纠结于MVC,不纠结于设计模式,不拘一格,力求简单快速优质的完成项目开发,是中小型项目开发首选。
7、Laravel 是一个简单优雅的 PHP web 开发框架,将你从意大利面条式的代码中解放出来。通过简单的、表达式语法开发出很棒的 Web 应用。
在Laravel中已经具有了一套高级的PHP ActiveRecord实现 -- Eloquent ORM。它能方便的将“约束(constraints)”应用到关系的双方,这样你就具有了对数据的完全控制,而且享受到ActiveRecord的所有便利。Eloquent原生支持Fluent中查询构造器(query-builder)的所有方法。
8、SlimFramework是一个简单的 PHP5 框架用来创建 RESTful 的 Web 应用。
可以帮助你快速编写简单功能强大的 RESTful 风格的web应用程序 和APIs。Slim很简单,可以让新手和专业人士使用。
9、ThinkPHP是一个快速、简单、面向对象的轻量级PHP开发框架。
遵循Apache2开源协议发布,从Struts结构移植过来并做了改进和完善,同时也借鉴了国外很多优秀的框架和模式,使用面向对象的开发结构和MVC模式,融合了Struts的思想和TagLib(标签库)、RoR的ORM映射和ActiveRecord模式。
10、PHPUnit是一个轻量级的PHP测试框架。
它是在PHP5下面对JUnit3系列版本的完整移植。这个工具也可以被Xdebug扩展用来生成代码覆盖率报告 ,并且可以与phing集成来自动测试,最合它还可以和Selenium整合来完成大型的自动化集成测试。
11、KYPHP支持多数据库,多语言,多模版,多app,多缓存,多编码格式,模板布局,自定义类,自动加载公共类库。
KYPHP已应用于许多大项目中,在同一程式中可同时管理多个数据库源,管理多个缓存,并支持复杂的目录结构。从2.1开始kyphp又极大的增强了安全性,可有效防止sql注入,xss等常见安全问题。
12、initPHP是一款轻量级的php开发框架。
采用分层体系架构,适合大中型网站架构。提供丰富的library类库,以及简单的框架扩展机制,InitPHP还提供详细的开发文档,可以让您在使用该框架的时候更加简单实用。 InitPHP实现了抽象DB层、分层体系架构、缓存无缝切换机制、简单模板机制、多模型部署机制、强大的安全体系,是快速开发php应用的利器。
13、SpeedPHP是一款全功能的国产PHP应用框架系统。
SpeedPHP框架是从实际运行的商业系统中取其精华而成的,在稳定性和运行速度上都非常出色;同时有着清晰的架构,更有利于提高团队开发效率,教程众多,入门容易,号称最适合初学者的PHP框架,快速带你进入PHP高手的行列。