PHP 是否理想的第一語言?

根據最新的統計,全球三份之一的網站使用 PHP 作為開發語言,儘管如此,還是不斷有懷疑論者質疑,PHP 是否一個好的編程語言,資深芬蘭 PHP 開發者 Jani Hartikainen 在他的網誌說:「PHP 是偉大的!」他甚至鼓勵初學者以 PHP 作為第一語言。

曾經有人說過,PHP 是一個有害的第一語言,因為它灌輸了不良的編程習慣,這是真實的嗎?說這種話的人很多本身並不喜歡 PHP,而且,他們所持的理由通常與事實不符。

Jani 認為,如果你有興趣開發網頁應用程式,PHP 絕對是一個良好的第一語言,甚至說它是最理想的第一語言也不為過。

繼續閱讀 »

2008 年 4 月 PHP 使用統計

Nexen 發表了 2008 年 4 月份的 PHP 使用統計,他們調查了 2,800 萬個伺服器,涵蓋了 200 萬個 IP 地址,刪除沒有架設網站、無法聯絡、網絡服務供應商和使用 domain parking 的網域後,共有 1,250 萬個網站參與了這次統計,內容摘要如下,統計的方法可參閱 la section phpversion

PHP on Internet

這張圖表顯示了 PHP 在全球互聯網上的市場份額是 33.30%,與前一個月差不多,PHP 的市場份額一直很穩定。

繼續閱讀 »

得到更好 PHP 工作的十個秘訣(第二部份)

我們已經在本文的第一部分討論過 PHP 開發人員尋找更好的工作的其中五點秘訣,以下是另外五點:

做好準備。適應新的企業文化你應該嘗試學習新公司各方面的業務與及公司文化,並且在求職面試 中強調這是你希望在這間公司工作的最大動機,你也應該表示願意去適應公司中各種你不熟悉的文化,永遠不要推動你的個人喜好,除非這是一件對公司業務有益的事。例如,公司採用 X 開發架構,不要純綷因為你喜歡 Y 架構而推銷它,把應用程式從 X 開發架構重整到 Y 往往是麻煩的,因為這涉及時間和金錢。如果你知道該公司所用的函式庫和工具與你的喜好不同,而你真的希望在這間公司工作,在求職面試時便應該強調你願意適應。

得到更好 PHP 工作的十個秘訣(第一部份)

經常有人埋怨市場上付給 PHP 開發人員的工資太低,或者 PHP 開發人員競爭激烈以致找工作困難,也有人說 PHP 開發人員的地位比不上其他編程語言,例如 Java 或者 Oracle 數據庫的 PL/SQL。PHP Classes 的 Manuel Lemos 為廣大的 PHP 愛好者提供十個找工作的秘訣,這些秘訣其實並不侷限於 PHP 的開發人員,所有資訊科技行業的工程人員都可以從中得到某些啟示。

裝備自己,脫穎而出對於那些埋怨自己工資太低,或者找工作太困難的人,Manuel 認為這純粹是一種誤解,工作市場同樣依照經濟學上的供求定律運作,倘若職位的空缺太少,求職的人數太多,在劇烈的競爭下求職人自然要接受較低的工資。然 而,現實的情況是 PHP 是市場上居領導地位的網站開發語言,市場對合格的 PHP 開發人員的需求很大,很多公司願意支付他們高薪厚祿。同樣的情況也發生在 Java 上,Java 就業市場通常平均要付出較高的工資,這是因為 Java 需要較複雜的應用架構和工具,Java 的職位往往要求應徵者具備大學學歷。若果你沒有電腦或者相關領域的大學學歷,Manuel 強烈建議你考取一個。若果你曾經因為太難或者太昂貴而放棄,Manuel 也建議你儘快回到學校並完成你的學位課程。這樣做的確不容易,但你一定不會對你的犧牲感到後悔。若果真的不可能考取大學學歷,不妨考慮市面上眾多的 PHP 培訓課程和認證考試,雖然它們比不上一個大學學位,但為了可以脫穎而出,這些資格總比什麼都沒有好。 繼續閱讀 »

網頁剪輯應用實例──用 PHP 製作一個「當年今日」的物件

網絡上有數以千計提供服務網頁的網站,它們供應有趣的,甚至富有教育性的資訊,你可以把這些資訊整合到你的網頁裡面,或者製作一個小裝置 (widget) 讓其他人無縫地整合這些資訊到他們的內容傳送平台。Hasin Hayder 在他的網誌介紹怎樣用 PHP 剪輯 Scopesys 的網頁製作一個「當年今日」小裝置。

