- 浏览: 246947 次
- 性别:
- 来自: 大连
最新评论
-
di1984HIT:
不错。不错~
JIMI、JAI和ImageIO的一些感想 -
houyi521:
...
给OSGi加入数字签名及认证特性的思考 -
dsjt:
map是映射到直接内存,回收比较复杂。用堆内存缓存:
Byte ...
慎用 MappedByteBuffer! -
faint2010:
PHP这个基础本身是非持久的,你却硬要做持久层,无异于霸王硬上 ...
用PHP做ORM效率那是相当的低啊! -
wuhoufeng:
orm带来开发上的方便 但是增加性能优化上难度 所以要配合缓存 ...
用PHP做ORM效率那是相当的低啊!
也研究了一段时间的PHP,使用过了一堆libraries,之后发现:原来PHP的最佳实践就是“数组编程”啊!
从以下几个角度来看:
1. 基本语法(foreach等、array函数库):对于数组的操作是最简便的,而且还支持literal样式的数组(类似于Java的Map),不用耗费多少时间就可以掌握。
2. 核心引擎(Zend Engine):面向对象的编程开发量比较繁琐,没有Java那么方便。更重要的是,PHP引擎处理对象的效率比较低。
3. 数据库访问(PHP原生):返回出来数组时效率最高,而且还最简单。
4. 模板引擎(Smarty等):使用数组时,对模板制作最方便(直接使用“.”就可以了)。
个人感觉,以后要做PHP项目时,首推的就是面向数组的编程,既快速又高效....
评论
15 楼
showerxpII
2008-09-08
class TableManager { private $tableName,$fields,$conn; public function __construct($con){ $this->fields = array(); $this->conn=$con; } public function __destruct(){ } public function getConn(){ return $this->conn; } public function getTableName(){ return ($this->tableName); } public function setTableName($value){ $this->tableName=$value; } public function getFields(){ return ($this->fields); } public function setFields($value){ $this->fields=$value; } //添加新的数据库记录 public function saveNew() { //一个空的纪录集合 $rs=$this->conn->Execute("SELECT * FROM ".$this->tableName); $insertSQL = $this->conn->GetInsertSQL($rs, $this->fields); $this->conn->Execute($insertSQL); } //修改数据库记录 public function update($fieldName,$fieldValue) { $rs=$this->conn->Execute("SELECT * FROM ".$this->tableName." where ".$fieldName."=".$fieldValue); $updateSQL = $this->conn->GetUpdateSQL($rs, $this->fields); $this->conn->Execute($updateSQL); # 更新资料库中的记录 } public function updateRecords($sqlWhere){ $rs=$this->conn->Execute("SELECT * FROM ".$this->tableName." where ".$sqlWhere); $updateSQL = $this->conn->GetUpdateSQL($rs, $this->fields); $this->conn->Execute($updateSQL); # 更新资料库中的记录 } public function delete(){} } class PicTableManager extends TableManager { private $uploadFiles;//数组,保存图片路径字段. //数组结构:$uploadFiles["uploadFieldName"]=uploadFileObj; //eg,这里的pic是数据库中的字段名称: // $objFile=new UploadFiler($_FILES['pic'],_FileDir); // $uploadFiles['pic']=$objFile; public function __construct($con){ parent::__construct($con); $this->uploadFiles=array(); } public function __destruct(){} public function setUploadFiles($uploadFilesV){ $this->uploadFiles=$uploadFilesV; } public function getUploadFilesV(){ return $this->uploadFilesV; } //上传图片方法 private function uploadFiles() { foreach ($this->uploadFiles as $uploadObj) { $uploadObj->uploadFile(); } } //删除上传的图片,修改过的图片 public function delUploadedFile($fieldName,$fieldValue) { $conn=$this->getConn(); $sqlString="SELECT * FROM ".$this->getTableName()." where ".$fieldName."=".$fieldValue; $rs=$conn->Execute($sqlString); foreach ($this->uploadFiles as $uploadFieldName=>$uploadFileObj) { if (file_exists(_FileDir.$rs->fields[$uploadFieldName])) { unlink(_FileDir.$rs->fields[$uploadFieldName]);//删除文件 } else continue; } } //覆写保存新纪录的方法 public function saveNew() { $this->uploadFiles(); $tempFields=$this->getFields(); //生成用于保存的fields数组 foreach ($this->uploadFiles as $uploadFieldName=>$uploadFileObj){ $tempUploadfile=$uploadFileObj->getUploadFile(); $tempFields[$uploadFieldName]=$tempUploadfile["name"]; // } $this->setFields($tempFields); parent::saveNew(); } //覆写修改纪录的方法 public function update($fieldName,$fieldValue) { $this->delUploadedFile($fieldName,$fieldValue);//删除对应纪录的有关修改过的老图片 $this->uploadFiles(); $tempFields=$this->getFields(); foreach ($this->uploadFiles as $uploadFileTableName=>$uploadFileObj){ if (!$uploadFileObj->getUploadError()) { $fileTemp=$uploadFileObj->getUploadFile(); $tempFields[$uploadFileTableName]=$fileTemp["name"]; } else echo $uploadFileObj["error"]; } $this->setFields($tempFields); parent::update($fieldName,$fieldValue); } public function delete($id) { } }
对我来说,很多情况下已经够用了。
14 楼
yipsilon
2008-09-04
xombat 写道
基于数组编程:),以前隐约有过这种思考,今天看到你的文章产生了共鸣了!
确实我试过mysqli_result的三个函数:
fetch_assoc()
fetch_array()
fetch_row()
assoc()居然占用内存最少,谁速度最快被我忘了..assoc()返回的可是map啊。
确实我试过mysqli_result的三个函数:
fetch_assoc()
fetch_array()
fetch_row()
assoc()居然占用内存最少,谁速度最快被我忘了..assoc()返回的可是map啊。
我估计最快的应该是 fetch_row(),因为返回数组的key就是顺序数字。
主要是呀 fetch_array() 生成的数据是 fetch_assoc() + fetch_row() 合并而成的,所以效率不怎么样,不过它是为简化开发做的。
13 楼
xombat
2008-09-02
基于数组编程:),以前隐约有过这种思考,今天看到你的文章产生了共鸣了!
确实我试过mysqli_result的三个函数:
fetch_assoc()
fetch_array()
fetch_row()
assoc()居然占用内存最少,谁速度最快被我忘了..assoc()返回的可是map啊。
确实我试过mysqli_result的三个函数:
fetch_assoc()
fetch_array()
fetch_row()
assoc()居然占用内存最少,谁速度最快被我忘了..assoc()返回的可是map啊。
12 楼
七月十五
2008-08-09
ctrlming 写道
PHP给我的感觉就是 小巧灵活
此豹之一斑耳
11 楼
七月十五
2008-08-09
任何语言就语法层面来说,各有千秋
编程,光掌握语法是不行的
编程,光掌握语法是不行的
10 楼
ctrlming
2008-03-07
PHP给我的感觉就是 小巧灵活
9 楼
Jackphone
2007-12-25
zwws 写道
一直习惯不了.NET 总觉得MS的东西都好变态.
可是你大多数时间是在使用MS的东西吧
8 楼
zwws
2007-12-23
PHP 的数组很灵活 性能也不错
一直习惯不了.NET 总觉得MS的东西都好变态.
一直习惯不了.NET 总觉得MS的东西都好变态.
7 楼
yipsilon
2007-12-21
计算机语言的“面向”和“基于”是从英文中的“Oriented”和“Based”翻译来的。而这两个词可以有多种翻译,作为程序员,不要在这种无谓的地方钻牛角尖,最好把它用在程序开发上,说不定还会给自己带来很大好处。:)
6 楼
diogin
2007-12-21
什么是“面向”对象?为什么是“面向”?什么又是“基于”对象?这些名词很傻。依我看,不如统一叫作“对象化编程”,与“结构化编程”相对应。
5 楼
Jackphone
2007-12-21
不错,我也有同感
总觉得PHP没有真正的做到面向对象
总觉得PHP没有真正的做到面向对象
4 楼
115300111
2007-12-12
太神奇了!
数组虽好 可不能面对喔~
数组虽好 可不能面对喔~
3 楼
yipsilon
2007-11-27
算不上新词啦。
2 楼
diogin
2007-11-26
呵呵,“面向数组编程”,你得到了精髓 :p
1 楼
flynetcn
2007-11-26
面向数组的编程?
楼主发明的新词?
php的数组是一大特色,它实际上是有序图。
楼主发明的新词?
php的数组是一大特色,它实际上是有序图。
发表评论
-
在64位Ubuntu下安装Flash Media Server 3.5
2010-06-10 08:43 2302众所周知,Flash Media Server 是32位的程序 ... -
安装 ESXi 4 ?请先弄个带缓存的SCSI卡吧。
2010-06-01 17:45 1283最近为安装Oracle买了一个测试服务器,主板内置SCSI芯片 ... -
iPad的宣传广告真是搞笑啊!!!
2010-01-29 00:34 1889不知道他们的中国设计师是怎么想的,QQ这种大部分时间是后台运行 ... -
新版JRE内置新的LAF:Nimbus,太漂亮了!
2010-01-26 18:31 3264从6u10开始内置到JRE中了,可以在UIManager中通过 ... -
Michael Widenius 为什么要拯救MySQL?
2010-01-21 11:22 1835最近,呼吁中国人民签名以拯救MySQL的新闻挺多啊 ... -
PHP会倒掉吗?
2009-11-24 12:39 5443最近有不少文章讨论PHP如何如何不好,如何如何不适应企业应用, ... -
"脑子有Bing" 不知道是夸赞还是贬低...
2009-08-04 00:45 1291个人感觉微软有时候很搞笑,经常搞出比较可爱的广告啊、产品名字啊 ... -
iPhone Development Program 好像不支持国内注册了
2009-07-18 15:17 2668这几天研究iDP的注册流程,申请了好多Apple ID都无法登 ... -
谷歌被地产商山寨了~~
2009-06-29 15:18 948今天出去吃饭,突然看到“谷歌”字样,还以为Google到大连来 ... -
看看我们数据处理部门的杰作吧!
2009-02-22 01:03 1323这套系统叫做 DMP,全称 Data Management P ... -
慎用 MappedByteBuffer!
2008-12-21 03:32 21649<script type="text/ja ... -
传说中的Java动态注释?
2008-10-18 02:01 1770动态注释是一个有用的功能。它可以使用多行的字符串来指定在行中测 ... -
要不我给你猪
2008-10-16 23:31 1002男赶集卖猪,天黑遇雨,二十头猪未卖成,到一农家借宿。 少 ... -
没事做了个3D模型,纯Flash的。
2008-10-16 23:08 1385wsad 是前后左右行走,↑↓←→ 是视角前后左右移动,带碰撞 ... -
Godaddy 网站挂了....
2008-10-14 02:41 1025本来想去管理一下服务器,结果没想到这么大的网站也挂了,还挂了这 ... -
Linkin Park演唱会取消了...
2008-10-08 03:13 1093因小C的背伤取消了,两个字:不爽! 听不到现场原唱,看来只 ... -
JIMI、JAI和ImageIO的一些感想
2008-09-05 03:52 7674最近研究个项目,涉及到多页TIFF分页保存问题。于是就研究呀研 ... -
使用iPhone发文章测试
2008-03-04 23:39 1058本文使用iPhone发表! 使用了iPhone也有一段时间 ... -
已将手机升级到砖头级!
2008-01-31 19:50 1209今儿备用电池终于到了,谢天谢地。此电池电量是2200毫安时,配 ... -
成功滴将iPhone升级到1.1.3版本!
2008-01-26 19:47 1403升级用了10分钟左右,在 Mac OSX 10.5 上搞的,汉 ...
相关推荐
3. PHP最佳实践 - 代码规范:遵循PSR(PHP Standard Recommendations)标准,比如PSR-1、PSR-2等,以提高代码的可读性和一致性。 - 安全性:注意防范常见的Web安全问题,例如SQL注入、跨站脚本攻击(XSS)、跨站...
《PHP+核心技术与最佳实践》是一本深入探讨PHP编程语言核心技术和最佳实践的书籍。它旨在帮助开发者提升在PHP领域的专业技能,理解并掌握PHP的精髓,从而在实际开发中实现更高效、更稳定的应用程序。 PHP...
《PHP核心技术与最佳实践》是一本深入探讨PHP编程语言核心概念和技术的书籍,旨在帮助开发者提升PHP编程技能并掌握最佳实践。在这个压缩包中,"小王.png"可能是一个作者或示例代码作者的头像,而...
12. **安全最佳实践**:防范SQL注入、XSS攻击、CSRF等常见Web安全问题的方法,以及如何确保代码的安全性。 13. **性能优化**:讲解如何通过缓存、代码优化、配置调整等方式提升PHP应用的性能。 14. **调试与测试**...
【PHP编程实例100例】是一份集合了100个PHP编程示例的资源,旨在帮助初学者和有经验的开发者加深对PHP语言的...通过这些实例,不仅可以学习到具体的代码实现,还能理解背后的原理和最佳实践,从而提升解决问题的能力。
对于Web开发中的安全性问题,如防止SQL注入、XSS攻击等,书中也给出了预防措施和最佳实践。 另外,《PHP5权威编程》还深入讲解了PHP5与Web服务API的集成,包括SOAP和XML-RPC,以及如何创建RESTful Web服务。这些...
在PHP编程中,判断一个数组是否为另一个数组的子集是一项常见的任务,这涉及到数组的比较和搜索操作。本文将详细介绍三种不同的PHP方法来实现这一功能,并解释它们的工作原理。 ### 1. 使用 `foreach` 循环和 `in_...
在PHP编程语言中,处理数组是一项常见的任务。数组是一种数据结构,可以存储多个值,并通过唯一的键来...通过阅读"PHP 根据数组值取得键值.pdf"这份文档,你将能深入理解这一主题,并掌握更多相关的技巧和最佳实践。
PHP提供了多种内置函数和最佳实践来增强安全性,例如使用预编译语句防止SQL注入,过滤和转义用户输入以防止XSS攻击。 最后,本教程可能还会涵盖PHP的其他高级主题,如错误和异常处理、会话管理、cookies、模板引擎...
13. **PHP框架应用**:许多PHP经典案例可能涉及到知名框架的使用,如Laravel、Symfony、CodeIgniter等,这将帮助你了解框架的工作原理和最佳实践。 14. **PHP与前端技术集成**:例如,JavaScript、jQuery、Ajax与...
**八、PHP的最佳实践** 1. **代码规范**:遵循一定的编码标准,如PSR(PHP Framework Interop Group)的标准。 2. **错误处理**:使用`try...catch`捕获异常,使用`error_reporting()`和`ini_set()`设置错误报告级别...
本书全面覆盖了PHP5的核心概念、语法特性以及实践应用,旨在帮助读者掌握PHP5的高级技术和最佳实践。 在PHP5中,最重要的改进之一是面向对象编程(OOP)的支持得到了显著增强。书中详细介绍了类与对象的概念,包括...
通过详细研究这些源码,开发者不仅可以学习到PHP的基本用法,还能了解到实际项目中的最佳实践,提升自己的PHP开发能力。同时,这也是一份宝贵的参考资料,可以在遇到问题时作为参考,或者在构建新项目时获取灵感。
你还将了解到PHP的最佳实践和代码优化技巧,以提高程序性能和可维护性。 通过这个《PHP编程教程》,你不仅可以系统地学习PHP的基础知识,还能逐步建立实际项目开发的经验。无论你是完全的编程新手,还是希望转行到...
10. **PHP框架和最佳实践**:简要介绍流行的PHP框架(如Laravel、Symfony),以及遵循的最佳编码和项目管理实践。 书中可能还会包含实际案例分析和项目实战,让理论知识与实际应用相结合,提升读者的编程技能。此外...
4. **最佳实践:`array_diff`与`array_merge`结合**: 使用`array_diff`直接过滤掉数组中与目标值匹配的元素,然后用`array_merge`合并,这样可以避免使用`unset`和重新分配索引的开销。 ```php $arr = array_...
12. **PHP最佳实践**:提供编写高效、可维护PHP代码的技巧和建议,包括命名规范、代码组织、调试和性能优化。 通过学习这本书,读者将建立起坚实的PHP编程基础,并具备独立完成简单Web项目的能力。随着经验的积累,...
"PHP编程词典"是一款专为PHP学习者和开发者设计的查询软件,它集合了PHP的各类概念、函数、语法结构和最佳实践,旨在帮助用户快速查找和理解PHP编程中的关键信息。 ### PHP基础 PHP是一种服务器端的脚本语言,其...
**设计模式**是面向对象编程中的一套通用解决方案,它们是经过验证的最佳实践,可以解决常见的设计问题。PHP 5支持多种设计模式,包括: 1. **单例模式**:确保一个类只有一个实例,并提供一个全局访问点。这在需要...
4. PHP The Right Way:这是一本推荐最佳实践的PHP指南,帮助开发者编写高质量、安全的代码。 四、PHP编程实践 1. Web应用开发:PHP常用于开发动态网站,如内容管理系统(CMS)、电子商务平台等。 2. 数据库操作:...