當前位置:首頁 » 編程語言 » php的糟糕

php的糟糕

發布時間: 2023-04-12 23:50:44

php的是「糟糕設計」嗎

因人而異,不同的人有不同的習慣。
PHP是弱耐毀頌類型語言,數據類型可以變化無常,PHP的類余虛似的內置函數,函數名卻風格迥異,有強迫症的人會受不昌鄭了。
不過我就比較喜歡這種靈活,隨便和任性。

⑵ 高質量PHP代碼的50個技巧(3)

42

43

44

45

/**

Method to execute a command in the terminal

Uses :

1. system

2. passthru

3. exec

4. shell_exec

*/

function terminal($command)

{

//system

if(function_exists('system'))

{

ob_start();

system($command , $return_var);

$output = ob_get_contents();

ob_end_clean();

}

//passthru

else if(function_exists('passthru'))

{

ob_start();

passthru($command , $return_var);

$output = ob_get_contents();

ob_end_clean();

}

//exec

else if(function_exists('基悔exec'))

{

exec($command , $output , $return_var);

$output = implode(" " , $output);

}

//shell_exec

else if(function_exists('shell_exec'))

{

$output = shell_exec($command) ;

}

else

{

$output = 'Command execution not possible on this system';

$return_var = 1;

}

return array('output' => $output , 'status' => $return_var);

}

terminal('ls');

上面的函數將運行shell命令, 只要有一個系統函數可用, 這保持了代碼的一致性.

5. 靈活編寫函數

?

1

2

3

4

5

6

function add_to_cart($item_id , $qty)

{

$_SESSION['cart']['item_id'] = $qty;

}

add_to_cart( 'IPHONE3' , 2 );

使用上面的函數添加單個項目. 而當添加項列表的時候,你要創建另一個函數嗎? 不用, 只要稍加留意不同類型的參數, 就寬好會更靈活. 如:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

慎鋒鉛14

15

16

function add_to_cart($item_id , $qty)

{

if(!is_array($item_id))

{

$_SESSION['cart']['item_id'] = $qty;

}

else

{

foreach($item_id as $i_id => $qty)

{

$_SESSION['cart']['i_id'] = $qty;

}

}

}

add_to_cart( 'IPHONE3' , 2 );

add_to_cart( array('IPHONE3' => 2 , 'IPAD' => 5) );

現在, 同個函數可以處理不同類型的輸入參數了. 可以參照上面的例子重構你的多處代碼, 使其更智能.

6. 有意忽略php關閉標簽

我很想知道為什麼這么多關於php建議的博客文章都沒提到這點.

?

1

2

3

<?php

echo "Hello";

//Now dont close this tag

這將節約你很多時間. 我們舉個例子:

一個 super_class.php 文件

?

1

2

3

4

5

6

7

8

9

<?php

class super_class

{

function super_function()

{

//super code

}

}

?>

//super extra character after the closing tag

index.php

?

1

2

require_once('super_class.php');

//echo an image or pdf , or set the cookies or session data

這樣, 你將會得到一個 Headers already send error. 為什麼? 因為 “super extra character” 已經被輸出了. 現在你得開始調試啦. 這會花費大量時間尋找 super extra 的位置。因此, 養成省略關閉符的習慣:

?

1

2

3

4

5

6

7

8

9

<?php

class super_class

{

function super_function()

{

//super code

}

}

//No closing tag

這會更好.

7. 在某地方收集所有輸入, 一次輸出給瀏覽器

這稱為輸出緩沖, 假如說你已在不同的函數輸出內容:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

function print_header()

{

echo "<p id='header'>Site Log and Login links</p>";

}

function print_footer()

{

echo "<p id='footer'>Site was made by me</p>";

}

print_header();

for($i = 0 ; $i < 100; $i++)

{

echo "I is : $i ';

}

print_footer();

替代方案, 在某地方集中收集輸出. 你可以存儲在函數的局部變數中, 也可以使用ob_start和ob_end_clean. 如下:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

function print_header()

{

$o = "<p id='header'>Site Log and Login links</p>";

return $o;

}

function print_footer()

{

$o = "<p id='footer'>Site was made by me</p>";

return $o;

}

echo print_header();

for($i = 0 ; $i < 100; $i++)

{

echo "I is : $i ';

}

echo print_footer();

為什麼需要輸出緩沖:

>>可以在發送給瀏覽器前更改輸出. 如 str_replaces 函數或可能是 preg_replaces 或添加些監控/調試的html內容.