Hasin 首先鄭重提醒大家,在剪輯人家網頁 (web scraping) 的資料時,必須要仔細閱讀版權內容,在任何情況下都不應該違反版權法。

這個小裝置用 PHP 寫成,讀取 Scopesys 的「當年今日」網頁,並顯示以下類型的內容:

繼續閱讀 »

Zend 認證工程師

不少 PHP 開發者都認同考取 Zend 認證工程師 (ZCE) 是一個確立個人 PHP 開發水平的重要一步,它也可以用作評估自己的技能,與及向同事和潛在客戶展示自己的經驗的途徑。Zend 在他們的網頁介紹了考取 Zend 認證工程師的好處。其中一位 ZCE Alex Netkachov 在自己的網誌分享他考取這個資格的經驗:甚麼是 ZCE,如何準備,如何通過它,通過它之後會發生甚麼事。

有關 Zend 認證工程師,官方的消息來源是 Zend.com,尤其是它們的認證服務網頁,在那裡你可知道如何成為 ZCE,一張推薦書籍名單,與及考取了 ZCE 資格的工程師黃頁

若果你有任何有關 Zend 認證的疑問,可以聯絡工程師黃頁上任何一位優秀的工程師,Alex 表示他每月收到大概 10 個查詢 ZCE 的電郵,招聘 PHP 人才的雇主也會透過工程師黃頁找到他。電郵中最常問的問題是如何準備 ZCE 考試,對 ZCE 考試的看法,間中也有人問取得 ZCE 後的好處及 ZCE 對職業生涯有何進益。

繼續閱讀 »

2008 年 2 月 PHP 使用統計

Nexen 發表了 2008 年 2 月份的 PHP 使用統計,他們調查了 2,770 萬個伺服器,涵蓋了 200 萬個 IP 地址,刪除沒有架設網站、無法聯絡、網絡服務供應商和使用 domain parking 的網域後,共有 1,260 萬個網站參與了這次統計,內容摘要如下,統計的方法可參閱 la section phpversion

PHP on Internet

這張圖表顯示了 PHP 在全球互聯網上的市場份額是 33.42%,與前一個月差不多,PHP 的市場份額一直很穩定。

繼續閱讀 »

PHP 5.3 的新函式:date_create_from_format()

PHP 的其中一位主要貢獻者 Derick Rethans 在他的網誌上 表示,PHP 5.3 將會提供一個比 strtotime() 和 date_create() 函式更有彈性的新函式 date_create_from_format() 與及 DateTime 的新靜態成員函式 createFromFormat(),回應 PHP 社群長期以來提出的要求。

strtotime() 和 date_create() 一直只接受 GNU 的日期和時間格式,其中包括美國的 mm/dd/yyyy,很多其他語言和國家的格式,包括英式的 dd/mm/yyyy 等均不能解讀,剛結束的倫敦 PHP 會議便 有出席者對此大表不滿,Derick Rethans 於是決定在快將推出的 PHP 5.3 加入這兩個更有彈性的日期時間轉換函式,例如函式 date_create_from_format() 將接受兩個引數,第一個引數表示格式,第二各引數是日期時間字串,例如:

 PHP |  copy code |? 1<?php2$dt = date_create_from_format( ‘d/m/Y’, "02/03/2008" );3echo $dt->format( ‘d/m/Y’ ), "\n";4?>

若果提供的格式不能用來解讀日期時間字串,這個函式會送回 false,我們跟著可以調用另一個新函式 date_get_last_errors() 來檢視字串哪些部分出錯,非常方便。至於格式的表達式,則跟 date() 所使用的沒有分別。

Derick Rethans 標示新函式的使用說明很快便會在官方文檔網站內公佈。

教學文件:CodeIgniter 快速 PHP 應用開發

CodeIgniter 是一個有名的 PHP 開發架構,它以嚴格的 MVC 架構、完備的文檔和簡單易學成為很多 PHP 開發者喜愛的開發工具,很多開源系統由於都是靠社群自發地開發和維護,這類社群對編寫文檔一向不太熱中,所以 CodeIgniter 完整的文檔便顯得特別有吸引力。Akash Mehta 在 Developer Tutorials 網站上發表了一篇 CodeIgniter 的教學文件

