浅谈php的优缺点


Posted in PHP onJuly 14, 2015

一、优点

1. 跨平台,性能优越,跟Linux/Unix结合别跟Windows结合性能强45%,并且和很多免费的平台结合非常省钱,比如LAMP(Linux /Apache/Mysql/PHP)或者FAMP(FreeBSD/Apache/Mysql/PHP)结合,或者数据应用够大可以考虑换 PostgreSQL或者Oracle,支持N种数据库。(N >= 10)

2. 语法简单,如果有学习C和Perl的很容易上手,并且跟ASP有部分类似。有成熟的开发工具,比如NuPHPed,或者Zend Studio等等,再Linux平台下可以使用Eclipse等等。

3. 目前主流技术都支持,比如WebService、Ajax、XML等等,足够应用。

4. 有比较完整的支持,比如使用ADODB或者PEAR::DB做数据库抽象层,用Smarty或者smart template做模板层,如果是PHP 5.1的话,还能够使用PDO(PHP Data Object)来访问数据库。

5. 有很多成熟的框架,比如支持MVC的框架:phpMVC,支持类似ASP.net的事件驱动的框架:Prado,支持类似Ruby On Rails的快速开发的框架:Cake等等,足够满足你的应用需求。

6. PHP 5已经有成熟的面向对象体系,能够适应基本的面向对象要求。适合开发大型项目。

7. 有成熟的社区来支持PHP的开发。

8. 目前已经很多大型应用都是使用PHP,比如淘宝网、Yahoo、163、Sina等等大型门户,很多选用PHP来作为他们的开发语言,所以大型门户都能够选用它,我想足够能够你的使用了。

9. 有很多开源的框架或开源的系统可以使用,比如比较知名的开源框架有Zend Framework、CakePHP、CodeIgniter、symfony等,开源论坛有Discuz!、Phpwind等,开源博客 WordPress,开源网店系统如Ecshop、ShopEx等,开源的SNS系统如UCHome、ThinkSNS等。

10.使用成本低  (linux apache mysql php内核)

二、缺点

1.对多线程支持不太好,大多数时候我们只能简单的模拟去实现的。

2.语法不太严谨,比如变量不需要定义就可以使用,在c,java,c++中变量是必须先定义以后才可以使用的。

3.PHP的解释运行机制。这种运行机制使得每个PHP页面被解释执行后,所有的相关资源都会被回收。也就是说,PHP在语言级别上没有办法让某个对象常驻内存。在PHP中,所有的变量都是页面级的,无论是全局变量,还是类的静态成员,都会在页面执行完毕后被清空。以JSP为例,在JSP中,Java Bean的scope有四种有效值:Page、Application、Session、Request,分别对应页面、程序、会话、请求四种生存期。但在PHP中,只有Page一种生存期。

PHP 相关文章推荐
PHP 变量定义和变量替换的方法
Jul 30 PHP
php运行出现Call to undefined function curl_init()的解决方法
Nov 02 PHP
谨慎使用PHP的引用原因分析
Sep 06 PHP
PHP运行环境配置与开发环境的配置(图文教程)
Jun 04 PHP
PHP实现数字补零功能的2个函数介绍
May 12 PHP
PHP中array_map与array_column之间的关系分析
Aug 19 PHP
javascript数组与php数组的地址传递及值传递用法实例
Jan 22 PHP
zen cart实现订单中增加paypal中预留电话的方法
Jul 12 PHP
php生成毫秒时间戳的实例讲解
Sep 22 PHP
PHP常用日期加减计算方法实例小结
Jul 31 PHP
PHP创建XML的方法示例【基于DOMDocument类及SimpleXMLElement类】
Sep 10 PHP
Laravel 模型关联基础教程详解
Sep 17 PHP
使用URL传输SESSION信息
Jul 14 #PHP
利用“多说”制作留言板、评论系统
Jul 14 #PHP
php生成数字字母的验证码图片
Jul 14 #PHP
php算法实例分享
Jul 14 #PHP
php根据生日计算年龄的方法
Jul 13 #PHP
php获取英文姓名首字母的方法
Jul 13 #PHP
php根据日期显示所在星座的方法
Jul 13 #PHP
You might like
php生成静态文件的多种方法分享
2012/07/17 PHP
php图片加中文水印实现代码分享
2012/10/31 PHP
列表内容的选择
2006/06/30 Javascript
input 输入框内的输入事件详细分析
2010/03/17 Javascript
nodejs调用cmd命令实现复制目录
2015/05/04 NodeJs
javascript中setInterval的用法
2015/07/19 Javascript
SublimeText自带格式化代码功能之reindent
2015/12/27 Javascript
Javascript+CSS3实现进度条效果
2016/10/28 Javascript
详解Vue方法与事件
2017/03/09 Javascript
Bootstrap页面标题Page Header的实现方法
2017/03/22 Javascript
vue学习笔记之指令v-text && v-html && v-bind详解
2017/05/12 Javascript
AngularJS实现的生成随机数与猜数字大小功能示例
2017/12/25 Javascript
浅析Vue.js中v-bind v-model的使用和区别
2018/12/04 Javascript
JavaScript函数式编程(Functional Programming)声明式与命令式实例分析
2019/05/21 Javascript
[01:36:57]【09DOTA2第一视角】小骷髅
2014/04/16 DOTA
python函数参数*args**kwargs用法实例
2013/12/04 Python
python生成指定长度的随机数密码
2014/01/23 Python
python使用any判断一个对象是否为空的方法
2014/11/19 Python
Python读大数据txt
2016/03/28 Python
Python日期时间模块datetime详解与Python 日期时间的比较,计算实例代码
2018/09/14 Python
在python中利用opencv简单做图片比对的方法
2019/01/24 Python
Pandas之groupby( )用法笔记小结
2019/07/23 Python
python 进制转换 int、bin、oct、hex的原理
2021/01/13 Python
使用CSS3来匹配横屏竖屏的简单方法
2015/08/04 HTML / CSS
Html5中localStorage存储JSON数据并读取JSON数据的实现方法
2017/02/13 HTML / CSS
软件测试英文面试题
2012/10/14 面试题
Ajax的优点和缺点
2014/11/21 面试题
Java面试题:Java类的Main方法如果是Private将会怎么样
2016/08/18 面试题
初中校园之声广播稿
2014/01/15 职场文书
《手指教学》反思
2014/02/14 职场文书
党政领导班子群众路线对照检查材料
2014/10/26 职场文书
2015迎新晚会活动总结
2015/07/16 职场文书
GoLang中生成UUID唯一标识的实现
2021/05/08 Golang
Ajax实现异步加载数据
2021/11/17 Javascript
Elasticsearch 数据类型及管理
2022/04/19 Python
Python绘制散点图之可视化神器pyecharts
2022/07/07 Python