>>輸出給瀏覽器的同時又做php的處理很糟糕. 你應該看到過有些站點的側邊欄或中間出現錯誤信息. 知道為什麼會發生嗎? 因為處理和輸出混合了.

8. 發送正確的mime類型頭信息, 如果輸出非html內容的話.

輸出一些xml.

?

1

2

3

4

5

6

$xml = '<?xml version="1.0" encoding="utf-8" standalone="yes"?>';

$xml = "<response>

<code>0</code>

</response>";

//Send xml data

echo $xml;

工作得不錯. 但需要一些改進.

?

1

2

3

4

5

6

7

$xml = '<?xml version="1.0" encoding="utf-8" standalone="yes"?>';

$xml = "<response>

<code>0</code>

⑶ PHP的幾大認知誤區

要知道沒有任何一款編程語言是可以用來實現全部的項目的,所以才會有各種各樣的編程語言出現。今天,昌平java課程就一起來了解一下,在大多數軟體開發工程師心目中,PHP編程開發語言都有哪些被人誤解的地方。



1.PHP是一門面向對象語言,但不是基於OOPS


這是完全不緩斗吵正確的理解,尤其是Java程序員,他們認為PHP不是基於OOPS;但他們會發現許多面向對象的特徵,比如,介面、方法、抽象對象等。說實話,初始版擾侍的PHP沒有太多的面向對象功能,但PHP5添加很多面向對象技術。更重要的是,你也許會好奇,為什麼Bootstrap代碼在PHP里會變得那麼簡單,這個得歸功於PHP與OO的結合。


2.PHP無法實現特定的功能


這個誤解聽起來比較模糊,但有許多開發者認為PHP不能實現內存訪問等其他功能。但事實是,PHP是一門可擴展的語言,你只需用C或C++編寫一個擴展,進行集成就OK了。或者,你無需創建,網上已經有成千上百個擴展可供使用,你可以根據需要,直接拿來使用。


3.PHP不安全


既然你認為它是不安全的,那為何不為它編寫安全的代碼呢。我承認,PHP里是有大量不安全的代碼,但作為程序員,我們應銷衫該盡量編寫可靠安全的代碼。


如果拿PHP與.NET進行比較,PHP肯定是失敗的。但如果你是一個技術嫻熟的程序員,你無需安全「幫助」。包括日常的安全問題,但如果他們的路徑是動態生成的,那你就得當心了。當然,如果你精通所有的指令,它或許會變的更安全。


4.不適合做大型應用程序


一門語言之所以能用來構建大而復雜的應用,其自身要具有一定的可靠性和高性能,而可擴展的PHP並不符合。但是,如果你設計和開發的應用程序架構很穩定,那應用程序的性能和擴展又會有什麼問題呢?


事實是,一些知名的網站都是採用PHP設計的,比如Facebook、Wikipedia、和Yahoo!等,它們都能工作的很好。


5.PHP只能用於網站開發


的確,使用PHP進行網站開發是很普遍的。但命令行介面(CLI:CommandLineInterface)可以讓應用程序運行在非Web伺服器上。


雖然有些應用程序對CPU的要求很高,但通過執行PHPCLI,仍然可以採用PHP進行開發和運行。更重要的是,如果你想使用PHP開發桌面應用程序,只需使用Windows特定擴展即可搞定。


6.開發過程緩慢


對於這樣的誤解,我實在不知道是從哪裡傳出來的。有可能你編寫的PHP代碼很凌亂、並且裡面充斥著大量的MySQL語句(它們雖然很有意義,但真不應該放在那裡)。而事實上,PHP有大量的框架可供開發者使用,合理使用它們會達到事半功倍的效果,大大縮減開發時間。所以,不要抱怨慢。


7.專業開發者不使用PHP


關於這個誤解,坊間有各種各樣的說法,比如PHP對初學者是小菜一碟,它是為那些不想認真對待開發的人准備的等等。當然,不得不承認,PHP在某些方面的確沒有什麼意義,但是對於這樣的誤解,真的是可笑之至。如果這里有許多Web應用程序都是使用PHP開發,那麼想像下,一向嚴謹的開發商卻對PHP敬而遠之,乃是完全錯誤的。


⑷ 為什麼說用PHP開發大型系統令人不爽

筆者在過去的四年裡一直致力於PHP應用的開發 PHP確實十分容易編寫 但是PHP也有一些十分嚴重的缺陷

下面筆者會給出自己的理由 為什麼PHP不適合於比小型業余網站更大的網站

