php的優缺點

2021-07-23 04:52:10 字數 2252 閱讀 6520

1. 跨平台,效能優越,跟linux/unix結合別跟windows結合效能強45%,並且和很多免費的平台結合非常省錢,支援n種資料庫。(n >= 10)

2. 語法簡單,如果有學習c和perl的很容易上手,並且跟asp有部分類似。有成熟的開發工具,

3. 目前主流技術都支援,比如webservice、ajax、xml等等,足夠應用。

4. 有比較完整的支援,比如使用adodb或者pear::db做資料庫抽象層,用smarty或者smart template做模板層,如果是php 5.1的話,還能夠使用pdo(php data object)來訪問資料庫。

5. 有很多成熟的框架,比如支援mvc的框架:phpmvc,支援類似asp.net的事件驅動的框架:prado,支援類似ruby on rails的快速開發的框架:cake等等,足夠滿足你的應用需求。

6. php 5已經有成熟的物件導向體系,能夠適應基本的物件導向要求。

7. 有成熟的社群來支援php的開發,比如國內的csdn,喜悅國際村等等。

1. 對遞迴的不良支援

遞迴是一種函式呼叫自身的機制。這是一種強大的特性可以把某些複雜的東西變得很簡單。有乙個使用遞迴的例子是快速排序(quicksort)。不幸的是,php並不擅長遞迴。這是乙個不好的現象,每乙個程式語言都應該提供良好的遞迴支援。

2. 許多php模組都不是執行緒安全的

在幾年前,apache發布了web伺服器的2.0版。這個版本支援多執行緒模式,在這個模式下,軟體乙個一部分可以同時執行多個。php的發明者說php的核心是執行緒安全的,但是非核心模組不一定是。但是十次有九次,你想要在php指令碼中使用這種模組,但這又使你的指令碼不能合適apache的多執行緒模式。這也是為什麼php小組不推薦在apache 2 的多執行緒模式下執行php。不良的多執行緒模式支援使php常被認為是apache 2依然不流行的原因之一。

3. php 由於商業原因而不健全

通過使用快取,php的效能可以陡增500%[見基準測試]。那麼為什麼快取沒有被構建在php中呢?因為zend——php的製造者,它在銷售自己的zend accelerator,所以當然,他們不想拋棄自己的商業產品這塊肥肉。但是有另乙個可選擇的: apc. (zend後來推出zend optimizer,免費的加速器——譯者)

4. 沒有命名空間

設想某個人製作了乙個php模組用來閱讀檔案。模組中乙個函式叫做read。然後另乙個人的模組可以讀取網頁的,同樣包含乙個函式read。然後我們就無法同時使用這兩個模組了,因為php不知道你要用哪個函式。但是有乙個很簡單的解決方法,那就是命名空間。曾經有人建議php5加入這個特性,但不幸得是他沒有這麼做。

5. 不標準的日期格式字元

很多程式設計師對 日期格式字元 都很熟悉,它是從unix和c語言中來的。其他一些程式語言採用了這個標準,但是很奇怪的,php有它自己的一套完全不相容的日期格式字元。在c中,「%j」表示一年中的當天,在php中他表示乙個月中的當天。然而使事情更混亂的是:smarty (乙個很流行的php模版引擎)的 strftime 函式和 date_format 函式,卻使用了c/unix的格式化字元。

6. 混亂的許可證

你也許認為php是免費的,所有的在手冊中提到的php模組也是免費的。錯了!例如,如果你想在php中生成pdf檔案,你會在手冊中發現兩個模組:pdf 和 clibpdf。但是這兩個都是有商業許可證的。所以,你所使用的每個模組,你都要確保你同意他的許可證。

7. 不一致的函式命名規則

有些函式名稱是有多個單詞組成的。一般有三種單詞組合的習慣:

直接拼接:getnumberoffiles 

用下劃線分開:get_number_of_files 

駱駝法則:getnumberoffiles 

大部分語言選擇其中一中。但是php都用到了。

8. 魔法引用的地獄

魔法引用(magic quote)可以保護php指令碼免受sql注入攻擊。這很好。但是出於某些原因,你可以在php.ini中關閉這個配置。所以你如果要寫出乙個有彈性的指令碼,你總要檢查魔法引用是開啟還是關閉。這樣乙個「特性」應該讓程式設計更簡單,而事實上變得更複雜了。

9. 缺少標準框架

乙個成長中的**沒有乙個整體框架,最終會變成維護的噩夢。乙個框架可以讓很多任務作變得簡單。現在最流行的框架模型時mvc-模型,在其中表現層、業務邏輯和資料庫訪問都分離開了。

很多php**不使用mvc-模型。他們甚至沒有乙個框架。甚至現在有一些php框架同時你都可以自己寫乙個,關於php的文章和手冊沒有提高框架的乙個字。同時jsp-開發人員使用像struts的框架、asp開發人員使用.net,看起來好像這些概念都廣泛被php開發人員所了解。這就說明了php實際上到底是多專業。

剛構橋的優缺點 橋梁的優缺點

梁式橋 主梁為主要承重構件,受力特點為主梁受彎。主要材料為鋼筋混凝土 預應力混凝土,多用於中小跨徑橋梁。簡支梁橋合理最大跨徑約 公尺,懸臂梁橋與連續梁橋合宜的最大跨徑約 60 70 公尺。優點 採用鋼筋砼建造的梁橋能就地取材 工業化施工 耐久性好 適應性強 整體性好且 美觀 這種橋型在設計理論及施工...

演算法的優缺點 邏輯回歸演算法的優缺點

邏輯回歸演算法是最經典的幾個機器學習演算法之一,本文對它的優點,缺點進行總結。sigmoid函式 表示式如下 1.實現簡單,廣泛的應用於工業問題上 2.分類時計算量非常小,速度很快,儲存資源低 3.便利的觀測樣本概率分數 4.對邏輯回歸而言,多重共線性並不是問題,它可以結合l2正則化來解決該問題 5...

Struts的優缺點

struts是開源軟體,使開發者能更深入的了解其內部實現機制。struts 優點 業界 標準 很多成功案例 學習資源豐富。struts的優點主要集中體現在兩個方面 taglib和頁面導航。a 利用struts提供的taglib可以大大節約開發時間。b 維護擴充套件比較方便。通過乙個配置檔案,即可把握...