/project'';
$file_path = $dir . "/content.txt";
if(is_writable($dir))
{
file_put_contents($file_path , $contents);
}
else
{
die("Directory $dir is not writable, or does not exist. Please check");
}
这么做后, 你会得到一个文件在何处写及为什么失败的明确信息.
14. 更改应用创建的文件权限 在linux环境中, 权限问题可能会浪费你很多时间. 从今往后, 无论何时, 当你创建一些文件后, 确保使用chmod设置正确权限. 否则的话, 可能文件先是由"php"用户创建, 但你用其它的用户登录工作, 系统將会拒绝访问或打开文件, 你不得不奋力获取root权限, 更改文件的权限等等.
// Read and write for owner, read for everybody else
chmod("/somedir/somefile", 0644);
// Everything for owner, read and execute for others
chmod("/somedir/somefile", 0755);
15. 不要依赖submit按钮值来检查表单提交行为 if(
很让人受教的 提高php代码质量36计_网学
浏览:
POST[''submit''] == ''Save'')
{
//Save the things
}
上面大多数情况正确, 除了应用是多语言的. ''Save'' 可能代表其它含义. 你怎么区分它们呢. 因此, 不要依赖于submit按钮的值.
if(
很让人受教的 提高php代码质量36计_网学
浏览:
SERVER[''REQUEST_METHOD''] == ''POST'' and isset(
很让人受教的 提高php代码质量36计_网学
浏览:
POST[''submit'']) )
{
//Save the things
}
现在你从submit按钮值中解脱出来了.
16. 为函数内总具有相同值的变量定义成静态变量 //Delay for some time
function delay()
{
$sync_delay = get_option(''sync_delay'');
echo "<br />Delaying for $sync_delay seconds...";
sleep($sync_delay);
echo "Done <br />";
}
用静态变量取代:
//Delay for some time
function delay()
{
static $sync_delay = null;
if($sync_delay == null)
{
$sync_delay = get_option(''sync_delay'');
}
echo "<br />Delaying for $sync_delay seconds...";
sleep($sync_delay);
echo "Done <br />";
}
17. 不要直接使用
很让人受教的 提高php代码质量36计_网学
浏览:
SESSION 变量 某些简单例子:
很让人受教的 提高php代码质量36计_网学
浏览:
SESSION[''username''] = $username;
$username =
很让人受教的 提高php代码质量36计_网学
浏览:
SESSION[''username''];
这会导致某些问题. 如果在同个域名中运行了多个应用, session 变量可能会冲突. 两个不同的应用可能使用同一个session key. 例如, 一个前端门户, 和一个后台管理系统使用同一域名.
从现在开始, 使用应用相关的key和一个包装函数:
define(''APP_ID'' , ''abc_corp_ecommerce'');
//Function to get a session variable
function session_get($key)
{
$k = APP_ID . ''.'' . $key;
if(isset(
很让人受教的 提高php代码质量36计_网学
浏览:
SESSION[$k]))
{
return
很让人受教的 提高php代码质量36计_网学
浏览:
SESSION[$k];
}
return false;
}
//Function set the session variable
function session_set($key , $value)
{
$k = APP_ID . ''.'' . $key;
很让人受教的 提高php代码质量36计_网学
浏览:
SESSION[$k] = $value;
return true;
}
18. 將工具函数封装到类中 假如你在某文件中定义了很多工具函数:
function utility_a()
{
//This function does a utility thing like string processing
}
function utility_b()
{
//This function does nother utility thing like database processing
}
function utility_c()
{
//This function is ...
}
这些函数的使用分散到应用各处. 你可能想將他们封装到某个类中:
class Utility
{
public static function utility_a()
{
}
public static function utility_b()
{
}
public static function utility_c()
{
}
}
//and call them as
$a = Utility::utility_a();
$b = Utility::utility_b();
显而易见的好处是, 如果php内建有同名的函数, 这样可以避免冲突.
另一种看法是, 你可以在同个应用中为同个类维护多个版本, 而不导致冲突. 这是封装的基本好处, 无它.
19. Bunch of silly tips >>使用echo取代print
>>使用st