你見過哪些令人瞠目結舌的php代碼技巧?

來源:互聯網
上載者:User

回複內容:

load 預設參數

$params += array(
'p1' => xx,
'p2' => xx
)
$handle = popen("tail -f /var/log/nginx/access.log 2>&1", 'r');     while(!feof($handle)) {     $buffer = fgets($handle);     echo "$buffer\n";     flush();}pclose($handle);
一看都變成了講解如何進行php的最佳化了,我也說點。
1.單引號實現字串的效能最佳化
這個我覺得沒有必要。php不會因為這點小的效能消耗就被壓垮了。而且也會出現一些其他的問題。我舉個例子
$str = "you're";
$data = "I heard that {$str} getting married";
?>
我覺得這個時候,還是使用雙引號更好一些。因為你字串拼接的問題,還要php再次申請開啟記憶體空間。同時還能避免出現一些奇葩問題。比如我們之前出現的這個問題。
$str = "you're";
$sql = "update article set content = '{$str}' where id = 1";
echo $sql; //update article set content = 'you're' where id = 1
?>
比如出現了這種情況。就會特別痛苦。 這是慘痛的教訓。我還是還在補坑中。

2.儘可能的使用PHP函數,換一句話說意思就是盡量的減少程式碼數,這樣的一個好處就是說減少代碼出現bug的量。

3. require_once 和 require 其實消耗差不多,那一點的差距真的不算大。等你寫的檔案需要這邊載入那邊載入,然後發現一不小心重複載入了一個類,然後造成衝突了。你就知道了require_once的好處了。

4.盡量不要隨便的進行複製變數 因為這樣php需要另外去開闢空間,這樣的也話會耗費一些時間。雖然這些時間很少,但是我感覺這種完全可以避免掉。

5.在echo一個東西的時候盡量使用分號而不是點文法。我的解釋是這樣的,當用點文法的時候,php需要記性開闢更多的空間來儲存這個變數,然後統一進行輸出。而使用逗號的話,則使用了多次echo行為。這樣的話。只是分為兩次將變數輸入到緩衝區。相對來說,點文法快了一點點。。。。但是這些都是一點點的效能損耗。

6.在php7之前的foreach其實是複製出一個副本出來,然後進行迴圈的。這個時候我還是建議使用array_map(), array_walk(), array_filter()等函數來處理你的問題。

7.$dir = dirname(dirname(dirname(__file__))); 這個的最佳化方法我給寫的是:$dir = realpath(__DIR__ . '/../../'); 最後要確定的目錄一定要存在,否則會返回false

8.一定要明白 == 和 === 的區別

9.不要使用__autoload 使用spl_autoload_register來代替。具體使用方法可以查詢該函數

10.不要隨便相信網上的那些php最佳化50則之類的東西。因為裡面的有些東西可能是錯的。在沒有驗證正確性的時候,不要隨便轉寄給別人。現在網上的資料已經夠亂的了。希望大家在確定真實性之後再去傳播。
曾經寫過的代碼,有類似經曆的來站隊
就在剛才的空間裡看到這個圖片。那我估計就是一個符號
@非瞠目結舌,只是一點小技巧
  1. foreach效率更高,盡量用foreach代替while和for迴圈。
  2. 迴圈內部不要聲明變數,尤其是對象這樣的變數。
  3. 迴圈裡別用函數
    for($x=0; $x < count($array); $x)//count()函數在外面先計算
    告訴各位找嗔目結舌X的方法,去Stackoverflow
    Highest Voted 'php' Questions
    有多嗔目結舌我不知道,但我肯定你能學到很多東西,不要繼續在這種問題上浪費生命。1、autoload
    spl_autoload_register(function($classname)
    {
    require_once("{$classname}.php")
    });
    2、php也有閉包
    3、trait 就像個萃取器(我用過幾次)
    trait SayWorld
    {
    public function sayHello()
    {
    echo 'World!';
    }
    }
    class MyHelloWorld
    {
    // 將SayWorld中的成員包含進來
    use SayWorld;
    }
    $xxoo = new MyHelloWorld();
    // sayHello() 函數是來自 SayWorld 構件的
    $xxoo->sayHello();
    4、php也有yield關鍵字
    function number10()
    {
    for($i = 1; $i yield $i;
    }
    返回數組1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    5、飛船運算子Orz.. php7
    就是類似windows api傳回值的三元邏輯。
    $a $b;
    6、定界符
    $name = 'kitty';
    echo

    {$name}




    Eof;
    ?>
    (注:一些內容來自網路)大概就是那些利用反射玩出來的花樣吧,不過不建議寫沒有詳細文檔說明的反射,後來的人會看不懂的
    PHP: Variable variables
    PHP: Magic Methods
    PHP: spl_autoload
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.