PHP开发大型项目的一点经验

 更新时间:2016年11月25日 15:19  点击:2227
一、变量
最好是把所有的变量存储在一个数组中,这样在程序的开发中可以带来很多的方便,特别是当程序很大的时候。变量的命名就当适合自己的习惯,不管是用拼音还是英语,至少应当有一定的意义,以便适合记忆。变量的命名尽量规范化,不要与PHP中的关键字相冲突。
二、函数
PHP自带了很多函数,这给我们程序的编写带来了很多的方便。当然,在大型程序中我们往往自己要定义许多个函数,几十甚至上百个。当然在使用了类的程序中就不叫函数了,就应该叫方法,这里暂且不谈类的使用方法。函数多了,难免就会搞混了。有什么方法可以解决这个问题呢?可以参照上面变量的使用方法一样,同样的,我们也可以把自己定义的函数名全都放在一个数组中。这样我们在使用的过程中可以直接在数组随时检查函数是否有无重复的定义。如果发现重复的现象,马上变可以改过来。提高了程序编写的速度。函数的使用还有一点要注意的是全局变量,虽然这是一个小问题,但却不容忽视,要不然当某个变量千呼万呼出不来的时候,呵呵。这时看看该变量是否在该函数中已经申明成了全局变量。
三、程序的注释
程序的注释是很重要的,不管是C还是JAVA,程序的注释往往可以体现出程序员的良好编程风格。无论是对于它人还是自己对大有好处,当然我们这里说的是大型项目的开发,团体合作精神是很重要的。当你的程序写出来别人都很难看懂那还怎么谈团体合作精神啊。当然如果这个大型项目是你一个人开发的那就另当别论了,或者是你时间紧迫,来不及写注释。不过一般来说这种情况是很少的。除非真的是非常时刻。一个优秀的程序员绝对会为他写的每个程序加注释,哪怕是给自己看的。
四、采用何种文本编辑软件写源程序
这其实也没一定的规定,只要自己喜欢就行了。我比较喜欢PHPEDIT,也许是用惯了,现在感觉一离开PHPEDIT写PHP就没感觉,初学PHP的时候用NOTEPAD写,因为程序比较简单。所以用NOTEPAD应付下就行了,对于有几百行的程序来讲,用NOTEPAD显然是不合适的。用PHPEDIT工作效率会提高几倍,哪怕你从来没用过。
五、数据库的设计
数据库的设计在开发大型项目中是很重要的一点,关系到整个项目开发的成败。具体也就不多说了。大家可以在自己的实践中积累经验,慢慢去体会。总之在数据库的设计中最好应该一开始就应该确定下来。虽然可以在开发的过程中去改变已经设计好的数据库结构,但这对于整个项目的开发效率来讲将大打折扣,有谁会愿意时不时的去改数据库的结构呢?
旅嬲飧鲳ost我是在2001年12月初写的,希望对大家学习php有所帮助
估计第一个问题大多数是如何配置的问题了
建议一下几个软件
服务器apache,数据库mysql,当然还得有php
网上都有下载的,稍微搜索一下就可以了
1,apache配置说明,可以在本版的看到
里面有一片文章,讲的就是98下如何配置的
我每次配置几乎都看那篇文章
2,mysql的配置,现在是不用怎么配置的了,直接执行安装程序
就可以了
3,php的配置和apache的结合
如果你的e文好的话,直接看php解压包中的说明就可以
否则,就看上面推荐的那个文章
工具问题
现在的php编程工具不少,大同小异
对于新手,推荐用PHPED
函数提示,变量提示,语法加亮,自动缩进,
而且还可以调试,但是注意,如果你的apache是配置成
php modul方式的话,最好phped不要和它共用一个php.exe
其它的编辑器还有
editplus,很多人推荐的,我也最喜欢使用它
语法加亮,自动缩进,它的自动缩进功能是最强的
如果你写的php程序中同时有很多html代码的话,那么editplus将
是最好的选择,它可以很方便的插入常见的html代码,可以自己定义快捷键
ultraedit,这也是一个不少人使用的编辑器
语法加亮,自动缩进
还有它有10个粘贴板可以使用,及其方便
另外还可以打开2进制文件,但是和编写php没有关系
对于这个我用的不多,但是很多人都说它很好,也许你们可以自己去发现
turbo php,一个国产的php编辑器
支持语法加亮,函数提示,它的函数提示很是详细
一个比较有希望的编辑器,但是目前看来还有待努力
接下来褪茄 所谓的“PHP”就是开放源码的Web应用开发/运行环境,日前《日经Open System》记者就今后PHP开发中心的发展计划等问题采访了该中心成员Zeev Suraski。Zeev Suraski表示,新版PHP中将导入try、catch等语句,从而更接近Java,以便更容易地进行大型系统的开发。(采访者:高桥 信赖)
--请您谈一下决定开发PHP的起因。
  Rasmus Lerdorf于1995年首先公布了PHP。1997年我在制作以色列大学网页及网上商店站点时,使用了当时名为PHP/FI(Personal Home Page/Form Interpreter)的工具,这时才开始接触到PHP。在使用的过程中,发现了一个很大的bug。由于源码是公开的,所以我对bug产生的原因进行了调查并做了修改,在调查中发现还有很大的改进余地。于是就和当时共同做项目的Andi Gutmans一起对PHP/FI脚本执行引擎进行了修改。修改后的执行引擎交给Lerdorf后,就成了新版PHP3.0的正式执行引擎。
  通过改进脚本执行引擎,我们开发出了速度更高的Zend Engine。Zend这个名字是Zeev与Andi的组合。嵌入了Zend Engine的PHP就是目前的版本PHP4。原来的程序是边读入边解释来执行,后来改成了每个执行周期解释一次 ,因此执行100个周期就要进行100次同样的解释处理。而Zend Engine则是一开始就对整个文件的脚本进行解释 ,然后再开始执行。由于大幅削减了解释过程,所以执行速度得以大幅提高。
  PHP4在发表后2个月内就被下载了26万5000次。据美国调查公司Netcraft统计,目前PHP至少被安装在600万个域名服务器上。
  我想PHP受到人们欢迎的最主要原因就是简单实用。曾有人在给我的邮件中表示:“尽管没有编程经验,但我使用PHP仅用3个小时就写出了简单的程序”。使用Java就达不到这种程度。此外,PHP是针对WWW开发的,因此,还可以方便地处理Cookie与表单。
  PHP是免费的,今后仍将继续免费发布,但考虑到商业成本与支持产品的要求,于1999年设立了以色列Zend,并开发出高速PHP软件及综合开发工具进行销售。
