1,使用绝对路径,方便代码的迁移:
define( ROOT , pathinfo(__FILE__, PATHINFO_DIRNAME)); require_once(ROOT . ../../lib/some_html' target='_blank'>class.php * PATHINFO_DIRNAME 只返回 dirname * PATHINFO_BASENAME 只返回 basename * PATHINFO_EXTENSION 只返回 extension
2,不要直接使用 require, include, includeonce, requiredonce
$path = ROOT . /lib/ . $class_name . .php require_once( $path );* if(file_exists($path)){ require_once( $path ); }
3,为应用保留调试代码
在开发环境中, 我们打印数据库查询语句, 转存有问题的变量值, 而一旦问题解决, 我们注释或删除它们. 然而更好的做法是保留调试代码。在开发环境中, 你可以:* define( ENVIRONMENT , development if(! $db- query( $query ) if(ENVIRONMENT == development ) echo $query failed else { echo Database error. Please contact administrator * 在服务器中, 你可以:define( ENVIRONMENT , production if(! $db- query( $query ) if(ENVIRONMENT == development ) echo $query failed else echo Database error. Please contact administrator }
4,使用可跨平台的函数执行命令
system, exec, passthru, shell_exec 这4个函数可用于执行系统命令 * Method to execute a command in the terminal * Uses : * 1. system * 2. passthru * 3. exec * 4. shell_execfunction terminal($command)//systemif (function_exists( system )) { ob_start(); // 打开缓冲区 system($command, $return_var); $output = ob_get_contents(); ob_end_clean(); // 清空(擦除)缓冲区并关闭输出缓冲} //passthruelse if (function_exists( passthru )) { ob_start(); passthru($command, $return_var); $output = ob_get_contents(); ob_end_clean();} //execelse if (function_exists( exec )) { exec($command, $output, $return_var); $output = implode( /n , $output);} //shell_execelse if (function_exists( shell_exec )) { $output = shell_exec($command);} else { $output = Command execution not possible on this system $return_var = 1;return array( output = $output, status = $return_var);terminal( ls
5,灵活编写函数(判断是否是数组来编写逻辑)
function add_to_cart($item_id, $qty) if (!is_array($item_id)) { $_SESSION[ cart ][ item_id ] = $qty; } else { foreach ($item_id as $i_id = $qty) { $_SESSION[ cart ][ i_id ] = $qty;add_to_cart( IPHONE3 , 2);add_to_cart(array( IPHONE3 = 2, IPAD = 5));
6,有意忽略php关闭标签
like: ?php ......................
7, 在某地方收集所有输入, 一次输出给浏览器 重点
你可以存储在函数的局部变量中, 也可以使用ob_start和ob_end_clean
8,发送正确的mime类型头信息, 如果输出非html内容的话. 重点
$xml = ?xml version= 1.0 encoding= utf-8 standalone= yes ? $xml = response code 0 /code /response //Send xml dataheader( content-type: text/xml //注意header头部echo $xml;
9,为mysql连接设置正确的字符编码
mysqli_set_charset(UTF8);
10,使用 htmlentities 设置正确的编码选项 重点
php5.4前, 字符的默认编码是ISO-8859-1, 不能直接输出如à a等.$value = htmlentities($this- value , ENT_QUOTES , CHARSET);php5.4后, 默认编码为UTF-8, 这將解决很多问题. 但如果你的应用是多语言的, 仍要留意编码问题.
11,不要在应用中使用gzip压缩输出, 让apache处理 重点
使用apache的mod_gzip/mod_deflate 模块压缩内容. 开启就行了。用途:压缩和解压缩swf文件的代码等,PHP的zip扩展也行
12,使用json_encode输出动态javascript内容 而不是 echo
13,写文件前, 检查目录写权限
linux系统is_readable($file_path)is_writable($file_path)
14,更改应用创建的文件权限
chmod( /somedir/somefile , 0755);
15,不要依赖submit按钮值来检查表单提交行为
if( $_SERVER[ REQUEST_METHOD ] == POST and isset($_POST[ submit ]) ) //Save the things}
16,为函数内总具有相同值的变量定义成静态变量
static $sync_delay = null;
17,不要直接使用 $_SESSION 变量
不同的应用之前加上 不同的 前缀
18,將工具函数封装到类中(同个类维护多个版本, 而不导致冲突)
class Utility public static function utility_a() public static function utility_b() public static function utility_c() $a = Utility::utility_a(); $b = Utility::utility_b();
19,Bunch of silly tips
使用echo取代print 使用str_replace取代preg_replace, 除非你绝对需要 不要使用 short tag 简单字符串用单引号取代双引号 head重定向后记得使用exit 不要在循环中调用函数 isset比strlen快 始中如一的格式化代码 不要删除循环或者if-else的括号郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。
新闻热点
疑难解答