PHP

[PHP] array_merge_recursive 的神奇狀況

平常除草之後,都會在田埂上寫點 PHP 以防老年痴呆,然後一路上經歷了 Phalcon 0.9x, 1.0, 2.x, 3.0.x,雖然都不小心送了點 PR,但是這次遇到的是一個頗神奇的情形。 大概就像是記者說巴拉刈很毒只要 15 c.c. 就會致死... 那是用喝的! 那是用喝的! 那是用喝的! 老實說比起暗黑農會在推的什麼除草劑,巴拉刈還比較有效(以下不斷人財路就不多說惹... PHP 4.0.1

  • Hina Chen
    Hina Chen
5 min read
PHP

[PhalconPHP] Functional Test 與 PHPUnit mock 愛恨情愁

我不會寫測試第二蛋之我不會寫測試。俗話說 代致不是憨人想的那麼簡單。 PHPUnit Mock 在 PHPUnit 當中,有一個叫做 Mock 的東西,翻譯成中文大概可以叫做模仿。簡單來說,就是可以幫你的類產生出一個 替身,當然不是這種 替身, 好處是,你可以使用這個替身來做一些測試的事情,詳細可以上網 Google 一下,基於我對 PHPUnit 實在不熟,所以這邊就不獻寶了。 Mock with DI Phalcon 有很多東西可以放在 DI 裡面,

  • Hina Chen
    Hina Chen
4 min read
PHP

[PhalconPHP] 測試 Route 與 Controller 小技巧

其實我不會寫測試。 其實我不會寫測試。 其實我不會寫測試。 官方的測試工具 其實 PhalconPHP 有提供 Unit testing 測試的小小範例,但是他就真的跟飯粒一樣小,以致於我完全不知到該怎麼辦才好。加上 PHPUnit 我不熟(前情提要:我不會寫測試。所以基本上該踩的雷還是要踩一踩才知道該怎麼辦。 官方提供的開發工具庫 phalcon/incubator 裡面,確實有提供 Tests 的範例給你用,但是,他的 UnitTestCase.php 怪怪的, protected function setUp(

  • Hina Chen
    Hina Chen
5 min read
phalconphp

[php] PhalconPHP 雷區

生而為人,不小心採到別人的地雷是很合理的。但,生而為工程師,一直採到別人的地雷就不是很合理了。 PhalconPHP 身為一個 PHPer,用一些看起來很潮的 Framework 也是很合理的。而且,他還是包成 C-Extension 的方式執行,超級潮的! PhalconPHP 是使用 Zephir 這個工具,將 .zep 包裝成 .so 的 C-Extension 餵給 PHP 去執行的。看,是不是很潮,核心錯誤訊息噴出來你也不知道怎麼改呢(欸

  • Hina Chen
    Hina Chen
2 min read
OAuth

[PHP] OAuth with flickr

自從 flickr 說棄用原有的認證方式之後,我前後寫了兩篇有關於 flickr OAuth 的文章,不過,由於 OAuth 的實做方式的關係,最近又持續的踩到雷。雖然已經可以理解他的運作模式,不過對於詳細的東西還是很模糊的一塊。 所以,今天要來踩一個大雷給大家瞧瞧。 [PHP] Flickr OAuth PHP 認證小筆記 [PHP] Flickr OAuth PHP 認證小筆記 Part 2 實作 首先我們知道 OAuth 的認證模式,當我們向

  • Hina Chen
    Hina Chen
4 min read
OAuth

[PHP] Flickr OAuth PHP 認證小筆記 Part 2

俗話說得好,出來跑得總是要還。所以,由於昨天 OAuth 一直鬼打牆,所以我參考了 Plruk API 的開發工具,並且 Plurk 有很佛心的提供了 OAuth 測試平台,最起碼這樣我可以驗證我的簽名是否正確。所以,我就一個步驟一個步驟去測試這件事情了。然而,最後我發現一件事情,如果你使用POST的方法來傳遞request_token所需要的資料時,Yahoo! 那邊會失敗(原因不明)。 天殺地就是那個 POST 讓我鬼打牆一天啊! 雖然說 flickr 的 OAuth 說明中,

  • Hina Chen
    Hina Chen
6 min read
OAuth

[PHP] Flickr OAuth PHP 認證小筆記

最近因為 Flickr 明年說要把舊的認證方式拿掉,所以就找時間研究一下他的 OAuth 的運作方式。官方雖然是有文件說明,但是,他的簽名方式我永遠都沒辦法簽過。而且更詭譎的地方是,我都已經按照官方說明來作簽章了,但是只要送去給 flickr 他永遠都說我的簽名錯誤(眼神死)。 有鑑於此,所以我就開始找尋 PHP 關於 OAuth 的解決方案。 Zend OAuth CakePHP OAuth Component PECL::OAuth oauth-php 雖然我本身是使用 CakePHP framework,不過我還是傾向於更簡便的使用。

  • Hina Chen
    Hina Chen
4 min read
PHP

[PHP note.] 微型專案 Part 3

繼續接著上次的微型專案 Par 2,今天接著說擴充元件與設定檔案的部份。當然啦,如果是大神路過的話,一樣是 Alt+F4 跳過就可以了喔(啾咪。 那我們就繼續了。 擴充元件 我們想到擴充通常都會是用 plugins 來作,或者是用 components 也可以,大同小異。使用的方式差不多,唯一的區別大概是,Components 通常會拿來跟 Controller 一起使用,而 plugins 則是比較獨立的元件(像是第三方開放的 SDK 等等)。 所以,

  • Hina Chen
    Hina Chen
3 min read
PHP

[PHP note.] 微型專案 Part 2

上次寫過了微型專案 Part 1,所以今天就繼續寫 Part 2,一樣是嘴砲文居多,所以如果有大神路過可以直接按 Alt+F4 跳過這樣(無誤。 那我們就繼續了。 錯誤控制 通常我們是會用簡單的if...else來作一些例外的控制,這是最直觀也最方便的模式。然後,我們就會需要一個容器來幫我做這些錯誤的判斷、顯示、控制輸出等等。 所以,我可以在原先的 bootstrap.php 裡面加入一個叫做 Error 的靜態類別來幫我們做這件事情。 <?php class Error { public

  • Hina Chen
    Hina Chen
4 min read
PHP

[CakePHP note.] 理解 Model 關聯模式

由於 CakePHP 的模組本身就是 ORM 的一種,所以在操作上有著迅速,便利,低風險(例如 SQL Injection)爾等好處。當然也不是沒有缺點,大概就是要犧牲掉一點效能吧。原生的 SQL 語法當然可以最佳化方式很多,當然衍生的問題也多。 首先,這裡先理解 Model 的運作方式,先是在 models 資料夾中建立一個模組,我們叫他 my_test 好了。他的內容基本上是這樣: <?php Class

  • Hina Chen
    Hina Chen
5 min read
PHP

[PHP note.] 關於正規表示式的一點筆記

我發現我很久沒有寫 PHP 的筆記了,不過因為我本來就不太會寫 PHP,所以文章很少也是很合理的(挺)。這次要筆記的東西是正規表示式,其實網路上文章非常多,我首推這篇:Regular Expression (RegExp) in JavaScript 疑?怎麼是 Javascript!?哎呀,沒關係啦,其實正規表示式大家都差不多嘛(喂)。但是呢,我這裡筆記的東西請不要直接搬去給 Javascript 用,會出人命的。首先,我要講得東西這邊全部都有: PCRE regex syntax 所以如果英文不錯的人可以直接看官方說明就好。

  • Hina Chen
    Hina Chen
4 min read
PHP

[php tech.] MSN Bot step by step part 2 Connect HOWTO

連線,其實並不是一件簡單的事情。要怎麼樣讓一個程序,能夠持續的跟伺服器溝通,卻不會因為逾時等問題導致連線中斷,這就是即時通訊比較麻煩的地方。首先,我們首先需要做的,就是跟 MSN 的服務做溝通的動作,這個溝通動作有詳細的命令,請參閱:http://msnpiki.msnfanatic.com/index.php/Reference:Commands 注意,溝通的動作如果送太多次,會被 MSN 服務給擋掉喔!所以請勿輕易用固定 IP 的主機嘗試。 首先,跟 MSN 服務溝通的第一步,

  • Hina Chen
    Hina Chen
9 min read
PHP

[Apache tech.] 工作筆記 PHP, Apache 優化筆記

我之前好像有寫過相關的文章,不過不重要,先筆記找到的東西再說囉。 zlib.output_compression zlib.output_handler output_handler 以上三項在 php.ini 裡的壓縮設定,會對 Xajax 產生無回應的影響,若有使用 Xajax 的話請勿開啟。至於是不是對所有的 HttpXmlRequest 有影響則不知,目前我只有使用 Xajax 而已,如果再使用其他的 HttpXmlRequest 有影響的話,建議先檢查上述三個項目是否有被設定。 另外,Apache

  • Hina Chen
    Hina Chen
2 min read
PHP

[php tech.] 工作筆記 php+memcached

做一下筆記。 PHP & memcached [FreeBSD] 安裝 memcache for php 多重伺服器共享 Session 挖了好久,在機器上還沒有做,還是等開發成熟一點再來實際應用比較妥當,不能拿客戶主機開玩笑啊。主要我想還是拿來增加自己的實作經驗(沒有誤),當然也是順便多學一點東西。看起來對於資料庫溝通的部分可以做到相當不錯的效能,希望能有多一點應用。 另外,這個也不錯,Standard PHP Library (SPL),我好像之前有提過的樣子。

  • Hina Chen
    Hina Chen
1 min read
PHP

[php tech.] PHP 5 工作筆記

雖然寫這種東西點閱率應該很低,不過,可以充很大的版面(沒有誤),也算是功德一件。 這次要筆記的東西,是 PHP 5 的一些新東西,還有順便是從 TextCube Night build 中找到的一些新玩意。俗話說得好,拷貝是學習的不二法門 (肯定的),但是單純的拷貝並不會進步,我作筆記總可以吧 (哈哈哈)。 首先是 Abstract Class (抽象類別) 與 Interface (介面) 的介紹,在 php.net 裡面對於

  • Hina Chen
    Hina Chen
7 min read