這篇教學文件首先介紹何謂 MVC 架構,跟著說明如何實際運用,文件會實作一個「職業」 的應用程式,從中你可以見到一個應用程式的結構,與及它與 MySQL 數據庫的介面如何運作。

PHP 5.3 的新常數:__DIR__

雖然 PHP 5.3 尚未推出,但是它的新功能在網上已經被熱烈討論,官方預計的推出日期是 2008 年第一季,但是延期出貨是軟件工業的不成文規矩,在等待的同時,不妨研究一下這個新版本的各項新功能。

Lars Strojny 在他的個人網誌內介紹了將會在 PHP 5.3 出現的新常數 __DIR__,它將會繼 __LINE__、__FILE__、__FUNCTION__、__CLASS__、__METHOD__ 之後成為「魔法常數」(magic constant)的最新成員,實作上 __DIR__ 相當於 dirname(__FILE__),例如在檔案 /var/www/host/app/foo.php 內調用 __DIR__,得到的結果是 /var/www/host/app。

運用上魔法常數是在編譯階段解讀,並非像 dirname() 等函式在執行階段解讀,所以執行上快得多。

如何成為一個更優秀的 PHP 開發者

Akash Mehta 在他的網誌中討論了五個成為更優秀 PHP 開發者的方法。Akash 的目的是要提高你的生產效率、少寫代碼、並讓你的 web 應用程序實現更多功能。

很多時候,一個沒有經驗的 PHP 開發者,在 freenode 上的 ##PHP IRC 頻道上問一個問題,如果問題是小事,答案似乎很明顯,或乾脆似乎像一個新手,他們可能很快就會發現自己備猛烈炮轟:「去看一看使用手冊吧!」「去學一點 PHP 吧!」「我們不是你的個人導師!」或乾脆「你必須成為一名更優秀的PHP開發者」。那麼,要怎麼做才能成為一個更優秀的 PHP 開發者?Akash 總結了五種成為更優秀 PHP 開發者的方法,提高你的生產效率、少寫代碼、並讓你的 web 應用程序實現更多功能。當談到 PHP 程序開發,我們永遠有更多需要學習的地方,例如新的核心功能、新的開發架構、新的設計樣式、新的代碼風格。這裡是一些最好的方法,使你可以成為一名更優秀的 PHP 的開發者。

2008 年 1 月 PHP 使用統計

Nexen 發表了 2008 年 1 月份的 PHP 使用統計,他們調查了 2,870 萬個伺服器,涵蓋了 200 萬個 IP 地址,刪除沒有架設網站、無法聯絡、網絡服務供應商和使用 domain parking 的網域後,共有 1,250 萬個網站參與了這次統計,內容摘要如下,統計的方法可參閱 la section phpversion

PHP on Internet

這張圖表顯示了 PHP 在全球互聯網上的市場份額是 33.24%,與前一個月差不多,PHP 的市場份額一直很穩定。

繼續閱讀 »

延遲靜態綑綁的說明及範例

「延遲靜態綑綁」(late static binding)一直是 PHP 社群的熱門討論話題,隨著 PHP 5.3 得來臨,這項功能終於得以實現。究竟何謂「延遲靜態綑綁」?它有什麼用處?Sean Coates 在她的網誌提供了一個範例說明這種技術,並介紹它的實際用途。

簡單來說,「延遲靜態綑綁」就是把本來在編譯階段固定下來的表達式或變量,改成在執行階段才決定,當一個子類繼承了父類的「靜態綑綁」表達式,它的值便不能改變,很多情況下這未必是開發人員所希望見到的。這個構思已經討論了超過兩年,到了 PHP 5.3 我們終於可以見到它。

我們首先看看以下的範例:

繼續閱讀 »

goPHP5 工程全面結束

極具爭議性的 goPHP5 工程已經到了它的終點(實際的結束日期是 2008 年 2 月 5 日),它的其中一個創辦人 Robert Douglass 一直認為這個項目是成功的,他說:「自從推辦 goPHP5,已經有超過 100 個軟件開發項目和超過 200 個網絡主機支援 PHP 5.2。相對幾個月前,現在可以輕鬆地找到託管解決方案,軟件開發商亦可以使用 PHP 5 具吸引力的新功能,而不需要擔心他們的用戶別無選項。」

他同時讚揚 Larry Garfield 及 Marc Delisle 在推動這個項目上的貢獻,並表示這是整個社區對改善軟件開發及其平台的一種共同力量。當然,別忘了看一看這張長長的 PHP5 軟件列表,及支援 PHP5 的網絡服務商

