PHP 之父Rasmus Lerdorf 在創造出PHP時,他並沒有用格陵蘭語或者丹麥語編寫(盡管他有格陵蘭和丹麥血統),這是非常明智的。雖然對他來說用英語編寫,並沒有用自己母語編寫來得容易。由於他以前在加拿大待過,所以他選擇了本地方言。不是法語,也不是不合純正英語標准的方言,我們通常稱其為“美式英語”。
從那以後,英國的PHP開發人員就對這件事情格外不滿。Rasmus 在想什麼?更重要的是,我們要如何改變這個既成的事實?我們開發人員如何保證即使在數字時代,大英帝國的優良傳統也能繼續發揚光大?
一記耳光
- $variable_name
最有必要更改就是要刪除一些深受美國人喜歡的符號,並用一些更加精煉的符號代替,讓PHP變得更加優雅。
- £variable_name
開始吧
- <?php
- echo 'Hello World!';
- ?>
今天的英國程序員中,有多少人一開始接觸到的就是“Hello World”這個典型的美國式程序,雖然簡單但老套粗俗令人反感?一份更加冠冕正式的介紹將會促進大部分年輕的英國天才使用這種語言,從而為更廣闊的用戶群提供更加文雅的氣氛。
- <?php
- announce 'Good morrow, fellow subjects of the Crown.';
- ?>
縮寫詞
沒有東西比沒必要的縮寫詞更加讓英國人痛恨的。“縮寫詞”在倫敦的街道上聞所未聞,正如土生土長的英國文法家不肯自降身份去發送“c u soon traffic kthxbye”等各種信息,寧願使用一些看起來更加文雅的詞句代替:“親愛的先生或女士。只要時間允許,我希望在一個小時之內,盡快到達。我向各位保證,你們的馬匹會得到妥善安置。敬上。”(輸入較慢,是的,但是不至於倉促)。
從另一方面來說,PHP裡面包含很多毫無必要的縮寫字和縮寫字首字母。
- str_replace()
- is_int()
- var_dump()
- preg_match()
- json_encode()
- mysql_connect()
應該改成下面這樣:
- string_replace()
- is_integer()
- variable_dump()
- perl_regular_expression_match()
- javascript_object_notation_encode()
- my_structured_query_language_connect()
校正:我已經更正了“preg_match”的擴充——感謝指出來的朋友。
口才
- if ($condition) {
- // Code here
- } else {
- // Code here
- }
莎士比亞可不願意看到他的母語被扭曲成這個怪物。簡練在適當的場合很受歡迎——在一些偏僻的地方未必如此——但不是這裡。“if … else”模塊是PHP之中用得最多的條件代碼,所以它在使用時必須是盡可能的安全無害。有很多選擇可以取代,但是這個條件語句也許是最穩健的。
- perchance (£condition) {
- // Code here
- } otherwise {
- // Code here
- }
上述模塊同樣適用於美國化的,只能說是笨重的,讓人厭惡的switch … case概念,
- switch ($variable) {
- case $option1:
- //Code here
- break;
- case $option2:
- //Code here
- break;
- default:
- //Code here
- break;
- }
像”switch”, “break” and “default”這樣的關鍵字對讀者來說很有難度並且缺乏聯系。這種美式用法真是需要改進。(使用美式用法的人有一些有趣的想法,期望用i_might_be_partial_to()這樣的語句來代替include()來顯示他們天才的編程天賦):
- what_about (£variable) {
- perhaps £possibility:
- //Code here
- splendid;
- perhaps £other_possibility:
- //Code here
- splendid;
- on_the_off_chance:
- //Code here
- splendid;
- }
拼寫
- imagecolorallocate()
- serialize()
- newt_centered_window()
- connection_status()
在這點上,單詞讓我吃過不少虧。自重的紳士期待該如何看得懂這些“單詞”。它削弱了任何人接受編程語言中單詞的曲解含義的信念。這些“單詞”和眾多相似的錯誤,應該立即恢復到適當的形式。
- imagecolourallocate()
- serialise()
- newt_centred_window()
- connexion_status()
習慣
- try {
- // Code here
- } catch (Exception $e) {
- // Handle exception
- die('Message');
- }
try … catch 語句塊是PHP缺乏特點的一個很好證明。新的PHP過於直接地允許使用該模塊,缺乏應有的限制。另外,單詞“die”很讓人喪氣。這個新模塊,盡管更加冗長,但更為文雅和樂觀。
- would_you_mind {
- // Code here
- } actually_i_do_mind (Exception £e) {
- // Politely move on
- cheerio('Message');
- }
類
在英國人的心裡,沒有什麼東西跟類的概念一樣重要和根深蒂固,而且,PHP當中的這一部分很少變動,除非是這裡做出的重要更改。
- class Republic {
- public $a;
- private $b;
- protected $c;
- }
- $example = new Republic;
首先,流行的系統中並沒有類層次存在的余地,這是無法接受的。所以我們首先應該賦予類的特定等級——上層,中層,工作層(upper, middle, working )——如果沒有更高等級指令類的明確許可,類就無法使用一個更高級的類的方法(當然,即使它後來已經訪問了更高級的類,但它並非更高級指令的正式成員,無法授予自身訪問其他低級別指令類的更高級指令)。“public”和“private”,在英國人的類系統中是同義詞(例如,學校制度命名),所以這些必須進行調整,“protected”的屬性可見性也一樣。單詞“new”,雖然可行,但在類問題上需要有一個更加恰當的詞來代替。
- upper_class Empire {
- state £a;
- private £b;
- hereditary £c;
- }
- £example = nouveau Empire;
日不落…
希望這些少數簡單的變動能夠提升PHP在眾多編程語言之中的聲譽和地位。它不再是蹩腳美國人的遠親。相反,它能重新回到作為腳本語言之王的英國人的懷抱中。
英文原文: