導航:首頁 > 編程語言 > php5新特性

php5新特性

發布時間:2022-10-04 13:43:39

php語言是什麼語言

PHP,一個嵌套的縮寫名稱,是英文超級文本預處理語言(PHP:Hypertext Preprocessor)的縮寫。PHP 是一種HTML內嵌式的語言,PHP與微軟的ASP頗有幾分相似,都是一種在伺服器端執行的嵌入HTML文檔的腳本語言,語言的風格有類似於C語言,現在被很多的網站編程人員廣泛的運用。PHP 獨特的語法混合了 C、java、Perl 以及 PHP 自創新的語法。它可以比 CGI 或者 Perl 更快速的執行動態網頁。用PHP做出的動態頁面與其他的編程語言相比,PHP是將程序嵌入到HTML文檔中去執行,執行效率比完全生成HTML標記的CGI要高許多;與同樣是嵌入HTML文檔的腳本語言JavaScript相比,PHP在伺服器端執行,充分利用了伺服器的性能;PHP執行引擎還會將用戶經常訪問的PHP程序駐留在內存中,其他用戶在一次訪問這個程序時就不需要重新編譯程序了,只要直接執行內存中的代碼就可以了,這也是PHP高效率的體現之一。PHP具有非常強大的功能,所有的CGI或者JavaScript的功能PHP都能實現,而且支持幾乎所有流行的資料庫以及操作系統。
PHP 最初是1994年Rasmus Lerdorf創建的,剛剛開始只是一個簡單的用Perl語言編寫的程序,用來統計他自己網站的訪問者。後來又用C語言重新編寫,包括可以訪問資料庫。在1995年以Personal Home Page Tools (PHP Tools) 開始對外發表第一個版本,Lerdorf寫了一些介紹此程序的文檔,並且發布了PHP1.0。在這早期的版本中,提供了訪客留言本、訪客計數器等簡單的功能。以後越來越多的網站使用了PHP,並且強烈要且增加一些特性,比如循環語句和數組變數等等,在新的成員加入開發行列之後,在1995年中,PHP2.0發布了。第二版定名為PHP/FI(Form Interpreter)。PHP/FI加入了對mSQL的支持,從此建立了PHP在動態網頁開發上的地位。到了1996年底,有15000個網站使用 PHP/FI;時間到了1997年中,使用PHP/FI的網站數字超過五萬個。而在1997年中,開始了第三版的開發計劃,開發小組加入了 Zeev Suraski 及 Andi Gutmans,而第三版就定名為PHP3。2000年,PHP4.0又問世了,其中增加了許多新的特性。
PHP的特性包括以下幾點:
開放的源代碼:所有的PHP源代碼事實上都可以得到。
PHP是免費的。
基於伺服器端:由於PHP是運行在伺服器端的腳本,可以運行在UNIX、linux、WINDOWS下。
嵌入HTML:因為PHP可以嵌入HTML語言,所以學習起來並不困難。
簡單的語言:PHP堅持腳本語言為主,與Java以C++不同。
效率高:PHP消耗相當少的系統資源。
圖像處理:用PHP動態創建圖像
PHP 3與PHP 4的比較
PHP3跟Apache伺服器緊密結合的特性;加上它不斷的更新及加入新的功能;而且幾乎支持所有主流與非主流資料庫;再以它能高速的執行效率,使得PHP在1999年中的使用站點已經超過了150000萬。加上它的源代碼完全公開,在 Open Source意識抬頭的今天,它更是這方面的中流砥柱。不斷地有新的函數庫加入,以及不停地更新的活力,使得PHP無論在UNIX、LINUX或是Windows的平台上都可以有更多新的功能。它提供豐富的函數,使得在程序設計方面有著更好的支持。
PHP4.0整個腳本程序的核心大幅更動,讓程序的執行速度,滿足更快的要求。在最佳化之後的效率,已較傳統CGI或者ASP等程序有更好的表現。而且還有更強的新功能、更豐富的函數庫。無論您接不接受,PHP 都將在 Web CGI 的領域上,掀起巔覆性的革命。對於一位專業的Web Master 而言,它將也是必修課程之一。
PHP 4.0是更有效的,更可靠的動態Web頁開發工具,在大多數情況運行比 PHP 3.0要快,其腳本描述更強大並且更復雜, 最顯著的特徵是速率比的增加。PHP4.0這些優異的性能是PHP 腳本引擎重新設計產生的結果:引擎由 AndiGutmans 和 Zeev Suraski從底層全面重寫。PHP4.0 腳本引擎 --Zend 引擎,使用了一種更有效的編譯--執行方式, 而不是PHP 3.0 採用的執行 --當解析時模型。
PHP4在3.0版的基礎上增加或增強了許多有用的特徵,主要如下:
(1)別名:在PHP4中,可以利用引用為變數賦值,這給編程帶來了很大的靈活性。
(2)擴充了API 模塊:PHP 4.0 為擴展的 API 模塊的提供了擴展PHP介面模塊, 它比舊的 API 版本顯著地快。 PHP 模塊已有的及最常用的介面多數被轉換到使用這個擴展的介面。
(3)自動資源釋放:PHP4增加了引用計數功能,這種新技術的引入使PHP4具有了自動內存管理功能,減輕了開發人員的負擔。
(4)布爾類型:PHP 4.0 支持布爾類型。
(5)進程生成:在 UNIX 環境下的 PHP 4.0 提供了一個很智能和通用的生成進程, 使用了一種名為基於automake/libtool的系統生成技術。
(6)COM/DCOM 支持:PHP 4.0 提供 COM/DCOM 支持 ( 僅用於Windows 環境 ) 可以無縫地存取和訪問 COM 對象。
(7)與PHP 3.0 兼容性很好:PHP 4.0 是與 PHP 3.0 代碼向後兼容性接近100% 。由於 PHP 4 的改進的體系結構,兩者有一些細微的差別,但是大多數人將可能永遠不可能遇上這種情況。
PHP介紹
(8)配置:PHP4重新設計和增強了PHP。ini文件,這使得用PHP。ini來配置PHP顯得極為容易,這個文件可以在運行時被Apache(unix系統)或由Windows 注冊(Windows 環境)。
(9)加密支持:PHP4實現了完整的加密, 這些加密功能是一個完整的mycrypt庫,並且 PHP 4.0 支持哈希函數。Blowfish,TripleDES,MD5,並且SHA1 也是可使用的一些加密演算法
(10)類型檢查:PHP 4.0 支持同一操作符用於評類型檢查:===( 3 等號運算符 ), 為在兩個值和其類型之間作檢查。例如, 3 ===3 將視為假 ( 類型是不同的 ), 而 3 ==3 ( 相等判斷 ) 將視為真。
(11)FTP 支持:PHP 4.0 支持 FTP 。通常, 你會為通過一個數據機連接下載一個大文件提供一個介面。然而, 如果你確實有需要,可以使用PHP 。
(12)PHP4新增函數或功能增強函數:PHP 4.0 新增了許多函數,同時也將許多現有的函數功能進行了增強,以下是一些例子。 array_count_values() eval() foreach() nclude() ob_end_clean() ob_end_flush() ob_get_contents() ob_start() strip_tags() unset()
(13)here列印:PHP 4.0 的Here列印是與Perl類似的, 盡管完全不相同。Here是列印大容量文章的一個有用的方法,例如在 HTML文件中,不會漏掉任何一個字元,例如目錄標記。
(14)HTTP Session fallback 系統:為 HTTP Session管理的一個 fallback 系統在 PHP 4.0被實現 。預設情況下,Session標識符由cookies存儲。如果沒有cookies支持或一項cookies任務失敗,Session標識符自動被創建並在 URL 的查詢字元串中被攜帶。
(15)ISAPI 支持:PHP 4.0 能作為一個個性化的 ISAPI 模塊作為 IIS插件 。這比 PHP 3.0 更有效, 它作為一個外部的程序來運行。
(16)內存:PHP 4.0 能更有效的使用內存, 導致較少的內存佔用消耗,這主要歸功於引用計數技術的實現。
(17)其他類成員函數:在 PHP 4.0 你能在成員函數本身的作用域或全局范圍內調用其他類的成員函數。例如,你能用一個子函數覆蓋父函數,並在子函數中調用父函數。
(18)多維數組:在 PHP 4.0 ,利用GET,POST, Cookies的進行的數據傳輸支持多維數組。
(19)個性化的 HTTP Session支持:HTTP Session處理, 包括 fallback 系統管理,在 PHP 4.0被它的新庫函數實現 。在版本 3.0 中處理Session要求使用 PHPLIB 和第三方的庫函數, 它比把Session直接地由 PHP 支持慢了許多。
(20)個性化的 Java 支持:PHP 4.0 支持和java的交互。這種個性化的Java 支持為PHP 在 Java 對象上創建和使用方法提供一個簡單並且有效的工具。
21)對象和數嵌套組:PHP 4.0 實現了功能更加強大的對象, 移去了 PHP 3.0存在的種種句法限制。對象能在數組以內被嵌套並且反過來也如此, 可以根據你的需要實現嵌套。
(22)面向對象的編程:PHP 4.0 為面向對象的編程和構造類及對象提供擴展的功能和新特徵。PHP4實現了對象重載,引用技術等新技術。
(23)對象重載支持:對象重載語法允許第三方的基於面向對象的類庫使用 PHP4 的面向對象的特徵存取他們自身的功能。使用這個特徵的一個 COM 模塊已經被實現了。
(24)輸出緩沖支持:PHP 提供了一個輸出緩沖函數集合。輸出緩沖支持允許你寫包裹函數功能壓縮緩沖區。在 PHP4 的輸出緩沖支持允許 HTML 頭信息存放, 無論 HTML的正文是否輸出。頭信息( (header(), content type, and cookies ) 不採用緩沖 。
(25)增加了PCRE 庫:PHP 4.0 包括一個 Perl 兼容的正則表達式 (PCRE ) 庫, 和正常regex庫一起與 PHP 綁定。split 和replace PCRE 功能被支持。PCRE 和 Perl 正規表達式之間有一些細微差別。
(26)PHP.ini 文件:PHP.ini文件在 PHP4.0 被重新設計, 使用的 PHP 的配置PHP.ini是更容易並且更有效的。全部文件能被Apache 在運行時間操作 ( 在 Apache環境 下 ) 或由 Windows 注冊表 ( 在 Windows 下面 ) 。被加入PHP.ini文件的配置指令自動地在所有相關的模塊中被支持。
(27)引用計數:PHP 4.0 為系統中的每個數值提供了引用計數, 包括資源。一旦一個資源不再被任何變數引用,它自動地被釋放以節省內存資源。利用這個特徵的最明顯的例子一個內置SQL查詢的循環語句。在PHP 3.0中 ,每次遞歸另外的 SQL 結果集合重復申請內存,直到腳本執行完畢,這些結果集合佔用的內存才被釋放。
(28)支持引用:通過引用可以改變一個變數的值。
(29)函數的運行時綁定:PHP 4.0 的運行時間綁定功能允許你在他們被聲明以前調用, 無論聲明是否在代碼以後或是在運行時間。
(30)類的運行時信息:PHP 4.0 支持在運行時刻存取下列類信息:一個對象的類名,一個對象的父類的類名字,以及對象函數所在的名字。
(31)伺服器抽象層:為支持Web伺服器提供了增強型 SAPI ( 伺服器 API ) 介面,是 PHP 4。0 不可分的一部分。這個伺服器抽象層,提供了通用的WEB伺服器介面支持,支持多線程WEB伺服器,為大多數的WEB伺服器提供透明的支持, 這些伺服器包括 Apache ,IIS ( ISAPI ), 以及 AOL 伺服器。
----------------------------------------------------------------------------------------------------------------------------
PHP5新特性: 更加面向對象化的PHP
PHP 5 引入了新的對象模型(Object Model)。完全重寫了 PHP 處理對象的方式,允許更佳性能和更多特性。
PHP處理對象部分的內核完全重新開發過,提供更多功能的同時也提高了性能。在以前版本的php中,處理對象和處理基本類型(數字,字元串)的方式是一樣的。這種方式的缺陷是:當將對象賦值給一個變數時,或者通過參數傳遞對象時,對象將被完全拷貝一份。在新的版本里,上述操作將傳遞引用(可以把引用理解成對象的標識符),而非值。

❷ php語言是什麼語言

PHP開發班
課程:MySQL資料庫的創建、修改及刪除;數據表的創建、修改及刪除;無限分類的數據表設計;記錄的插入、更新、刪除及查找;外鍵與連接;索引;存儲過程,觸發器,游標;事務處理;資料庫引擎詳解;資料庫集群,資料庫讀寫分離、類與對象,類的定義;屬性與方法;$this關鍵字、 self關鍵字;繼承,多態;魔術方法;抽象類與介面;設計模式;PDO類;JpGraph圖表,FusionCharts圖表;PHP高級應用(Smarty模板、PHP框架技術)等。

❸ 請問PHP4,5,6的發展過程

從php3到目前還是主流的php4再到PHP5,再到未來的PHP6,PHP越來越完善,功能也更強大。跨平台的使用特性將使它在linux平台大放異彩。可以直接使用java的類庫,可以直接調用perl/c等語言寫的程序增強了它的可擴展性。越來越成熟的MVC開發框架使它能適應企業級的大型應用開發。再加上它天生強大的資料庫支持能力。

PHP是目前世界上使用率最高的網頁開發語言,在開發語言排行榜(TIOBE)排名第5,僅次於Java、C、C++和Visual Basic。法國PHP/MySQL入口網站Nexen.net調查全世界近1,090萬台網頁伺服器(2007年6月),使用PHP的網站比例高達 33.88 %,遠超過第2高的ASP(20.94%)網站。在全部使用PHP的網站中,還有8成網頁採用PHP 4。未來這8成近300萬個網站,需在1年內升級至PHP 5,否則一旦出現新的安全漏洞,就會面臨無人支持,需自行解決的窘境。

在PHP 5迎來3周歲生日、PHP 6提上開發日程的今天,PHP.net宣布,PHP 4將在今年底開始結束自己的歷史使命。

PHP開發團隊宣布,在2007年12月31日之後,PHP 4.4將停止更新和升級,只會根據具體情況發布關鍵性的安全補丁,而到2008年8月8日之後,也就是北京奧運會開幕的時候,PHP 4將徹底完結。

PHP開發團隊指出,PHP 5在PHP 4的基礎上進行了大量改進,目前已經非常快速、穩定,最新版本PHP 5.2.3。為了幫助PHP 4用戶在今年下半年盡快轉向PHP 5,PHP官方還發布了一份遷移指導。

PHP 4推出於2000年,在網站建設中得到了廣泛應用,在PHP各個發行版本中的使用率高達80%左右,而PHP 5才10%多點,因此終結PHP 4的壽命不亞於微軟砍掉Windows 9x,必將經歷一個漫長而痛苦卻又無法避免的過程。

❹ php 5.2.8不支持mysqli擴展庫嗎

mysqli.dll是PHP對mysql新特性的一個擴展支持。在PHP5中可以在php.ini中載入
mysql後面的i,指improved, interface, ingenious, incompatible or incomplete(改擴展仍在開發中,因為MYSQL4。1和MYSQL5都沒有正式推出尚在開發中,新的特性沒有完全實現)

mysqli想實現的目標具體有:

-更簡單的維護
-更好的兼容性
-向後兼容

mysql(指PHP中的模塊)發展到現在顯得比較凌亂,有必要重新做下整理。同時,有必要跟上MYSQL(DBMS)的發展步伐,加入新的特性的支持,以及適應MYSQL(DBMS)以後的版本。所以誕生了mysqli.dll

mysqli.dll的特性:

-可以和mysql.dll一樣的方式使用
-支持OO介面,簡簡單單調用
-支持MYSQL4。1引入的新特性
-通過mysqli_init() 等相關函數,可以設置高級連接選項

❺ thinkphp 5版本帶來了哪些新特性,哪些變化

  1. TP5實現了惰性載入class

  2. web的入口文件位置該為在public目錄下面了

  3. 速度更快,兼容PHP7

  4. 文檔上說是專為API介面而生

❻ php5.3與5.3以下版本的區別

Namespaces
php 5.3最大的改動,毫無疑問就是Namespaces(此前有一篇相關的PHP Namespaces FAQ)。這給php開發人員帶來的好處不少,廣為人們所詬病的函數命名問題也得到了解決。代碼更清晰
5.3之前常見的代碼,需要自定義前綴區分函數和類名PLAIN TEXTCODE:function MY_wrapper() {}
class MY_DB { }
define('MY_CONN_STR', '');
MY_wrapper();
new MY_DB();
MY_CONN_STR;
使用名稱空間之後,代碼看上去更加clean。PLAIN TEXTCODE:namespace MY;
function wrapper() {}
class DB { }
const CONN_STR = '';
use MY AS MY;
wrapper();
new DB();
CONN_STR;
一個文件中定義了多個namespace
如果一個文件中定義了多個namespace,應該怎樣處理?PLAIN TEXTCODE:namespace LIB;
class MySQL {}
class SQLite {}
$b = new SQLite();
namespace LIB_EXTRA;
class MScrypt {}
$a = new MScrypt();
var_mp(
get_class($a),
get_class($b)
);
以上代碼輸出為:PLAIN TEXTCODE:string(18)"LIB_EXTRA::MScrypt"
string(11)"LIB::SQLite"
php是解釋執行的語言,以上結果合情合理。namespace的優先順序
namespace中定義的函數,類和常量優先,其次才是全局的。PLAIN TEXTCODE:namespace foo;
function strlen($foo) { return htmlentities($foo); }
echo strlen("test"); // test
echo ::strlen("test"); // 4
echo namespace::strlen("test"); // test
namespace和autoload的友情
autoload會根據namespace名稱以及class名稱來解析類文件位置
僅當namespace和全局范圍都沒找到class定義的情況下,autoload才會被觸發
在namespace中定義的__autoload不會被自動調用
PLAIN TEXT

CODE:
function __autoload($var) { var_mp($var); } // LIB::foo
require "./ns.php"; /*
<?php
namespace LIB;
new foo();
*/
namespace一些輔料
PLAIN TEXTCODE:namespace really::long::pointlessly::verbose::ns;
__NAMESPACE__; // 新增的魔法常量,表示當前namespace名稱
class a{}
get_class(new a()); // really::long::pointlessly::verbose::ns::a
use really::long::pointlessly::verbose::ns::a AS b;// 從名稱空間中引用一個類
註:這里的內容節選自pdfIntroction to PHP 5.3 Slides,後文不再復述。性能提升
php 5.3的總體性能提升了5 - 15%md5()快了10-15%
Better stack implementation in the engine
Constants移到read-only內存里
exception處理過程改進(簡化,opcodes更少)
(require/include)_once改進,去掉重復open
Smaller binary size & startup size with gcc4
新語言特性__DIR__
在5.3以前,為了獲得當前腳本的目錄,需要一次函數調用PLAIN TEXTCODE:echo dirname(__FILE__); // < PHP 5.3
在5.3,只需要一個魔術常量__DIR__就解決了。PLAIN TEXTCODE:echo __DIR__; // >= PHP 5.3
?:操作符
便捷的?:操作符,可以從兩個值/表達式中快速取得非空值。PLAIN TEXTCODE:$a = true ?: false; // true
$a = false ?: true; // true
$a = "" ?: 1; // 1
$a = 0 ?: 2; // 2
$a = array() ?: array(1); // array(1);
$a = strlen("") ?: strlen("a"); // 1
__callStatic()
新增了魔術方法__callStatic,功能和__call類似,但是僅對static方法有效。PLAIN TEXTCODE:class helper {
static function __callStatic($name, $args) {
echo $name.'('.implode(',', $args).')';
}
}
helper::test("foo","bar"); // test(foo,bar)
動態調用static方法
動態的調用靜態方法?動靜結合。PLAIN TEXTCODE:class helper {
static function foo() { echo __METHOD__; }
}
$a = "helper";
$b = "foo";
$a::$b(); // helper::foo
Late Static Binding
不知道怎麼譯,可能留個原文更容易理解。靜態方法的事件處理時機有變化,以前是在編譯期處理,現在是執行期間處理。在php 5.3之前,下面的代碼會輸出一個A,但是這不是咱們要的,whoami方法已經在class B中重新定義,它本該輸出B才符合咱們想當然的思維。PLAIN TEXTCODE:class A {
public static function whoami() {
echo __CLASS__;
}
public static function identity() {
self::whoami();
}
}
class B extends A {
public static function whoami() {
echo __CLASS__;
}
}
B::identity(); // A <-- PHP <5.3
下面代碼中使用了static::whoami()來調用靜態方法。php 5.3之後,由於__CLASS__是在執行期被處理,那麼這個例子中能順利抓到class B。PLAIN TEXTCODE:class A {
public static function whoami() {
echo __CLASS__;
}
public static function identity() {
static::whoami();
}
}
class B extends A {
public static function whoami() {
echo __CLASS__;
}
}
B::identity(); // B <-->= PHP 5.3
mysqlnd
見mysqlnd成為php 5.3中的默認mysql驅動但是PDO_MySQL暫時還不支持mysqlnd,目前只有mysql(i)擴展可以用到之前介紹的php 5.3的新特性,都是方便開發人員的東東。下面介紹個很討虛擬主機提供商喜歡的特性。增強的ini文件支持
CGI/ FastCGI支持類似.htaccess的INI配置
每個目錄下都可以有INI設置,ini的文件名取決於php.ini的配置,但是[PATH=/var/www/domain.com], [HOST=www.domain.com]段落的設置用戶不能修改。
增強的error handling
允許在ini文件中定義變數和常量,可以在程序中直接調用。
附上一段ini文件的例子PLAIN TEXTCODE:#用戶自定義的php.ini文件名(.htaccess). 默認是".user.ini"
user_ini.filename=".user.ini"

#如果要禁用這個特性,設置為空值即可
user_ini.filename=

#用戶自定義的php.ini文件TTL時長(time-to-live),單位為秒,我理解為緩存過期時間。默認為300秒
user_ini.cache_ttl=300

[PATH=/var/www/domain.com]
variables_order = GPC
safe_mode =1

[my variables]
somevar = 「1234」
anothervar = ${somevar}; anothervar == somevar

[ini arrays]
foo[bar]=1
foo[123]=2
foo[]=3

❼ PHP進階教程

多做實例。記住,編程這個東西一定要多動手。有些事情你明白不去做,你很快會忘記。有些錯誤你犯了一次記憶就很深。所以編程是講經驗的。要不人家公司招人為什麼需要有經驗的。有時候一個小錯誤你一新人能忙一個下午,人家幾分鍾就找出問題。。。。

閱讀全文

與php5新特性相關的資料

熱點內容
加好友伺服器繁忙是怎麼回事 瀏覽:379
怎麼解綁app的支付寶賬號 瀏覽:911
ip地址伺服器不可用怎麼解決方法 瀏覽:183
為什麼軟體需要伺服器 瀏覽:63
redis操作命令大全 瀏覽:597
python字元串重復索引 瀏覽:961
為什麼香信新版本連接不上伺服器 瀏覽:50
元旦程序員打羽毛球 瀏覽:614
otc焊接機器人離線編程教學 瀏覽:412
51單片機的ea引腳有何用途 瀏覽:207
centos查看用戶命令 瀏覽:840
程序員臉胖 瀏覽:744
hdfs在主目錄下創建文件夾 瀏覽:800
股票選股器源碼公式如何弄 瀏覽:31
伺服器如何使用在微信上 瀏覽:328
app登不了是怎麼回事 瀏覽:254
dd命令u盤 瀏覽:570
單片機生日快樂程序 瀏覽:893
安卓手機連車載的叫什麼 瀏覽:223
怎麼讓自己的手機鍵盤變得好看app 瀏覽:53