编写可移植的PHP代码
1. 保持配置集中放置。
作为一个通用的准则,建议将大多数信息保存在一个位置(可能是一个文件中),这样在需要修改信息时,就能在同一个位置进行所有必要的修改。
2. 编写可重用的代码;
如果刚刚结束了其他站点或应用程序的开发工作,那么应该意识到您已经具有了县城的、可以很容易应用于新项目的代码。最好的方法是利用创建可重用组建或功能片的观念来编写面向对象的代码。
权衡代码重用的可能性时,有许多重要问题需要考虑:
(1)项目的需求出现变化时会发生什么?
(2)向代码中添加新功能是否容易?
(3)一段时间直呼,是否还能理解这些代码?
(4)代码是否易于与其他应用程序继承?
(5)所做的假设是否能够应用于其他站点上的工作?
作为一位有经验的PHP开发人员,您有一个主要责任:应不断地了解软件开发各种更为深奥的知识,例如,设计模式、企业应用架构,作为一种提高开发技巧的方法,更重要的,也是一种节约时间的方法。您的知识面越广,开始下一个大项目时,失败的风险就越小。
3. 始终使用完整的PHP标记;
PHP支持用多种风格的标记来标识代码部分,包括短标记(<? ?>)和ASP风格标记(<% %>)。标记风格可以通过php.ini中的short_open_tag和asp_tag控制。但是要注意,尽管可以切换这些配置,但是其他服务器管理员可能没有进行修改,这会造成问题。PHP与XML卫兵打不过混合在一起时,短标记风格会造成问题。
4. 始终使用超级全局变量,不要使用register_globals;
确认php.ini文件中包含以下代码:register_globals = off;这可强制您听过特殊的预定义超级全局变量(例如,$_GET['username'])访问输入的数据,确保不会与脚本中创建的变量冲突。
6. 始终检查magic quotes.
magic quotes是PHP提供的一种功能,帮助PHP初学者防止开发的站点中出现安全漏洞。magic quotes功能可以在脚本能够访问进入的URL查询字符串、表单张贴文章和cookie数据之前,自动向这些值中添加转义字符(反斜杠),表示字符串中应该包括引号,而不是表示字符串结束的引号,如果将数据直接插入到数据库中,并且打开了magic quotes功能,那么就不会存在恶意用户可能篡改数据库的风险。
不过,我更倾向于关闭magic quotes,而由自己处理SQL语句的转义数据。
编写可移植的PHP代码的更多相关文章
- 如何提升我的HTML&CSS技术,编写有结构的代码
前言 之前写了四篇HTML和CSS的知识点,也相当于是一个知识点汇总.有需要的可以收藏,平时开发过程中应该会遇到这些点,到时候再查看这些博客可能更容易理解.从这篇开始更多的介绍开发过程经常让人头痛的前 ...
- 深入理解JavaScript系列(1):编写高质量JavaScript代码的基本要点
深入理解JavaScript系列(1):编写高质量JavaScript代码的基本要点 2011-12-28 23:00 by 汤姆大叔, 139489 阅读, 119 评论, 收藏, 编辑 才华横溢的 ...
- 编写高质量JS代码的68个有效方法(八)
[20141227]编写高质量JS代码的68个有效方法(八) *:first-child { margin-top: 0 !important; } body>*:last-child { ma ...
- 编写高质量JS代码的68个有效方法(七)
[20141220]编写高质量JS代码的68个有效方法(七) *:first-child { margin-top: 0 !important; } body>*:last-child { ma ...
- 编写高质量JS代码的68个有效方法(六)
[20141213]编写高质量JS代码的68个有效方法(六) *:first-child { margin-top: 0 !important; } body>*:last-child { ma ...
- 编写高质量JS代码的68个有效方法(四)
[20141129]编写高质量JS代码的68个有效方法(四) *:first-child { margin-top: 0 !important; } body>*:last-child { ma ...
- 编写高质量JS代码的68个有效方法(三)
[20141030]编写高质量JS代码的68个有效方法(三) *:first-child { margin-top: 0 !important; } body>*:last-child { ma ...
- 编写高质量JS代码的68个有效方法(二)
[20141011]编写高质量JS代码的68个有效方法(二) *:first-child { margin-top: 0 !important; } body>*:last-child { ma ...
- JavaScript手札:《编写高质量JS代码的68个有效方法》(一)(1~5)
编写高质量JS代码的68个有效方法(一) *:first-child { margin-top: 0 !important; } body>*:last-child { margin-botto ...
随机推荐
- 【BZOJ2809】[APIO2012] dispatching(左偏树例题)
点此看题面 大致题意: 有\(N\)名忍者,每名忍者有三个属性:上司\(B_i\),薪水\(C_i\)和领导力\(L_i\).你要选择一个忍者作为管理者,然后在所有被他管理的忍者中选择若干名忍者,使薪 ...
- 2018.6.20 Java考试试题总结(Java语言基础与面向对象编程)最新版
Java考试试题总结 一.单选题(每题1分 * 50 = 50分) 1.java程序的执行过程中用到一套JDK工具,其中javac.exe指( B ) A.java语言解释器 B.java字节码编译器 ...
- wing ide 注释
ctrl-.是批量注视 ctrl->向前缩进 ctrl-<向后缩进
- C#的接口基础教程之二 定义接口
定义接口 从技术上讲,接口是一组包含了函数型方法的数据结构.通过这组数据结构,客户代码可以调用组件对象的功能. 定义接口的一般形式为: [attributes] [modifiers] interfa ...
- vi中系统剪切板的设置
在vi中,如果编译时没有clipboard属性,将vi中的内容拷贝到系统剪切板有些麻烦.可以用如下的方法,查看vi 是否支持系统剪切板的功能: xt@xt-ThinkPad-X220:~$ vi -- ...
- XPATH如何选择,t选取,包含某一属性的节点, 不包含某一个属性的节点?
https://blog.csdn.net/manmanpa/article/details/56282741 //tbody/tr[@class] 包含 //tbody/tr[not(@class) ...
- java抓取12306火车余票信息
最近在弄一个微信的公众帐号,涉及到火车票查询,之前用的网上找到的一个接口,但只能查到火车时刻表,12306又没有提供专门的查票的接口.今天突然想起自己直接去12306上查询,抓取查询返回的数据包,这样 ...
- mongodb添加管理员密码
use admin db.createUser( { user: "adminUser", pwd: "adminPass", roles: [ { role: ...
- vue插件库
各种vue插件,各种有,总有一款适合你! github地址:https://github.com/opendigg/awesome-github-vue
- python编写定时执行脚本
前几天在抓博客园文章,打算每天抓10条最新的,所以就在脚本中加了定时让它在每天凌晨四点中时执行,但是昨天发现,报错了: 显示是远程主机强制关闭了一个链接, 原因是:mysql数据库默认当连续8小时不对 ...