PHP 的三元運算符

PHP 的三元運算符可以用來簡化程式中的 if-then-else 語法,如果你使用了大量比較語句,三元運算符可幫你大大降低代碼的行數。Tech-Evangelist 有一篇文章介紹如何使用 PHP 的三元運算符。雖然三元運算符的語法很簡單,但是 PHP 的初學者往往覺得比較容易混淆,甚至覺得它很難閱讀,其實只要習慣了可能會喜歡上它的簡潔。

每一個 PHP 開發者都應該認識的十個開發項目

I-nfotech 有一篇文章列出十個每一個 PHP 開發者都應該認識的開發項目, 我們都知道 PHP 擁有全世界最龐大的原碼程式庫(不知道的話現在仍不算遲),所以在開發過程中幾乎所有你需要的功能都已經有人寫好了,你只需插入你的項目中便可以使用,文章的作者有多年的網頁開發經驗,他總結多年的心得,列出了十個每一個 PHP 開發者都應該認識的 PHP 函式庫。你的要求可能不同,但這篇文章的內容仍然很值得參考。

發送電子郵件:一般用途的話 PHP 的 mail() 函式已經足夠,但若果要插入附件,或者透過 SMTP 伺服器發送電郵,便需要 phpmailer 了。 用戶管理:由於作者一直以來都找不到一個合心意的用戶管理函式庫,所以他自己寫了一個 PHP User class,也推薦這個給大家。 擷取 RSS:你的項目需要從外部來源擷取 RSS 嗎?雖然方法很簡單,但既然有方便易用的 Magpie RSS,便不要自己費神了。 繼續閱讀 »

2007 年 8 月 PHP 使用統計

Nexen 發表了 2007 年 8 月份的 PHP 使用統計,他們調查了 2,710 萬個伺服器,涵蓋了 240 萬個 IP 地址,刪除沒有架設網站、無法聯絡、網絡服務供應商和使用 domain parking 的網域後,共有 1,180 萬個網站參與了這次統計,內容摘要如下,統計的方法可參閱 la section phpversion

PHP on Internet

這張圖表顯示了 PHP 在全球互聯網上的市場份額是 33.69%,與前一個月差不多,PHP 的市場份額一直很穩定。

繼續閱讀 »

Yahoo! 的 PHP 面試題目(第四部份)

若果你已經看過 Yahoo! 的 PHP 面試題目(第一部份)第二部份第三部份,請繼續觀看最後一部份第十七至第二十二題。首先會先列出題目,題解會寫在後面。

給你一行文字 $string,你會如何編寫一個正規表達式,把 $string 內的 HTML 標籤除去? PHP 和 Perl 分辨陣列和散列表的方法有什麼差異? 你如何利用 PHP 解決 HTTP 的無狀態本質? GD 函式庫用來做什麼? 試寫出幾個輸出一段 HTML 代碼的方法。 PHP 比 Perl 好嗎?請討論。 繼續閱讀 »

Yahoo! 的 PHP 面試題目(第三部份)

若果你已經看過 Yahoo! 的 PHP 面試題目(第一部份)第二部份,請繼續觀看第三部份第十一至第十六題,其餘題目已經在第四部份轉載。每一部份的都會先列出題目,題解會寫在後面。

在一個類別內如何存取這個類別的特性及變改它的值? include 和 include_once 有什麼分別?require 又如何? 以下哪一個函式可以把瀏覽器轉向到另一個頁面? redir() header() location() redirect() 以下哪一個函式可以用來開啟檔案以便讀/寫? fget() file_open() fopen() open_file() mysql_fetch_row() 和 mysql_fetch_array() 有什麼分別? 下面的代碼用來做什麼?請解釋。 $date=’08/26/2003′; print ereg_replace("([0-9]+)/([0-9]+)/([0-9]+)","\\2/\\1/\\3″,$date); 繼續閱讀 »

Yahoo! 的 PHP 面試題目(第二部份)

若果你已經看過「Yahoo! 的 PHP 面試題目(第一部份)」,請繼續觀看第二部份第五至第十題,其餘題目已經在第三部分第四部份中轉載。每一部份的都會先列出題目,題解會寫在後面。

foo() 與 @foo() 有什麼分別? 你如何替 PHP 的應用程式偵錯? 「===」是什麼?試舉一例「==」是真但「===」是錯。 你會如何定義一個沒有成員函式或特性的類別 myclass? 你如何產生一個 myclass 的物件? 繼續閱讀 »