對遞歸的不良支持 遞歸是一種函數調用自身的機制 這是一種強大的特性可以把某些復雜的東西變得很簡單 有一個使用遞歸的例子是快速排序(quicksort) 不幸的是 PHP並不擅長遞歸 Zeev 一個PHP開發人員 說道 PHP (Zend)對密集數據使用了棧方式 而不是使用堆方式 也就是說它能容忍的遞歸函數的數量限制和其他語言比起來明顯少 見bug 這液虧爛是一個很不好的借口 每一個編程語言都應該提供良好的遞歸支持

許多PHP模塊都不是線程安全的 在幾年前 Apache發布了Web伺服器的 版 這個版本支持多線程模式 在這個模式下 軟體一個一部分可以同時運行多個 PHP的發明者說PHP的核心是線程安全的 但是非核心模塊不一定是 但是十次有九次 你想要在PHP腳本中使用這種模塊 但這又使你的腳本不能合適Apache的多線程模式 這也是為什麼PHP小組不推薦在Apache 的多線程模式下運行PHP 不良的多線程模式支持使PHP常被認為是Apache 依然不流行的原因之一

請閱讀這篇討論 Slashdot: Sites Rejecting Apache ?

PHP 由於商業原因而不健全 通過使用緩存 PHP的性能可以陡增 %[見基準測試] 那麼為什麼緩存沒有被構建在PHP中呢?因為Zend——PHP的製造者 它在銷售自己的Zend Accelerator 所以當然 他們不想拋棄自己的商業產品這塊肥肉

但是有另一個可選擇空廳的 APC (Zend後來推出Zend Optimizer 免費的加速器——譯者)

沒有命名空間 設想某個人製作了一個PHP模塊用來閱讀文件 模塊中一個函數叫做read 然後另一個人的模塊可以讀取網頁的 同樣包含一個函數read 然後我們就無法同時使用這兩個模塊了 因為PHP不知道你要用哪個函數

但是有一個很簡單的解決方法 那就是命名空間 曾經有人建議PHP 加入這個特性 但不幸得是他沒有這么做 現在 沒有命名空間 每個函數都必須加上模塊名作為前綴 來避免名稱沖突 這導致了函數名恐怖得長 例如xsl_xsltprocessor_transform_to_xml讓代碼難於書寫和理解

不標準的日期格式字元 很多程序員對 日期格式字元 都很熟悉 它是從UNIX和C語言中來的 其他一些編程語言採用了這個標准 但是很奇怪的 PHP有它自己的一套完全不兼容的日期格式字元 在C中 %j 表示一年中的當天 在PHP中他表示一個月中的當天 然而使事情更混亂的是 Smarty (一個很流行的PHP模版引擎)的 strftime 函數和 date_format 函數 卻使用了C/UNIX的格式化字元

混亂的許可證 你也許認為PHP是免費的 所有的在手冊中提到的PHP模塊也是免費的 錯了!例如 如果你想在PHP中生成PDF文件 你會在手冊中發現兩個模塊 PDF 和 ClibPDF 但是這兩個都是有商業許可證的 所以 你所使用的每個模塊 你都要確保你同意他的許可證

不一致的函數命名規則 有些函數名稱是有多個單片語成的 一般有三種單片語合的習慣

直接拼接 getnumberoffiles 用下劃線分開 get_number_of_files 駱駝法則 getNumberOfFiles 大部分語言選擇其中一中 但是PHP都用到了

例如 你想要把一些特殊字元轉換成HTML實體 你會使用函鬧漏數entities (直接拼接單詞) 如果你要使用相反的功能 你要用到它的小弟弟_entity_decode 由於某些特殊的原因 這個函數名是由下劃線分隔單詞 怎麼能這樣呢?你知道有一個函數叫strpad 或者他是str_pad?每次你都要查看一下到底這個符號是什麼或者直接等他出現一個錯誤 函數是不分大小寫的 所以對於PHP來說rawurldecode 和RawUrlDecode之間沒有什麼區別 這也很糟糕 因為兩個都使用到了同時他們看上去還不一樣 混淆了閱讀者

魔法引用的地獄 魔法引用(Magic quote)可以保護PHP腳本免受SQL注入攻擊 這很好 但是出於某些原因 你可以在php ini中關閉這個配置 所以你如果要寫出一個有彈性的腳本 你總要檢查魔法引用是開啟還是關閉 這樣一個 特性 應該讓編程更簡單 而事實上變得更復雜了

缺少標准框架 一個成長中的網站沒有一個整體框架 最終會變成維護的噩夢 一個框架可以讓很多工作變得簡單 現在最流行的框架模型時MVC 模型 在其中表現層 業務邏輯和資料庫訪問都分離開了

