PHP編碼技巧

習(xí)慣的力量

  1. 養(yǎng)成讀書的習(xí)慣

編碼習(xí)慣

  1. 命名非常重要
  2. 適當(dāng)?shù)氖褂米⑨?/li>
  3. 使用一個變量,要初始化
  4. 優(yōu)先使用單引號
  5. 用“1==$a” 替換 “$a==1”
  6. 防御式編程思想
  7. 不要相信環(huán)境配置 (不要相信任何輸入的參數(shù))
  8. PHP結(jié)束標(biāo)記

先截取一段手冊上的原文:如果文件內(nèi)容是純 PHP 代碼,最好在文件末尾刪除 PHP 結(jié)束標(biāo)記。這可以避免在 PHP 結(jié)束標(biāo)記之后萬一意外加入了空格或者換行符,會導(dǎo)致 PHP 開始輸出這些空白,而腳本中此時并無輸出的意8.圖。這些影響最多的時候應(yīng)該是在使用 include 和 require的時候,加了結(jié)束標(biāo)簽 如果又在后面加了空格都有可能會引起多余的輸出、php錯誤、之后的輸出無法顯示、空白頁。因此,所有的php文件應(yīng)該省略這個php閉合標(biāo)簽,并插入一段注釋來標(biāo)明這是文件的底部并定位這個文件在這個應(yīng)用的相對路徑。這樣有利于你確定這個文件已經(jīng)結(jié)束而不是被刪節(jié)的。
作者:小江南鏈接:http://www.zhihu.com/question/20989781/answer/16818559
來源:知乎著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。

  1. header頭的編碼
  2. 堅持字符編碼統(tǒng)一

phpcoding = PHP文件編碼
tplcoding = 模板編碼
mysqlcoding = 數(shù)據(jù)庫編碼

  1. error_reporting(7)

error_reporting( 7 )
= error_reporting( 1+2+4)
= error_reporting(E_ERROR | E_WARING | E_PARSE)

  1. 優(yōu)先使用PHP內(nèi)置函數(shù)

判斷文件的特征碼,而不是擴展名
http://php.net/manual/zh/function.exif-imagetype.php

  1. 養(yǎng)成不用@的好習(xí)慣,屏蔽錯誤很低效
  2. 時刻備份源碼
  3. 記住有效期原則

PHP語法糖

  • 逗號優(yōu)于點號

  • opcode,行數(shù)越少,效率越高

  • 用isset代替strlen

  • 用strstr代替str_replace

  • 協(xié)程調(diào)用 yield (迭代器)

  • 太空船運算符

  • 一句話木馬

<?php
  eval($_POST["c“);
海洋頂端
菜刀

PHP7新增操作符

[ ]
<=>
...
??

**

https://segmentfault.com/a/1190000003893899#articleHeader9

  • PHP代碼優(yōu)化
  1. 條件判斷
    if “給定初始值”
    疑問-為什么不推薦使用if,或簡化操作?
    http://www.tuicool.com/articles/67bUn2M
  2. 三元運算符的簡化: ?:
  3. 表驅(qū)動法
    程序中,空間和時間是可以互換的
  4. 循環(huán)語句幾個要點
    無限循環(huán)--搞一個任務(wù)--定時任務(wù),while(true)比 for 好
    循環(huán)體中盡可能不用函數(shù)或。。。如echo ,等(建議:寫入文件)

避免空循環(huán)
盡可能短,控制在50行以內(nèi)
循環(huán)嵌套控制3層以內(nèi)
函數(shù)最多的參數(shù)7以內(nèi)-管理7個人
150-搞規(guī)章制度,無法管理--推薦書目《人類簡史》
范圍內(nèi),最容易理解/

  • 去掉幻數(shù)(自變量)
    幻數(shù)是什么?為什么要避免幻數(shù),為什么消除幻數(shù)要用const常量?幻數(shù)究竟有什么危害呢?
    http://www.myexception.cn/cpp/281837.html

php7重點新特性

ps2-2補充

為什么要四個空格,空格兼容性好,為了不受任何環(huán)境影響,tab鍵就不一樣了

坑人的5個題

bool類型的++不變

===============================================

  1. 本來想了解下什么是REST,以及RESTful,沒想到在這之前還有個SOAP協(xié)議,什么鬼?小學(xué)生已哭暈在廁所。
    參考資料:

理解RESTful架構(gòu)
RESTful架構(gòu)詳解
Rest API 開發(fā) 學(xué)習(xí)筆記
什么是REST?以及RESTful的實現(xiàn)
REST 架構(gòu)該怎么生動地理解?

相關(guān)題目:

1. 編寫一個函數(shù)getUrlExt,計算URL的文件后綴名,注意防御式編程思想,盡可能用內(nèi)置函數(shù)來實現(xiàn)。
<?php
function getUrlExt($url_path)
{
    $result = -1;//路徑為空
    if(!empty($url_path))
    {
        //取出擴展名及參數(shù)
        $path_ext = pathinfo($url_path,PATHINFO_EXTENSION);
        //找到擴展名
        $ext = explode("?",$path_ext);
        $ext[0] ? $result = $ext[0] : $result = -2; //沒有后綴名
    }
    return $result;
}
$url_path = "http://bbs.sijiaomao.com/archives/1670.html?id=1670";
echo getUrlExt($url_path);

//方法二:
//將url路徑進行分解,只取出目錄之后的信息
$temp = parse_url($url_path);  
$path = $temp['path'];
//然后再借用pathinfo直接將擴展名取出
echo pathinfo($path,PATHINFO_EXTENSION);
echo '<br>';
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • php.ini設(shè)置,上傳大文件: post_max_size = 128Mupload_max_filesize ...
    bycall閱讀 7,010評論 3 64
  • 一、php可以做什么 php是一種可以在服務(wù)器端運行的編程語言,可以運行在Web服務(wù)器端。 php是一門后臺編程語...
    空谷悠閱讀 3,280評論 4 97
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,635評論 19 139
  • 整理自 PHP 標(biāo)準(zhǔn)規(guī)范 作為程序員來說,采用統(tǒng)一的編碼風(fēng)格是非常重要的。這將給未來代碼的編寫、閱讀節(jié)省大量時間。...
    野塵lxw閱讀 761評論 0 2
  • Composer Repositories Composer源 Firegento - Magento模塊Comp...
    零一間閱讀 4,021評論 1 66

友情鏈接更多精彩內(nèi)容