--预定2002年底发布的新版PHP5中,准备扩展哪些功能?
  将进一步改进面向对象功能,使大型系统的开发更加容易。尽管PHP已经具有类与子类等,但PHP5会更接近Java。将引入了try、catch等Java具有的特殊处理语句结构。
  在PHP4中,函数作为变量使用,即使给出一个对象也不会发生变化。PHP可以标准赋值,对象也可以赋值,所以函数值并非对象本身,而是一个拷贝过来的值。当函数需要变更为对象数值时,就要在作为变量的对象前加上“&”符号来专门提示。在Java中不需要这样的提示,而PHP5则采用的是与Java相同的模式。
一份gb2312.txt(184799字节)确实显得太大了点,而且还要经unicode转换。
这份对照表为51965字节,要小的多了。
对于无法使用iconv函数库的场合还是很实用的。
<?php
//对照表的使用
$filename = "gb2utf8.txt";
$fp = fopen($filename,"r");
while(! feof($fp)) {
list($gb,$utf8) = fgetcsv($fp,10);
$charset[$gb] = $utf8;
}
fclose($fp);
//以上读取对照表到数组备用
/** gb2312到utf-8 **/
function gb2utf8($text, &$charset) {
//提取文本中的成分,汉字为一个元素,连续的非汉字为一个元素
preg_match_all("/(?:[x80-xff].)|[x01-x7f]+/",$text,$tmp);
$tmp = $tmp[0];
//分离出汉字
$ar = array_intersect($tmp, array_keys($charset));
//替换汉字编码
foreach($ar as $k=>$v)
$tmp[$k] = $charset[$v];
//返回换码后的串
return join(',$tmp);
}
/** utf-8到gb2312 **/
function utf82gb($text, &$charset) {
$p = "/[xf0-xf7][x80-xbf]{3}|[xe0-xef][x80-xbf]{2}|[xc2-xdf][x80-xbf]|[x01-x7f]+/";
preg_match_all($p,$text,$r);
$utf8 = array_flip($charset);
foreach($r[0] as $k=>$v)
if(isset($utf8[$v]))
$r[0][$k] = $utf8[$v];
return join(',$r[0]);
}
//测试
$s = gb2utf8('这是对照表的测试', $charset);
echo utf82gb($s, $charset);
?>

PEAR作为PHP中规范化和功能强大的武库,一直以来很受关注,但是一直没有在实用领域得到重视。究其原因,有文档的不完整,学习资料不充分,代码体系比较复杂,还有就是开发者支持力度不足。
不过早晚这个武库都会被给以足够的重视。如果你现在能够开始学习,也许可以占得一定的先机。
PEAR使用中有一个支持问题。很多服务器可能在编译时使用了disable pear, 这样PEAR就没有被支持。因为其安装需要有权限修改php.ini,所以对不支持的主机,用户可能会觉得无能为力。
还有一种情况,就是主机服务器提供PEAR,并且你都可以在phpinfo也中看到PEAR包含,但是由于主机运行于安全模式(safe mode),这样由于PEAR的拥有者不是你,你还是无法使用。
这里提供一个方法,就是你可以在你的共享主机中自己安装PEAR。
按照PEAR文档的要求,你的PHP在4.04以上版本就可以使用,但是有些模块需要4.05以上,实际上意味着最低要求还是4.05版本。当然这不是问题,因为如果现在你的主机还是在4.06你就应该考虑换主机了。
PEAR本身版本的选择诗歌需要考虑的问题。你可能会注意到,所有的PHP发布的源程序包中都包含PEAR,但是实际上最新的PRE版中的PEAR根本不完整。所以我的建议是下载4.23的发行包,解压缩后将pear目录的内容全部上载到你的主目录下,目录名保持为pear。
如果你有足够耐性,你可以下载最新的4.30pre2版,然后使用diff工具进行比对(我是指windows用户而言。),将有新变化的文件直接替换旧的文件即可。
如果你不厌其烦的话,你可以到 http://cvs.php.net 中的pear目录中去下载各个文件的最新版本。
使用PEAR:
在你的程序头部加入
ini_set("include_path", “/absolute/path/to/pear”);
这样你将include_path直接改为你的pear目录。
以上的设置有一个缺点,就是如果你本来还有别的包含目录,就会被取消。所以你需要考虑其他的已有的包含路径。
在php手册中的用户注释中有人建议使用:
ini_set("include_path",ini_get("include_path").": /path/to/pear");
这样的方式。
我不能确信,这样对你也许可以。
但是至少我的服务器不支持,这样会有问题。
对我只能使用:
$oldpath = ini_get("include_path");
ini_set("include_path","/path/to/pear:".$oldpath);
仔细看一下两者的差距,就是pear路径是放在开始还是最后的问题。(其中的冒号是路径的分隔符号)。
我想你可以需要测试两种情况,看看那个能够使用。


[!--infotagslink--]

相关文章

  • 源码分析系列之json_encode()如何转化一个对象

    这篇文章主要介绍了源码分析系列之json_encode()如何转化一个对象,对json_encode()感兴趣的同学,可以参考下...2021-04-22
  • php中去除文字内容中所有html代码

    PHP去除html、css样式、js格式的方法很多,但发现,它们基本都有一个弊端:空格往往清除不了 经过不断的研究,最终找到了一个理想的去除html包括空格css样式、js 的PHP函数。...2013-08-02
  • index.php怎么打开?如何打开index.php?

    index.php怎么打开?初学者可能不知道如何打开index.php,不会的同学可以参考一下本篇教程 打开编辑:右键->打开方式->经文本方式打开打开运行:首先你要有个支持运行PH...2017-07-06
  • vscode搭建STM32开发环境的详细过程

    这篇文章主要介绍了vscode搭建STM32开发环境的详细过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-05-02
  • PHP中func_get_args(),func_get_arg(),func_num_args()的区别

    复制代码 代码如下:<?php function jb51(){ print_r(func_get_args()); echo "<br>"; echo func_get_arg(1); echo "<br>"; echo func_num_args(); } jb51("www","j...2013-10-04
  • PHP编程 SSO详细介绍及简单实例

    这篇文章主要介绍了PHP编程 SSO详细介绍及简单实例的相关资料,这里介绍了三种模式跨子域单点登陆、完全跨单点域登陆、站群共享身份认证,需要的朋友可以参考下...2017-01-25
  • PHP实现创建以太坊钱包转账等功能

    这篇文章主要介绍了PHP实现创建以太坊钱包转账等功能,对以太坊感兴趣的同学,可以参考下...2021-04-20
  • 利用Node.js获取项目根目录的小技巧

    这篇文章介绍的是一个小技巧来获取node.js项目根目录,这个技巧非常实用。有需要的朋友们可以参考借鉴,下面来一起看看吧。...2016-10-02
  • 安卓开发之Intent传递Object与List教程

    下面我们一起来看一篇关于 安卓开发之Intent传递Object与List的例子,希望这个例子能够为各位同学带来帮助。 Intent 不仅可以传单个的值,也可以传对象与数据集合...2016-09-20
  • php微信公众账号开发之五个坑(二)

    这篇文章主要为大家详细介绍了php微信公众账号开发之五个坑,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2016-10-02
  • 微信开发生成带参数的二维码的讲解

    在微信公众号平台开发者那里,在“账号管理”那里,有一项功能是“生成带参数的二维码”,通过这儿生成的二维码,只要通过微信扫一扫之后,会把事件自动推送到微...2016-05-19
  • ThinkPHP使用心得分享-ThinkPHP + Ajax 实现2级联动下拉菜单

    首先是数据库的设计。分类表叫cate.我做的是分类数据的二级联动,数据需要的字段有:id,name(中文名),pid(父id). 父id的设置: 若数据没有上一级,则父id为0,若有上级,则父id为上一级的id。数据库有内容后,就可以开始写代码,进...2014-05-31
  • 如何设计一个安全的API接口详解

    在日常开发中,总会接触到各种接口,前后端数据传输接口,第三方业务平台接口,下面这篇文章主要给大家介绍了关于如何设计一个安全的API接口的相关资料,需要的朋友可以参考下...2021-08-12
  • PHP如何通过date() 函数格式化显示时间

    这篇文章主要介绍了PHP如何通过date() 函数格式化显示时间,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-11-13
  • PHP+jQuery+Ajax实现多图片上传效果

    今天我给大家分享的是在不刷新页面的前提下,使用PHP+jQuery+Ajax实现多图片上传的效果。用户只需要点击选择要上传的图片,然后图片自动上传到服务器上并展示在页面上。...2015-03-15
  • Vue项目中如何运用vuex的实战记录

    如果说是JQuery是手工作坊,那么Vue.js就像是一座工厂,虽然Vue.js做的任何事情JQuery都可以做,但无论是代码量还是流程规范性都是前者较优,下面这篇文章主要给大家介绍了关于Vue项目中如何运用vuex的相关资料,需要的朋友可以参考下...2021-09-29
  • react+ts实现简单jira项目的最佳实践记录

    这篇文章主要介绍了react+ts实现简单jira项目,本文通过图文实例相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-07-30
  • 基于Pycharm加载多个项目过程图解

    这篇文章主要介绍了基于Pycharm加载多个项目过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-04-22
  • golang与php实现计算两个经纬度之间距离的方法

    这篇文章主要介绍了golang与php实现计算两个经纬度之间距离的方法,结合实例形式对比分析了Go语言与php进行经纬度计算的相关数学运算技巧,需要的朋友可以参考下...2016-07-29
  • intellij idea如何将web项目打成war包的实现

    这篇文章主要介绍了intellij idea如何将web项目打成war包的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-07-04