很多PHP網站不使用MVC 模型 他們甚至沒有一個框架 甚至現在有一些PHP框架同時你都可以自己寫一個 關於PHP的文章和手冊沒有提高框架的一個字 同時JSP 開發人員使用像Struts的框架 ASP開發人員使用 net 看起來好像這些概念都廣泛被PHP開發人員所了解 這就說明了PHP實際上到底是多專業

總結什麼問題?

對於非常小的項目 它可以是一個十分符合人意的編程語言 但是對於較大的和更為復雜的項目 PHP就顯出他的薄弱了 當你不斷地摸索之後 你會發現筆者提到的某些問題的解決方案 所以 當解決方案已知之後 為什麼不能修正他呢?另外為什麼這些修補不在手冊中提到呢?

一個開源的語言十分流行是一件好事 但不幸得是 它不是一個偉大的語言 筆者希望所有的問題能有一天得到解決(也許在PHP ?) 然後我們就將擁有一個開源語言 他既開源 又好用

到現在 當你要啟動一個多於 個腳本頁面的項目的時候 你最好考慮C#/ASP NET 或者 Java/JSP或者也許python同樣是一個更好的選擇

lishixin/Article/program/PHP/201311/21371

⑸ 電腦培訓分享PHP語言要注意的避免的幾大誤區

第一:PHP程序開發的作用很單一

很多傳聞說PHP的作用很單一,僅僅作用在網站的開發的方面。雖然聽起來很像真的,PHP也確實是網站開發里常用的語言,但這並不代表它的作用很單一,有很多CPU的應用程序都是需要PHP來開發的,PHP的作用很多,也可以用來開發桌面程序,所以這個謠言不可信。


第二:PHP程序開發的過程很慢


有一段時間PHP的代碼很亂,所以PHP的開發過程的速度就相對緩慢了很多。後來出現了很多PHP的框架,速度就可想而知了。不管有多復雜,開發的速度都提高了好幾倍,所以關於PHP的開發過程很慢的這個謠言,也只是針對某個時期。


第三:PHP程序開發的使用人員都很不專業


很多人認為專業的人員是不會用PHP的,他們認為PHP很不專業,用它的人肯定也很LOW。這種說法比較荒謬,PHP的使用還是很廣泛的,一些大型的程序和很多的網路應用都是用PHP來建構的,PHP的使用感受還是很專業的,所以這是說法實在是不可信,也很不專業。


第四:PHP程序開發的性能不好


這個問題也不能說全錯,還是正滑悔要分情況來討論。因為任何事情舉正都有好的和不好的方面,因為PHP會受到很多東西的干擾,例如垃圾的代碼之類的,都會影響PHP的性能。但是如果你的實力夠好,能力夠強的話,這些問題就都不是問題了。因為你可以很扎實穩定的用PHP。


第五:PHP程序開發安全性能不太好


有一部分的人覺得PHP應用很不安全,這種說法也是片面的,因為剛開始的時候學習曲線是很好的選擇,比較容易學會,所以電腦培訓認為作為一個程讓悶序員你就要在使用的這個過程中讓它相對的安全一些,所以這對程序員的要求還是很高的。


⑹ PHP到底有多糟糕

php是web開發第一語言,這已經是坐穩了的事實,因為使用簡單,工具完善,開發效率高等優點為它積聚了大量的粉絲,號稱世界上最好的語言。 然而,就算是世界上最好的語言也有缺陷,下面我挑幾個php語法層面不那麼好用的特性吐槽下。

變數面前的美元($)符號

我想不明白當初php語言的設計師是怎麼想的,為什麼非要在變數名面前加上這個美元符號?每次我書寫變數時必須要按一下shift +4鍵,用其它語言可以很流暢的寫代碼,在php中卻老是被按這個shift打斷整個過程,這除了能給程序員帶來麻煩,我實在看不到有其它一丁點的好處。網上流傳著的說法好像是因為帶美元符號代碼解析起來更容易, 性能更好。但是解釋類型的語言又不只有php ,為什麼其它語言就不用讓程序員打這個討厭的美元符號。每天看著滿屏的美元符號,我口袋裡的錢也沒見多一分呀。

訪問對象成員要使用箭頭符號

明明按一下點號(.)就可以方便快捷的搞定的問題,卻非要使用簡單符號(->)來代替,真的是借我一百個腦袋也想不明白php設計者在設計這個特性是什麼邏輯。難不成是因為php解釋器最終會把php的代碼轉換成c代碼執行,而c中訪問指針的成員就是使用箭頭符號的。如果是這樣那顯然是php的設計者們偷懶了,難到不能在轉換成c執行的過程中多一步將點號轉換為箭頭符號的過程嗎?不要告訴我又是因為性能問題而辦不到,他們就不能為程序員想想?

