PHP

A collection of 5 posts

PHP

PHP logo 彩蛋

PHP 的吉祥物是大象,這個大家都不陌生,但是如果看到一隻飛奔的大象,那你可能會揉揉眼睛質疑自已是否眼花。 事實上這是 PHP 官方所埋藏的彩蛋,因為有人運氣好無意間看到,但不太領情,反而覺得不舒服,所以跑到 PHP mailing list 抱怨 1 才被挖掘出來... 除此之外,在 https://php.net 任意網頁下直接鍵入 logo 然後按 enter 後,還有很多復古的 logo 等著大家去發現,可以參閱 Github 上的程式碼 logo.php 2 和 common.js 3。

  • Gasol Wu
    Gasol Wu
PHP

PHP 執行期動態產生 class instance

今天在聽 小鐵 講 DI 實作 1 時提到了這個例子,當下在想如果換成 PHP 5.6 的 arguments unpack 的語法不曉得會不會動,驗證完後覺得很有趣,順便來寫一篇。 不像 Java,PHP 在執行期時才決定要產生哪個類別的 instance 或呼叫哪個函式,並不需要大費周章的用 Reflection API,但還是有些是不透過 Reflection 辦不到的事,其中產生 instance 時如果要傳入參數的話,就需要透過 ReflectionClass 來達成這個目的。 前面提到的問題,你沒辦法用 call_user_func 或 call_user_func_

  • Gasol Wu
    Gasol Wu
PHP

PHP 使用 feof 該注意的事

相對於其他語言,PHP 對於曾經寫過 C 的人來說比較容易上手,其中一個原因是 PHP 與 Standard C Library (libc) 有眾多函式名稱是一樣的,我相信 PHP 是刻意如此,有些函式連參數也一樣,只存在強弱型別的差異而已,檔案操作一系列的函式 fopen、fread、fwrite、fclose、feof、fgets、fgetc、ftell、fseek...等等就是較經典的例子。 其中 feof 就是今天的主角,使用上有一些眉角要注意,feof 通常拿來確認有沒有完整讀取到檔尾,所以在 PHP 中如果要從 stdin 一行一行的讀出來做資料處理的話可以寫成下面這樣: <?php // feof.php

  • Gasol Wu
    Gasol Wu
PHP

PHP 的 global 變數

自已曾經碰過,今天被問到的問題,覺得解釋的不太好,所以事後把它寫下來。 問題是這樣子: 某個 class 裡面的 method 呼叫一段在其他檔案定義的 function,回傳值卻不如預期。 實際把問題簡化成 sample code 如下: 假設 app.php 與 lib.php 都在同一層目錄 lib.php <?php $exchange_rates = array( 'TW' => 30, ); function currency_convert($currency, $to) { global $exchange_rates; return $currency * $exchange_

  • Gasol Wu
    Gasol Wu