數組即能當列表也能當字典

寫一個函數,返回一個數組類型,但是在函數的外面,鬼知道這個數組是一個list還是一個map?寫php代碼不知道被這個特性坑過多少回,如果是別人寫的函數, 又沒有注釋,那非得跑進函數里看個明白才知道應該這么樣使用這個函數才是安全的。難到就不能把array拆成兩個獨立的類型分別代表list(列表)和map(字典)嗎?這能為程序提供很大的便利,寫的代碼也更加不會出錯。

匿名函數使用外部變數必須使用use關鍵字導入

這個特性不能說完全沒有優點,對於代碼的可維護性還是能起到正面的作用的,因為這么做能讓我知道我在匿名函數體裡面對於外部會有哪些依賴,讓代碼更可控。然而,這種寫法真的是非常的不方便,每次寫lambda時,要用到外部的變數時,都要使用use導入,把代碼搞的看起來很臃腫,而且,因為其它語言沒這個限制,習慣已經養成,所以每次都會忘記使用use導入,導致代碼出錯,增加排查問題的時間,這真的不是什麼好玩的事。

用include導入文件

當把代碼模塊化時,然後在其它文件中使用,每次都需要使用這個include把文件導入進來,而且還要考慮路徑的問題,在結構復雜的項目中,非常讓人蛋疼。而像Java和Python之類的語言中,代碼管理機制設計的非常好,想用什麼import進來就可以了,根本不用考慮路徑啊,文件名大小寫啊之類的問題,能大大的提升開發效率。雖然,有框架可以解決這類問題,但畢竟是外部實現,使用起來總歸不是那麼順暢。這也算是php一個比較大的毛病了。

總結的這五點算是php中存在問題的典範了,希望php團隊能加把勁,把這些問題在未來的版本中優化掉,讓開發者寫代碼時有更好的體驗,更高的效率,讓世界上最好的語言名副其實

⑺ PHP為什麼說是最好的編程語言

嘗試網路」PHP是最好的語言」,發現指向較多的是那個關於程序員的笑話。 但是如果這個梗來自於這個笑話的話,那麼為什麼在笑話里這個程序員不說C++/python/haskell或者別的什麼語言是最好的而要說PHP是最好的呢?所以感覺似乎最早的出處不在於此。 有人知道嗎?

來看看知乎網友們是怎麼看待這場語言之爭的吧!

網友回答

網友A

「為什麼在笑話里這個程序員不說 C++ / Python / Haskell 或者別的什麼語言是最好的而要說 PHP是最好的呢?」——因為說任何其他語言「最好」都並不好笑啊。

任何掌握超過兩種以上非 PHP 編程語言且具有一定常識的程序員都會本能地意識到 PHP 的問題所在,曾經有一篇匯總性的文章在此: PHP: a fractal of bad design / fuzzy notepad (譯文版可見:五大受損, 全面解析PHP的糟糕設計,但翻譯得很爛),歷陳 PHP 破敗之處,激盪深遠。如果你沒時間去讀那篇長文,那我告訴你一個簡單的例子來說明 PHP 有多匪夷所思:PHP 的核心函數命名很不一致,有 「strptime」這樣類 C 函數的名字,有「nl2br」這樣的簡寫,卻也有「htmlspecialchars」這樣的長名。後來人們發現這種不一致並非偶然,而是當 PHP 還是只有不到一百個函數的小語言的時候,其作者決定用函數名的字元數量——來作為函數的 hash(!)。由於這個愚不可及的決定,PHP 的函數名長度要盡可能地長短有秩、均勻分布,影響一直延續至今。甚至有好事者將上述文中:

You pull out the hammer, but to your dismay, it has the claw part on both sides.這一句嚴肅對待,做了一把 PHP 錘子:

試想你走進五金從業者公會的啤酒館,看到牆上掛著從釘子到電動螺絲刀的各式工具當作陳列品,而你在端詳一陣之後指著其中的這樣一把錘子,說「啊,這是最好的工具」,你覺得酒館里的人會是什麼反應呢?

網友B

因為php和最好的語言幾乎沒有關系。。一般用來諷刺一些沒見過世面,把自己歸屬於某一種編程語言的語言教徒。

事實上每一門語言都有其設計的靈魂,有它的取捨。很難說什麼是最好的。比起做個腦殘粉總是鼓吹自己擅長的語言,不如多學幾門語言,開闊視野。

我們都喜歡分享自己的價值觀。希望被認可,希望有更多同伴。其實這也是在給身邊的人洗腦,這很正常。但有時候自己在某一領域的付出會成為枷鎖。

網友C

Windows 是最好的操作系統!

以上為純吐槽。

我看樓上還有很多還在討論PHP不是最好的語言,還好我不是程序員,只是稍微懂一點代碼,我認為之所以說這個梗,是因為PHP最普及和最流行,大多數不管懂不懂程序都知道或聽說過,所以才能引起共鳴。這就是我上面那句吐槽的含義。

如果上面那句吐槽改為:Ubuntu 是最好的操作系統!(圍觀群眾:What?)

網友D

難道不是這么來的?某女:你能讓這個論壇的人都吵起來,我今晚就跟你走.

某軟體工程師:PHP是最好的語言!

某論壇炸鍋了,各種吵架…

某女:服了你了,我們走吧 你想幹啥都行.

某軟體工程師:今天不行,我一定要說服他們,PHP必須是最好的語言

某女:…….

網友E

編程語言之爭由來已久,

但是php和java確實是最受爭議的。

自從web2.0熱起來後,java逐漸淡出了。

究其原因並不在於語言本身,

而在於用語言的人。

因為php確實簡單,門檻最低,

所以很多並不適合編程的人涌了進來,僅僅為了糊口罷了。

這些人的各種無敵言論自然讓很多專業的人呲之以鼻。

天龍八部里有個星宿派,

雖然在施毒方面有些特長,但門下弟子總的來說武藝平平,

其實江湖武功低微的人多的是,低調便是了,誰又老是盯著你呢?

然而這個新宿派卻偏偏跑出去招搖過市,胡吹本門派武功蓋世,大有傲視天下之勢,

那麼其他門派的人會怎麼看他們呢?

php就是語言江湖的星宿派。

網友F

對我來說PHP 就是最好的語言。它不是炫耀技巧、扯蛋概念的東西。完成任務才是程序員要做的事。沒什麼語言可以高效開發同時高效運行。

相關利益:寫PHP17年。

網友G

作為一個十多年老phper,看到這句話,也會笑。雖然我也會c c++ java go ,並都做有相應產品。 世界上一半以上的網站是php, bat, fb,處處有它。但這些大公司在近些年,都在試圖改造它。淘寶去php改java,網路重寫擴展,fb搞xhp等等。但結局是搞了這么些,這幾大公司卻收效甚微。比之前的性能提升不了太多。在我理解看來,無非是想提高一下b格而已。

在php的初始階段,php是連框架也沒有的。直到今天,php創始人lerdorf仍然反對mvc,因為他覺得影響了性能。在那個年代,同樣的一個應用,做java的待遇比php高一倍。因為php簡單。如果跟你說一個人花了一個星期用php寫了個論壇,跑得也還蠻好,你一點也不要驚訝,後來這個論壇還賣給了阿里。面向過程的php,成就了無數小的站點。

後來是一個框架輩出的階段,phper們終於也有了跟java一樣的mvc,待遇也慢慢接近於java了。大家明白了一件事,大項目,得有點高深的學術內涵才能忽悠的住。opp也更加規范了,你能找到的設計模式,php全都有,於是phper放言:你還敢說php不高級, 不入流? 而實際上,設計模式,真正能用到的就那麼一兩個。對於解析性語言,我只能,呵呵。

歸結一下,php,我覺得更像屌絲逆襲。 然後,笑的人有兩種,一種是屌絲的自嘲,另一種是高富帥的妒忌。

網友H

先說一下php的優點:

跟py相比,它不需要django之類的庫,原生就支持web。小白們不需要配置什麼東西,門檻就低了。而且php的語法是類C的,函數命名大部分也是類C的,大部分碼農在學校或多或少都學過C/C++,接觸php肯定要比py順手。

跟java相比,支持php的主機顯然更多。雲主機興起之前,是個虛擬主機都是lamp,都支持php。而虛擬主機是最便宜的解決方案,也就是說隨便租個虛擬主機就能跑php的網站,成本就低了。

我個人認為沒有什麼最好的語言,只有最合適的語言。php之所以在web2.0的時代異軍突起,擊敗了py,原因跟php坑不坑沒有關系,跟契機有關系,跟他在那個環境下合不合適有關系。把php的流行歸功於什麼最好的語言簡直是胡扯,也是沒動腦子。

網友H

大部分敢於說自己是最好的語言的語言,至少有一部分人是真這么認為的。

比如說C語言最好的,最差最差也有一部分C語言核心開發者有信心這么說。

但是PHP語言是一個連開發者都不敢『聲稱是最好的語言』的語言。

這是不言自明的公設,不需要證明。

小圈子有個笑話。

會不會用PHP是有一個明確判斷標準的:

只有覺得PHP是個爛語言,才有資格說「我會PHP」。

如果你連PHP有多爛都感覺不出來,請別說「我會PHP」「我會編程」。

網友J

因為php算不上一種語言。就好像說「射釘器是世界上最好的武器」一樣。

⑻ PHP的優缺點是什麼

HP應該算是現在大中小非專業網站企業會優先使用的網站建設編程語言,相對於ASP和JSP來說,PHP在在很多方面更適合個人以及小型企業做開發,這主要是因為PHP本身獨特的優勢導致的,那麼下面小編就來為大家盤點PHP得到眾多企業支持的原因。
PHP的優勢包括:

1、開放源代碼

由於PHP開放源代碼,因此基本上可以在網路上找到適合自己的源代碼。

2、免費性

和其它技術相比,PHP本身免費,並且也是開源代碼。

3、快捷性

PHP程序開發快,運行快,技術本身學習快。由於PHP可以被嵌入於HTML語言,新詞相對於其他語言來說編輯簡單,實用性強,更適合初學者。

4、跨平台性強

由於PHP是運行在伺服器端的腳本,因此可以在多種平台上得到應用,包括了UNIX、LINUX、WINDOWS、Mac OS等系統。

5、效率高

PHP由於消耗相當少的系統資源,因此工作效率更高。

6、圖像處理

一般來說,PHP動態創建圖像,而且目前PHP圖像處理默認使用GD2。因此也可以配置為使用image magick進行圖像處理。

7、面向對象

在PHP4,PHP5 中,面向對象方面都做出了很大的改進,因此PHP完全可以用來開發大型商業程序。

8、專業專注

PHP同為類C語言,而且更重要的就是PHP以支持腳本語言為主。

上面介紹的八點內容就是關於PHP被廣大企業使用的優勢,其實PHP相對於其它幾種語言來說,更適合初學者學習和使用,因此想要入門的朋友可以多找一些材料來學習。

⑼ 為什麼說PHP是個集中營

有一天我跟在 DUMBO 的一個非常棒的創業公司的老闆聊天 談到為什麼非PHP界的開發人員普遍輕視PHP和PHP相關社區 他提出了一個觀點讓我印象很深 很大程度上是因為以前從來沒有聽到過這樣的說法

如果你不知道大多數的程序員都會對PHP發什麼樣的牢騷 那麼 這些牢騷差不多會像這樣

語法醜陋

缺乏其它語言都有的一些必要的特徵(在 版本之前 沒有命名空間 閉包)

不一致的函數命名 使用慣例 以及其它一些怪異的東西

過程和面向對象的雜混

基本上 %的PHP項目都爛如一堆狗屎

但他所說的PHP的問題卻是另外一個問題 他並沒有說這種語言有問題——他認為這種語言被一種常見的文化現象包圍著 是一種通常由語言的創造者造就的文化傳統 現在看來這對一些糟糕的編程實踐方法起到了鼓勵作用 也就是它使PHP代碼變的劣質和不可維護

這種一個語言或框架上體現出創始人的哲學思想並被相關社區推崇的現象是的確存在的 他拿出拿慎帶來Ruby和其創始人 Matz 作為例子 Matz想要的是一種易讀易寫 能提高程序員工作效率的語言 沒看見Ruby開發人員們言之必稱快速開發以及這種語言的優雅?

接著就是 DHH 和他的Rails框架 還有 Guido 和他的Python語言 於是我在想 Ra *** us 對於PHP呢?

Ra *** us Lerdorf給人的印象非常的有趣 他創建了最初版的PHP語言 而且一直在改進這種語言 他在PHP社區里被當作神一樣崇拜 他在PHP的任何方面都 享有最大的權威 他被眾多的會議邀請去做演講 同時被大網路公司(yahoo )所僱用 他獲得了所有人的尊敬——盡管有這樣一種事實 他成了大多 數的非PHP程序員所鄙視的PHP上的眾多問題的形象代表

Ra *** us倡導避免使用框架 而把PHP更多的當作一種模板語言 對他來說 這種做法能產生直接的運行效率和可擴展性(程序負載可知) 而對於其 他的所有人來說 這種做法導致了大量的亂燉似的過程式代碼 大量的無法維護的項目 自從 年PHP誕生至今大概 年左右的時間里 所有的PHP項 目都是按照這種指導寫成的

與此同時另外一個問題突然的出現了 在PHP 之前 PHP的初期 PHP獲得了大量的新手的追隨 這種語言的入門門檻出奇的低 任何人都可以 下載自解壓的×AMP Windows程序安裝包 在 兩分鍾內用上這種語言 除此之外 那時在Web開發方式上對MVC模式的共識並沒有真正的出現 這樣一來你可以想像 一群 新手和一個缺乏好的開發實踐方法的語言組合到一起能創造出什麼?一堆無法維護的垃圾 而且整個大環境都是這樣

不要誤解我的話——優秀的PHP開發者還是不少的 即使是當時 但是 就消蘆像我說的 粗製濫造的菜鳥作品到處都是 當牛仔式無羈的PHP程序員在沒有 指導原則的情況下聚集到一起開發程序 於是像PHPbb PHPNuke以及很多的粗糙的 php 程序包就出現了 但是你能單純孝扮的責怪PHP開發人員嗎?不能!其它的Web語言巨人 ASP和Perl 同樣惡 名遠揚 同樣宣傳著一種亂燉式的開發方式

所以這就是為什麼PHP會得到這樣的罵名 是因為它的歷史流傳 大多數已經轉向Python Ruby和Java的PHP開發人員並沒有在MVC概 念興起時回頭去重新思考這種語言 此外 更有一些像」Ruby公子「Zed Shaw抱怨一些程序員的思想」受PHP毒害「這樣的露骨的諷刺 像這樣的言論在 RubyInside 上很盛行

PHP是個集中營

但像Zend和CodeIgniter這樣的框架的出現把這種語言推向了正確的開發方向上 事實上 它把PHP推向了與Ra *** us所希望看到的相反的方向上了 查看一下Zend和CodeIgniter框架 你會發現它們是為數不多的文檔寫的很好 代碼寫的很好的程序

大多數學習了Ruby的開發人員同時都要學習Rails和MVC知識 PHP在此之前已經被使用了整整 年 對於那些新手來說 可惡的Ruby沒 有給他們這段時間讓他們自由發揮 Rails有現成的標准指導 它的入門門檻相對高很多 通常會把一些缺少經驗的開發人員擋在門外

事實上 PHP應用程序是可以向其它種語言那樣寫的很好 而且還會具有一定的運行速度上的優勢 PHP世界裡的MVC風格的開發方法興起只是在近幾年才出現的現象 不得不承認 我們應該感謝Rails帶來的這種變化

那麼 PHP如今是個什麼樣呢?

各種標准(非統一 但大多數項目使用MVC 很少有垃圾般的過程式程序)

很低的入門門檻

速度和可擴展性(在各種腳本語言里PHP應該是最好的)

有一個好的單元測試框架

有最好的各國語言翻譯的文檔

除此之外 互聯網上大多數有影響的網站都使用PHP作為它們後台的語言或工具 諸如Facebook Digg 維基網路 Wordpress Drupal等等 我相信 對PHP有一個深入的掌握會使一個程序員打開更多的未知領域的大門

如果你不贊同上面所說的 請留下評論 或email給我——我想聽聽你為什麼不這么認為

事實上 我並不是一個PHP迷 我對語言沒有感覺 我使用PHP大多是因為——你猜到了——有人願意付錢給我 所以一切歸咎於此

如果你希望在軟體設計上做出明智的決定 PHP是你開發Web應用程序的最佳選擇

lishixin/Article/program/PHP/201311/21122

熱點內容
如何給word文件加密碼 發布:2024-11-02 06:21:10 瀏覽:717
台達模擬量編程 發布:2024-11-02 06:19:41 瀏覽:410
23456解壓 發布:2024-11-02 06:19:40 瀏覽:183
我的世界伺服器個人創造在哪裡 發布:2024-11-02 06:10:36 瀏覽:638
增霸卡的密碼是多少 發布:2024-11-02 06:06:18 瀏覽:813
傳奇天下第一完整腳本 發布:2024-11-02 06:04:03 瀏覽:586
javago性能 發布:2024-11-02 05:51:47 瀏覽:862
國內ip代理伺服器設置方式 發布:2024-11-02 05:42:42 瀏覽:842
線刷包文件夾 發布:2024-11-02 05:35:35 瀏覽:626
銀行家演算法的安全性演算法 發布:2024-11-02 05:20:15 瀏覽:598