<output id="r87xx"></output>
    1. 
      
      <mark id="r87xx"><thead id="r87xx"><input id="r87xx"></input></thead></mark>
        •   

               當(dāng)前位置:首頁>軟件介紹>PHP基礎(chǔ)學(xué)習(xí) 查詢:
               
          PHP基礎(chǔ)學(xué)習(xí)

                  1、PHP前言返回首頁

                  PHP一個嵌套的縮寫名稱,是英文超級文本預(yù)處理語言(PHP:Hypertext Preprocessor)的縮寫。PHP 是一種 HTML 內(nèi)嵌式的語言,是一種在服務(wù)器端執(zhí)行

                  的嵌入HTML文檔的腳本語言,語言的風(fēng)格有類似于C語言,現(xiàn)在被很多的網(wǎng)站編程人員廣泛的運(yùn)用。PHP 獨(dú)特的語法混合了 C、Java、Perl 以及 PHP 自創(chuàng)新的語法。它可以比 CGI 或者 Perl 更快速的執(zhí)行動態(tài)網(wǎng)頁。用PHP做出的動態(tài)頁面與其他的編程語言相比,PHP是將程序嵌入到HTML文檔中去執(zhí)行,執(zhí)行效率比完全生成HTML標(biāo)記的CGI要高許多;與同樣是嵌入HTML文檔的腳本語言JavaScript相比,PHP在服務(wù)器端執(zhí)行,充分利用了服務(wù)器的性能;PHP執(zhí)行引擎還會將用戶經(jīng)常訪問的PHP程序駐留在內(nèi)存中,其他用戶再一次訪問這個程序時就不需要重新編譯程序了,只要直接執(zhí)行內(nèi)存中的代碼就可以了,這也是PHP高效率的體現(xiàn)之一。

                  PHP具有非常強(qiáng)大的功能,所有的CGI或者JavaScript的功能PHP都能實(shí)現(xiàn),而且支持幾乎所有流行的數(shù)據(jù)庫以及操作系統(tǒng)。

                  PHP 最初是1994年Rasmus Lerdorf創(chuàng)建的,剛剛開始只是一個簡單的用Perl語言編寫的程序,用來統(tǒng)計(jì)他自己網(wǎng)站的訪問者。后來又用C語言重新編寫,包括可以訪問數(shù)據(jù)庫。在1995年以Personal Home Page Tools (PHP Tools) 開始對外發(fā)表第一個版本,Lerdorf寫了一些介紹此程序的文檔,并且發(fā)布了PHP1.0。在這早期的版本中,提供了訪客留言本、訪客計(jì)數(shù)器等簡單的功能。以后越來越多的網(wǎng)站使用了PHP,并且強(qiáng)烈要求增加一些特性,比如循環(huán)語句和數(shù)組變量等等,在新的成員加入開發(fā)行列之后,在1995年中,PHP2.0發(fā)布了。第二版定名為PHP/FI(Form Interpreter)。PHP/FI加入了對mSQL的支持,從此建立了PHP在動態(tài)網(wǎng)頁開發(fā)上的地位。到了1996年底,有15000個網(wǎng)站使用 PHP/FI;時間到了1997年中,使用PHP/FI的網(wǎng)站數(shù)字超過五萬個。而在1997年中,開始了第三版的開發(fā)計(jì)劃,開發(fā)小組加入了 Zeev Suraski 及 Andi Gutmans,而第三版就定名為PHP3。2000年,PHP4.0又問世了,其中增加了許多新的特性。

                  2、PHP的特性

                  PHP的特性包括:

                  開放的源代碼:所有的PHP源代碼事實(shí)上都可以得到。

                  PHP是免費(fèi)的。

                  php的便捷性 : php十分便捷,學(xué)習(xí)簡單

                  基于服務(wù)器端:由于PHP是運(yùn)行在服務(wù)器端的腳本,可以運(yùn)行在UNIX、LINUX、WINDOWS下。

                  嵌入HTML:因?yàn)镻HP可以嵌入HTML語言,所以學(xué)習(xí)起來并不困難。

                  簡單的語言:PHP堅(jiān)持腳本語言為主,與Java和C++不同。

                  效率高:PHP消耗相當(dāng)少的系統(tǒng)資源。

                  圖像處理:用PHP動態(tài)創(chuàng)建圖像

                  面向?qū)ο瘢涸趐hp4,php5 中,面向?qū)ο蠓矫娑加辛撕艽蟮母倪M(jìn),現(xiàn)在php完全可以用來開發(fā)大型商業(yè)程序。

                  PHP 相對于其他語言,編輯簡單,實(shí)用性強(qiáng),更適合初學(xué)者。

                  3、PHP 3與PHP 4

                  【PHP3】

                  PHP3跟Apache服務(wù)器緊密結(jié)合的特性;加上它不斷的更新及加入新的功能;

                  而且?guī)缀踔С炙兄髁髋c非主流數(shù)據(jù)庫;再以它能高速的執(zhí)行效率,使得PHP在1999年中的使用站點(diǎn)已經(jīng)超過了150000萬。加上它的源代碼完全公開,在 Open Source意識抬頭的今天,它更是這方面的中流砥柱。不斷地有新的函數(shù)庫加入,以及不停地更新的活力,使得PHP無論在UNIX、LINUX或是Windows的平臺上都可以有更多新的功能。它提供豐富的函數(shù),使得在程序設(shè)計(jì)方面有著更好的支持。

                  【PHP4】

                  PHP4.0整個腳本程序的核心大幅更動,讓程序的執(zhí)行速度,滿足更快的要求。

                  在最佳化之后的效率,已較傳統(tǒng)CGI或者ASP等程序有更好的表現(xiàn)。而且還有更強(qiáng)的新功能、更豐富的函數(shù)庫。無論您接不接受,PHP 都將在 Web CGI 的領(lǐng)域上,掀起巔覆性的革命。對于一位專業(yè)的Web Master 而言,它將也是必修課程之一。

                  PHP 4.0是更有效的,更可靠的動態(tài)Web頁開發(fā)工具,在大多數(shù)情況運(yùn)行比 PHP 3.0要快,其腳本描述更強(qiáng)大并且更復(fù)雜, 最顯著的特征是速率比的增加。PHP4.0這些優(yōu)異的性能是PHP 腳本引擎重新設(shè)計(jì)產(chǎn)生的結(jié)果:引擎由 AndiGutmans 和 Zeev Suraski從底層全面重寫。PHP4.0 腳本引擎 ——Zend 引擎,使用了一種更有效的編譯——執(zhí)行方式, 而不是PHP 3.0 采用的執(zhí)行 ——當(dāng)解析時模型。

                  4、PHP4的優(yōu)越性

                  PHP4在3.0版的基礎(chǔ)上增加或增強(qiáng)了許多有用的特征,主要如下:

                  (1)別名:在PHP4中,可以利用引用為變量賦值,這給編程帶來了很大的靈

                  活性。

                  (2)擴(kuò)充了API 模塊:PHP 4.0 為擴(kuò)展的 API 模塊的提供了擴(kuò)展PHP接口模塊, 它比舊的 API 版本顯著地快。 PHP 模塊已有的及最常用的接口多數(shù)被轉(zhuǎn)換到使用這個擴(kuò)展的接口。

                  (3)自動資源釋放:PHP4增加了引用計(jì)數(shù)功能,這種新技術(shù)的引入使PHP4具有了自動內(nèi)存管理功能,減輕了開發(fā)人員的負(fù)擔(dān)。

                  (4)布爾類型:PHP 4.0 支持布爾類型。

                  (5)進(jìn)程生成:在 UNIX 環(huán)境下的 PHP 4.0 提供了一個很智能和通用的生成

                  進(jìn)程, 使用了一種名為基于automake/libtool的系統(tǒng)生成技術(shù)。

                  (6)COM/DCOM 支持:PHP 4.0 提供 COM/DCOM 支持 ( 僅用于Windows 環(huán)境 ) 可以無縫地存取和訪問 COM 對象。

                  (7)與PHP 3.0 兼容性很好:PHP 4.0 是與 PHP 3.0 代碼向后兼容性接近100% 。由于 PHP 4 的改進(jìn)的體系結(jié)構(gòu),兩者有一些細(xì)微的差別,但是大多數(shù)人將可能永遠(yuǎn)不可能遇上這種情況。

                  (8)配置:PHP4重新設(shè)計(jì)和增強(qiáng)了PHP.ini文件,這使得用PHP.ini來配置PHP顯得極為容易,這個文件可以在運(yùn)行時被Apache(unix系統(tǒng))或由Windows 注冊(Windows 環(huán)境)。

                  (9)加密支持:PHP4實(shí)現(xiàn)了完整的加密, 這些加密功能是一個完整的mycrypt庫,并且 PHP 4.0 支持哈希函數(shù)。Blowfish,TripleDES,MD5,并且SHA1 也是可使用的一些加密算法。

                  (10)類型檢查:PHP 4.0 支持同一操作符用于評類型檢查:===( 3 等號運(yùn)算符 ), 為在兩個值和其類型之間作檢查。例如, 3 ===3 將視為假 ( 類型是不同的 ), 而 3 ==3 ( 相等判斷 ) 將視為真。

                  (11)FTP 支持:PHP 4.0 支持 FTP 。通常, 你會為通過一個調(diào)制解調(diào)器連接下載一個大文件提供一個接口。然而, 如果你確實(shí)有需要,可以使用PHP 。

                  (12)PHP4新增函數(shù)或功能增強(qiáng)函數(shù):PHP 4.0 新增了許多函數(shù),同時也將許多現(xiàn)有的函數(shù)功能進(jìn)行了增強(qiáng),以下是一些例子。

                  array_count_values() eval() foreach() nclude() ob_end_clean() ob_end_flush() ob_get_contents() ob_start() strip_tags() unset()

                  (13)here打?。篜HP 4.0 的Here打印是與Perl類似的, 盡管完全不相同。Here是打印大容量文章的一個有用的方法,例如在 HTML文件中,不會漏掉任何一個字符,例如目錄標(biāo)記。

                  (14)HTTP Session fallback 系統(tǒng):為 HTTP Session管理的一個 fallback 系統(tǒng)在 PHP 4.0被實(shí)現(xiàn) 。缺省情況下,Session標(biāo)識符由cookies存儲。如果沒有cookies支持或一項(xiàng)cookies任務(wù)失敗,Session標(biāo)識符自動被創(chuàng)建并在 URL 的查詢字符串中被攜帶。

                  (15)ISAPI 支持:PHP 4.0 能作為一個個性化的 ISAPI 模塊作為 IIS插件 。這比 PHP 3.0 更有效, 它作為一個外部的程序來運(yùn)行。

                  (16)內(nèi)存:PHP 4.0 能更有效的使用內(nèi)存, 導(dǎo)致較少的內(nèi)存占用消耗,這主要?dú)w功于引用計(jì)數(shù)技術(shù)的實(shí)現(xiàn)。

                  (17)其他類成員函數(shù):在 PHP 4.0 你能在成員函數(shù)本身的作用域或全局范圍內(nèi)調(diào)用其他類的成員函數(shù)。例如,你能用一個子函數(shù)覆蓋父函數(shù),并在子函數(shù)中調(diào)用父函數(shù)。

                  (18)多維數(shù)組:在 PHP 4.0 ,利用GET,POST,Cookies的進(jìn)行的數(shù)據(jù)傳輸支持多維數(shù)組。

                  (19)個性化的 HTTP Session支持:HTTP Session處理, 包括 fallback 系統(tǒng)管理,在 PHP 4.0被它的新庫函數(shù)實(shí)現(xiàn) 。在版本 3.0 中處理Session要求使用 PHPLIB 和第三方的庫函數(shù), 它比把Session直接地由 PHP 支持慢了許多。

                  (20)個性化的 Java 支持:PHP 4.0 支持和java的交互。這種個性化的Java 支持為PHP 在 Java 對象上創(chuàng)建和使用方法提供一個簡單并且有效的工具。

                  21)對象和數(shù)嵌套組:PHP 4.0 實(shí)現(xiàn)了功能更加強(qiáng)大的對象, 移去了 PHP 3.0存在的種種句法限制。對象能在數(shù)組以內(nèi)被嵌套并且反過來也如此, 可以根據(jù)你的需要實(shí)現(xiàn)嵌套。

                  (22)面向?qū)ο蟮木幊蹋篜HP 4.0 為面向?qū)ο蟮木幊毯蜆?gòu)造類及對象提供擴(kuò)展的功能和新特征。PHP4實(shí)現(xiàn)了對象重載,引用技術(shù)等新技術(shù)。

                  (23)對象重載支持:對象重載語法允許第三方的基于面向?qū)ο蟮念悗焓褂?PHP4 的面向?qū)ο蟮奶卣鞔嫒∷麄冏陨淼墓δ?。使用這個特征的一個 COM 模塊已經(jīng)被實(shí)現(xiàn)了。

                  (24)輸出緩沖支持:PHP 提供了一個輸出緩沖函數(shù)集合。輸出緩沖支持允許

                  你寫包裹函數(shù)功能壓縮緩沖區(qū)。在 PHP4 的輸出緩沖支持允許 HTML 頭信息存放, 無論 HTML的正文是否輸出。頭信息( (header(), content type, and cookies ) 不采用緩沖 。

                  (25)增加了PCRE 庫:PHP 4.0 包括一個 Perl 兼容的正則表達(dá)式 (PCRE ) 庫, 和正常regex庫一起與 PHP 綁定。split 和replace PCRE 功能被支持。PCRE 和 Perl 正規(guī)表達(dá)式之間有一些細(xì)微差別。

                  (26)PHP.ini 文件:PHP.ini文件在 PHP4.0 被重新設(shè)計(jì), 使用的 PHP 的配置PHP.ini是更容易并且更有效的。全部文件能被Apache 在運(yùn)行時間操作 ( 在 Apache環(huán)境 下 ) 或由 Windows 注冊表 ( 在 Windows 下面 ) 。被加入PHP.ini文件的配置指令自動地在所有相關(guān)的模塊中被支持。

                  (27)引用計(jì)數(shù):PHP 4.0 為系統(tǒng)中的每個數(shù)值提供了引用計(jì)數(shù), 包括資源。一旦一個資源不再被任何變量引用,它自動地被釋放以節(jié)省內(nèi)存資源。利用這個特征的最明顯的例子一個內(nèi)置SQL查詢的循環(huán)語句。在PHP 3.0中 ,每次遞歸另外的 SQL 結(jié)果集合重復(fù)申請內(nèi)存,直到腳本執(zhí)行完畢,這些結(jié)果集合占用的內(nèi)存才被釋放。

                  (28)支持引用:通過引用可以改變一個變量的值。

                  (29)函數(shù)的運(yùn)行時綁定:PHP 4.0 的運(yùn)行時間綁定功能允許你在他們被聲明以前調(diào)用, 無論聲明是否在代碼以后或是在運(yùn)行時間。

                  (30)類的運(yùn)行時信息:PHP 4.0 支持在運(yùn)行時刻存取下列類信息:一個對象

                  的類名,一個對象的父類的類名字,以及對象函數(shù)所在的名字。

                  (31)服務(wù)器抽象層:為支持Web服務(wù)器提供了增強(qiáng)型 SAPI ( 服務(wù)器 API ) 接口,是 PHP 4。0 不可分的一部分。這個服務(wù)器抽象層,提供了通用的WEB服務(wù)器接口支持,支持多線程WEB服務(wù)器,為大多數(shù)的WEB服務(wù)器提供透明的支持, 這些服務(wù)器包括 Apache ,IIS ( ISAPI ), 以及 AOL 服務(wù)器。

                  (32)語法的點(diǎn)亮顯示:PHP 4.0 語法的點(diǎn)亮顯示允許開發(fā)者看見源代碼而不是腳本, 這個功能比PHP 3。0中的更有效。它跑得更快,更執(zhí)行得更好,并且產(chǎn)生更緊湊的HTML代碼。

                  (33)由引用改變變量的值:PHP 4.0 由引用支持可變的賦值, ―關(guān)聯(lián)‖的2個變量之中個的任何一個的值被改變,另外的變量的值同樣被改變,這類似與C中的指針類型。

                  (34)在引用字符串中的變量引用:PHP 4.0 增強(qiáng)了在引用字符串中的變量引

                  用。

                  5、數(shù)據(jù)庫方面

                  PHP 在數(shù)據(jù)庫方面的豐富支持,也是它迅速走紅的原因之一,它支持下列的數(shù)據(jù)庫或是數(shù)據(jù)文件:

                   Adabas D

                   DBA

                   dBase

                   dbm

                   filePro

                   Informix

                   InterBase

                   mSQL

                   Microsoft SQL Server

                   MySQL

                   Solid

                   Sybase

                   ODBC

                   Oracle 8

                   Oracle

                   PostgreSQL

                  而在 Internet 上它也支持了相當(dāng)多的通訊協(xié)議 (protocol),包括了與電子郵件相關(guān)的 IMAP, POP3;網(wǎng)管系統(tǒng) SNMP;網(wǎng)絡(luò)新聞 NNTP;帳號共用 NIS;全球信息網(wǎng) HTTP 及 Apache 服務(wù)器;目錄協(xié)議 LDAP 以及其它網(wǎng)絡(luò)的相關(guān)函數(shù)。

                  除此之外,用 PHP 寫出來的 Web 后端 CGI 程序,可以很輕易的移植到不同的操作系統(tǒng)上。例如,先以 Linux 架的網(wǎng)站,在系統(tǒng)負(fù)荷過高時,可以快速地將整

                  個系統(tǒng)移到 SUN 工作站上,不用重新編譯 CGI 程序。面對快速發(fā)展的 Internet,

                  這是長期規(guī)劃的最好選擇。

                  變數(shù)類型:

                  PHP有好多種變數(shù); 主要有這些:

                  - 數(shù)字 (integer - 例: 32)

                  - 布爾值 (boolean - 例: TRUE)

                  - 字串 (string - 例: 'a string of text')

                  - NULL

                  - 資源(resource)

                  - 數(shù)組 (array - 例: arrayname[2])

                  -對象(object)

                  語法:

                  語法有三種:

                  //comment

                  /* comment */

                  # comment

                  基本的 "Control Structures":

                  * if ... else

                  if (condition == true) ;

                  * if ... else then

                  if (condition == true)

                  else if (condition2 == true) ;

                  一個PHP實(shí)例:

                  <html>

                  <head>

                  <title>First program</title>

                  </head>

                  <body>

                  <php

                  echo "hello world";

                  >

                  </body>

                  </html>

                  請看:

                  php官方網(wǎng)站:www.php.net

                  php對面向?qū)ο蟮闹С?/p>

                  面向?qū)ο缶幊痰母拍睿?/p>

                  不同的作者之間說法可能不一樣,但是一個OOP語言必須有以下幾方面:

                  抽象數(shù)據(jù)類型和信息封裝繼承多態(tài)

                  在PHP中是通過類來完成封裝的: <php

                  class Something {

                  // 在OOP類中,通常第一個字符為大寫 var $x;

                  function setX($v) {

                  // 方法開始為小寫單詞,然后使用大寫字母來分隔單詞,例如getValueOfArea()

                  $this->x=$v;

                  }

                  function getX() {

                  return $this->x;

                  }

                  }

                  當(dāng)然你可以按自己的喜好進(jìn)行定義,但最好保持一種標(biāo)準(zhǔn),這樣會更有效。數(shù)

                  據(jù)成員在類中使用"var"聲明來定義,在給數(shù)據(jù)成員賦值之前,它們是沒有類型的。

                  一個數(shù)據(jù)成員可以是一個整數(shù),一個數(shù)組,一個相關(guān)數(shù)組(associative array)或者是一個對象。方法在類中被定義成函數(shù)形式,在方法中訪問類成員變量時,你應(yīng)該使用

                  $this->name,否則對一個方法來說,它只能是局部變量。

                  使用new操作符來創(chuàng)建一個對象:

                  $obj=new Something;

                  然后你可以使用成員函數(shù)通過:

                  $obj->setX(5);

                  $see=$obj->getX();

                  在這個例子中,setX成員函數(shù)將5賦值給對象的成員變量x(不是類的),然后getX返回它的值5??梢韵螅?obj->x=6那樣通過類引用方式來存取數(shù)據(jù)成員,這不是一個很好的OOP習(xí)慣。我強(qiáng)烈建議通過方法來存取成員變量。如果你把成員變量看成是不可處理的,并且只通過對象句柄來使用方法,你將是一個好的OOP程序員。不幸的是,PHP不支持聲明私有成員變量,所以不良代碼在PHP中也是允許的。繼承在PHP中很容易實(shí)現(xiàn),只要使用extend關(guān)鍵字。

                  <php

                  class Another extends Something {

                  var $y;

                  function setY($v) {

                  $this->y=$v;

                  }

                  function getY() {

                  return $this->y;

                  }

                  }

                  "Another"類的對象現(xiàn)在擁有了父類(Something)的全部的數(shù)據(jù)成員及方法,而且還加上了自己的數(shù)據(jù)成員和方法。

                  你可以使用

                  $obj2=new Something;

                  $obj2->setX(6);

                  $obj2->setY(7);

                  PHP現(xiàn)在還不支持多重繼承,所以你不能從兩個或兩個以上類派生出新的類來。

                  你可以在派生類中重定義一個方法,如果我們在"Another"類中重定義了getX方法,我們就不能使 用"Something"中的getX方法了。如果你在派生類中聲明了一個與基派同名的數(shù)據(jù)成員,那么當(dāng)你處理它時, 它將―隱藏‖基類的數(shù)據(jù)成員。 你可以在你的類中定義構(gòu)造函數(shù)。構(gòu)造函數(shù)是一個與類名同名的方法,當(dāng)你創(chuàng)建一個類的對象時會被調(diào)用,例如:

                  <php

                  class Something {

                  var $x;

                  function Something($y) {

                  $this->x=$y;

                  }

                  function setX($v) {

                  $this->x=$v;

                  }

                  function getX() {

                  return $this->x;

                  }

                  }

                  所以你可以創(chuàng)建一個對象,通過:

                  $obj=new Something(6);

                  構(gòu)造函數(shù)會自動地把6賦值給數(shù)據(jù)變量x。構(gòu)造函數(shù)和方法都是普通的PHP函數(shù),所以你可以使用缺省參數(shù)。

                  function Something($x="3",$y="5")

                  接著:

                  $obj=new Something(); // x=3 and y=5

                  $obj=new Something(8); // x=8 and y=5

                  $obj=new Something(8,9); // x=8 and y=9

                  缺省參數(shù)使用C++的方式,所以你不能忽略Y的值,而給X一個缺省參數(shù),參

                  數(shù)是從左到右賦值的,如果傳入的參數(shù)少于要求的參數(shù)時,其作的將使用缺省參數(shù)。

                  當(dāng)一個派生類的對象被創(chuàng)建時,只有它的構(gòu)造函數(shù)被調(diào)用,父類的構(gòu)造函數(shù)沒被調(diào)用,如果你想調(diào)用基類的構(gòu)造函數(shù),你必須要在派生類的構(gòu)造函數(shù)中顯示調(diào)用。

                  可以這樣做是因?yàn)樵谂缮愔兴懈割惖姆椒ǘ际强捎玫摹?/p>

                  <php

                  function Another() {

                  $this->y=5;

                  $this->Something();

                  //顯示調(diào)用基類構(gòu)造函數(shù)

                  }

                  OOP的一個很好的機(jī)制是使用抽象類。抽象類是不能實(shí)例化,只能提供給派生

                  類一個接口。設(shè)計(jì)者通常使用抽象類來強(qiáng)迫程序員從基類派生,這樣可以確保新的類包含一些期待的功能。在PHP中沒有標(biāo)準(zhǔn)的方法,但是:如果你需要這個特性,可以通過定義基類,并在它的構(gòu)造函數(shù)后加上"die" 的調(diào)用,這樣就可以保證基類是不可實(shí)例化的,現(xiàn)在在每一個方法(接口)后面加上"die" 語句,所以,如果一個程序員在派生類中沒有覆蓋方法,將引發(fā)一個錯誤。而且因?yàn)镻HP 是無類型的,你可能需要確認(rèn)一個對象是來自于你的基類的派生類,那么在基類中增加一個方法來實(shí)義類的身份(返回某種標(biāo)識id),并且在你接收到一個對象參數(shù)時校驗(yàn)這個值。當(dāng)然,如果一個邪惡不好的程序員在派生類中覆蓋了這個方法,這種方法就不起作用了,不過一般問題多發(fā)現(xiàn)在懶惰的程序員身上,而不是邪惡的程序員。 當(dāng)然,能夠讓基類對程序員無法看到是很好的,只要將接口打印出來做他們的工作就可以了。在PHP中沒有析構(gòu)函數(shù)。 重載(與覆蓋不同)在PHP中不支持。在OOP中,你可以重載一個方法來實(shí)現(xiàn)兩個或重多的方法具有相同的名字,但是有不同數(shù)量或類型的參數(shù)(這要看語言)。PHP 是一種松散類型的語言,所以通過類型重載不起作用,然而通過參數(shù)的個數(shù)不同來重載也不起作用。

                  有時在OOP中重載構(gòu)造函數(shù)非常好,這樣你可以通過不同的方法創(chuàng)建對象(傳

                  遞不同數(shù)量的參數(shù))。在PHP中實(shí)現(xiàn)它的技巧是:

                  <php

                  class Myclass {

                  function Myclass() {

                  $name="Myclass".func_num_args();

                  $this->$name();

                  //注意$this->name()一般是錯誤的,但是在這里$name是一個將被調(diào)用方法的名字

                  }

                  function Myclass1($x) {

                  code;

                  }

                  function Myclass2($x,$y) {

                  code;

                  }

                  }

                  通過在類中的額外的處理,使用這個類對用戶是透明的:

                  $obj1=new Myclass('1'); //將調(diào)用Myclass1

                  $obj2=new Myclass('1','2'); //將調(diào)用Myclass2

                  有時這個非常好用。

                  6、PHP多態(tài)

                  多態(tài)是對象的一種能力,它可以在運(yùn)行時刻根據(jù)傳遞的對象參數(shù),決定調(diào)用哪

                  一個對象的方法。例如,如果你有一個figure的類,它定義了一個draw的方法。并且派生了circle和rectangle 類,在派生類中你覆蓋了draw方法,你可能還有一個函數(shù),它希望使用一個參數(shù)x,并且可以調(diào)用$x->draw() 。如果你有多態(tài)性,調(diào)用哪個draw方法就依賴于你傳遞給這個函數(shù)的對象類型。

                  多態(tài)性在象PHP這樣的解釋語言(想象一下一個C++編譯器生成這樣的代碼,你應(yīng)該調(diào)用哪一個方法?你也不知道你擁有的對象是什么類型的,好,這不是重點(diǎn))是非常容易和自然的。所以PHP當(dāng)然支持多態(tài)性。

                  <php

                  function niceDrawing($x) { //假設(shè)這是Board類的一個方法

                  $x->draw();

                  }

                  $obj=new Circle(3,187);

                  $obj2=new Rectangle(4,5);

                  $board->niceDrawing($obj);

                  //將調(diào)用Circle的draw方法

                  $board->niceDrawing($obj2);

                  //將調(diào)用Rectangle的draw方法

                  用PHP進(jìn)行面向?qū)ο缶幊?/p>

                  一些"純化論者(purists)"可能會說PHP不是一個真正的面向?qū)ο蟮恼Z言,這是事實(shí)。PHP 是一個混合型語言,你可以使用OOP,也可以使用傳統(tǒng)的過程化編程。然而,對于大型項(xiàng)目,你可能想/需要在PHP 中使用純的OOP去聲明類,而且在你的項(xiàng)目只用對象和類。

                  隨著項(xiàng)目越來越大,使用OOP可能會有幫助,OOP代碼很容易維護(hù),容易理解和重用。這些就是軟件工程的基礎(chǔ)。在基于web的項(xiàng)目中應(yīng)用這些概念就成為將來網(wǎng)站成功的關(guān)鍵。

                  7、PHP的高級OOP技術(shù)

                  在看過基本的OOP概念后,我就可以向你展示更高級的技術(shù):

                  序列化(Serializing)

                  PHP不支持永久對象,在OOP中永久對象是可以在多個應(yīng)用的引用中保持狀態(tài)和功能的對象,這意味著擁有將對象保存到一個文件或數(shù)據(jù)庫中的能力,而且可

                  以在以后裝入對象。這就是所謂的序列化機(jī)制。PHP 擁有序列化方法,它可以通過對象進(jìn)行調(diào)用,序列化方法可以返回對象的字符串表示。然而,序列化只保存了對象的成員數(shù)據(jù)而不包話方法。

                  在PHP4中,如果你將對象序列化到字符串$s中,然后釋放對象,接著反序列化對象到$obj,你可以繼續(xù)使用對象的方法!我不建議這樣去做,因?yàn)?/p>

                  (a)文檔中沒有保證這種行為在以后的版本中仍然可以使用。

                  (b) 這個可能導(dǎo)致一種誤解,在你把一個序列化后的版本保存到磁盤并退出腳本時。當(dāng)以后運(yùn)行這個腳本時,你不能期待著在反序列化一個對象時,對象的方法也會在那里,因?yàn)樽址硎靖揪筒话ǚ椒ā?/p>

                  總而言之,PHP 進(jìn)行序列化對于保存對象的成員變量非常有用。(你也可以將相關(guān)數(shù)組和數(shù)組序列化到一個文件中)。

                  例子 :

                  <php

                  $obj=new Classfoo();

                  $str=serialize($obj);

                  //保存$str到磁盤上

                  //幾個月以后

                  //從磁盤中裝入str

                  $obj2=unserialize($str)

                  你恢復(fù)了成員數(shù)據(jù),但是不包括方法(根據(jù)文檔所說)。這導(dǎo)致了只能通過類似于使用$obj2->x來存取成員變量(你沒有別的方法!)的唯一辦法,所以不要在家里試它。

                  有一些辦法可以解決這個問題,我把它留著,因?yàn)閷@篇簡潔的文章來說,他們太不好。我會很高興地歡迎在PHP的后續(xù)版本中有全序列化的特性。

                  使用類進(jìn)行數(shù)據(jù)存儲PHP和OOP一件非常好的事情就是,你可以很容易地定義一個類來操作某件事情,并且無論何時你想用的時候都可以調(diào)用相應(yīng)的類。假設(shè)你有一個HTML表單,用戶可以通過選擇產(chǎn)品ID號來選擇一個產(chǎn)品。在數(shù)據(jù)庫中有產(chǎn)品的信息,你想把產(chǎn)品顯示出來,顯示它的價格等等。你擁有不同類型的產(chǎn)品,并且同一個動作可能對不同的產(chǎn)品具有不同的意思。例如,顯示一個聲音可能意味著播放它,但是對于其它種類的產(chǎn)品可能意味著顯示一個存在數(shù)據(jù)庫中的圖片。你可以使用OOP或PHP來減少編碼并提高質(zhì)量:

                  定義一個產(chǎn)品的類,定義它應(yīng)該有的方法(例如:顯示),然后定義對每一種類型的產(chǎn)品的類,從產(chǎn)品類派后出來(SoundItem類,ViewableItem類,等等),覆蓋在產(chǎn)品類中的方法,使它們按你的想法動作。

                  根據(jù)數(shù)據(jù)庫中每一種產(chǎn)品的類型(type)字段給類命名,一個典型的產(chǎn)品表可能有(id, type, price, description, 等等字段)...然后在處理腳本中,你可以從數(shù)據(jù)庫中取出type值,然后實(shí)例化一個名為type的對象:

                  <php

                  $obj=new $type();

                  $obj->action();

                  這是PHP的一個非常好的特性,你可以不用考慮對象的類型,調(diào)用$obj的顯示方法或其它的方法。使用這個技術(shù),你不需要修改腳本去增加一個新類型的對象,只是增加一個處理它的類。

                  這個功能很強(qiáng)大,只要定義方法,而不去考慮所有對象的類型,在不同的類中按不同的方法實(shí)現(xiàn)它們,然后在主腳本中對任意對象使用它們,沒有if...else,也不需要兩個程序員,只有高興。

                  現(xiàn)在你同意編程是容易的,維護(hù)是便宜的,可重用是真的嗎? 如果你管理一組程序員,分配工作就是很簡單的了,每個人可能負(fù)責(zé)一個類型的對象和處理它的類。

                  可以通過這個技術(shù)實(shí)現(xiàn)國際化,根據(jù)用戶所選的語言字段應(yīng)用相應(yīng)的類就可以了,等等。

                  拷貝和克隆

                  當(dāng)你創(chuàng)建一個$obj的對象時,你可以通過$obj2=$obj來拷貝對象,新的對象是$obj的一個拷貝(不是一個引用),所以它具有$obj在當(dāng)時的狀態(tài)。有時候,你不想這樣,你只是想生成一個象obj類一樣的一個新的對象,可以通過使用new語句來調(diào)用類的構(gòu)造函數(shù)。在PHP中也可以通過序列化,和一個基類來實(shí)現(xiàn),但所有的其它類都要從基類派生出來。

                  進(jìn)入危險(xiǎn)區(qū)域

                  當(dāng)你序列化一個對象,你會得到某種格式的字符串,如果你感興趣,你可以調(diào)究它,其中,字符串中有類的名字(太好了!),你可以把它取出來,象:

                  <php

                  $herring=serialize($obj);

                  $vec=explode(':',$herring);

                  $nam=str_replace(""",'',$vec[2]);

                  所以假設(shè)你創(chuàng)建了一個"Universe"的類,并且強(qiáng)制所有的類都必須從universe擴(kuò)展,你可以在universe 中定義一個clone的方法,如下:

                  <php

                  class Universe {

                  function clone() {

                  $herring=serialize($this);

                  $vec=explode(':',$herring);

                  $nam=str_replace(""",'',$vec[2]);

                  $ret=new $nam;

                  return $ret;

                  }

                  }

                  //然后 $obj=new Something();

                  //從Universe擴(kuò)展

                  $other=$obj->clone();

                  你所得到的是一個新的Something類的對象,它同使用new方法,調(diào)用構(gòu)造函數(shù)創(chuàng)建出的對象一樣。我不知道這個對你是否有用,但是Universe類可以知道派生類的名字是一個好的經(jīng)驗(yàn)。想象是唯一的限制。

                  <php echo date("Y-m-d H:i:s");>這個語句就是寫入當(dāng)前的時間。 8、PHP的發(fā)展 PHP 原本的簡稱為 Personal Home Page,是Rasmus Lerdorf 為了要維護(hù)個人網(wǎng)頁,而用c語言開發(fā)的一些CGI工具程序集,來取代原先使用的 Perl 程序。最初這些工具程序用來顯示 Rasmus Lerdorf 的個人履歷,以及統(tǒng)計(jì)網(wǎng)頁流量。他將這些程序和一些表單直譯器整合起來,稱為 PHP/FI。PHP/FI 可以和數(shù)據(jù)庫連接,產(chǎn)生簡單的動態(tài)網(wǎng)頁程序。Rasmus Lerdorf 在1995年6月8日將 PHP/FI 公開釋出,希望可以透過社群來加速程序開發(fā)與尋找錯誤。這個釋出的版本命名為 PHP 2,已經(jīng)有今日 PHP 的一些雛型,像是類似 Perl 的變量命名方式、表單處理功能、以及嵌入到 HTML 中執(zhí)行的能力。程序語法上也類似 Perl,有較多的限制,不過更簡單、更有彈性。

                  在1997年,任職于 Technion IIT 公司的兩個以色列程序設(shè)計(jì)師:Zeev Suraski 和 Andi Gutmans,重寫了 PHP 的剖析器,成為 PHP 3 的基礎(chǔ),而 PHP 也在這個時候改稱為PHP: Hypertext Preprocessor.[5]。經(jīng)過幾個月測試,開發(fā)團(tuán)隊(duì)在1997年11月釋出了 PHP/FI 2,隨后就開始 PHP 3 的開放測試,最后在1998年6月正式釋出 PHP 3。Zeev Suraski 和 Andi Gutmans 在 PHP 3 釋出后開始改寫 PHP 的核心,這個在1999年釋出的剖析器稱為 Zend Engine[7],他們也在以色列的 Ramat Gan 成立了 Zend Technologies 來管理 PHP 的開發(fā)。

                  在2000年5月22日,以Zend Engine 1.0為基礎(chǔ)的PHP 4正式釋出,2004年7月13日則釋出了PHP 5,PHP 5則使用了第二代的Zend Engine[5]。PHP包含了許多新特色,像是強(qiáng)化的面向?qū)ο蠊δ?、引入PDO(PHP Data Objects,一個存取數(shù)據(jù)庫的延伸函數(shù)庫)、以及許多效能上的增強(qiáng)。目前PHP 4已經(jīng)不會繼續(xù)更新,以鼓勵用戶轉(zhuǎn)移到PHP 5。

                  2008年P(guān)HP 5成為了PHP唯一的有在開發(fā)的PHP版本。將來的PHP 5.3將會加入Late static binding和一些其他的功能強(qiáng)化。PHP 6 的開發(fā)也正在進(jìn)行中,主要的改進(jìn)有移除register_globals、magic quotes 和 Safe mode的功能。

                  php的最新版本是5.2.6(2008-05-03更新)

                  php的官方網(wǎng)站:

                  PHP:PHP是一種開放源代碼的腳本編程語言。主要用于Web服務(wù)器的服務(wù)器端應(yīng)用程序,用于動態(tài)網(wǎng)頁設(shè)計(jì),是一種嵌入HTML頁面中的腳本語言。

                  php的在Windows 下 PHP 環(huán)境的配置

                  一. 所需軟件環(huán)境:

                  1. apache 2.2.4

                  2. active perl 5.10 必須安裝在 c:perl

                  3. php 5.2.6 必須安在 c:php

                  4. ZendOptimizer—3.3.0

                  二 apache 2.2.4--------httpd.conf 文件配置

                  1. 第133行前面加 #

                  2. 修改<IfModule alias_module> </IfModule> 之間

                  ScriptAlias /cgi-bin/ "D:/Programmes/Server/Apache2.2/cgi-bin/"及

                  <Directory "D:/Programmes/Server/Apache2.2/cgi-bin">及劃線部分分別改為 C:/php/ 和 C:/php

                  3. 將 #!c:/program files/perl/perl 改為 #!C:/Perl/bin 4. 在文件末尾添加

                  ScriptAlias /php/ "c:/php/"

                  AddType application/x-httpd-php .php

                  # For PHP 4

                  #Action application/x-httpd-php "/php/php.exe"

                  # For PHP 5

                  Action application/x-httpd-php "/php/php-cgi.exe"

                  5 查找 DirectoryIndex index.html

                  修改成

                  DirectoryIndex index.html index.html.var index.php

                  這樣index.php 可以充當(dāng)默認(rèn)頁面了

                  6 Apache中模塊化安裝php

                  查找 # LoadModule foo_module modules/mod_foo.so

                  在此行后加入一行

                  LoadModule php5_module C:/php5/php5apache2_2.dll

                  (其中C:/php/php5apache2_2.dll是你安裝php的相應(yīng)路徑.

                  注意不要把php5apache2_2.dll,php5apache2.dll和php5apache.dll混

                  淆.php5apache.dll只適用于apache 版本1的.

                  PHP5壓縮包里的php5apache2.dll只適用于apache2.0.*版本,如果是2.2.*以上版本,必須使用php5apache2_2.dll.否則就可能會出現(xiàn)

                  "Cannot load C:/php/php5apache2.dll into server: The specified module could not be found."

                  或者:

                  "The requested operation has failed"

                  的情況.關(guān)于這個問題的解決方法可以參考本論壇的

                  不過php5apache2_2.dll出來之后也就沒有多少參考價值了)

                  7 查找 AddType application/x-gzip .gz .tgz

                  在此行后加入一行

                  AddType application/x-httpd-php .php

                  這樣apache就可以解釋php文件了

                  到這里配置基本完成了

                  三. PHP 的安裝

                  由于php是一個zip文件(非install版),安裝較為簡單

                  解壓就行.把解壓的 php-5.2.1-Win32 重命名為 php5.并復(fù)制到C盤目錄下.即安裝路徑為 c:php

                  1 找到php目錄下的 php.ini.recommended (或者php.ini-dist)文件,重命名為 php.ini 并復(fù)制到系統(tǒng)盤的windows目錄下(以c:windows為例).

                  2 再把php目錄下的php5ts.dll,libmysql.dll復(fù)制到目錄 c:windowssystem32下.

                  3 把phpext目錄下的php_gd2.dll,php_mysql.dll,php_mbstring.dll文件復(fù)制到c:windowssystem32下

                  注意:不要把 php_mysql.dll 和 php_mssql.dll 混淆

                  如果沒有加載 php_gd2.dll php將不能處理圖像.沒有加載php_mysql.dll php將不支持mysql函數(shù)庫

                  php_mbstring.dll在后面使用phpmyadmin時支持寬字符 配置php并關(guān)聯(lián)MySQL

                  1 設(shè)置擴(kuò)展路徑

                  查找 extension_dir 有這么一行

                  extension_dir = "./"

                  將此行改成

                  extension_dir = "C:phpext"

                  其中C:php是你安裝php的路徑.路徑不正確將無法加載dll (注意:有些php版本是 ;extension_dir = "./" 要把前面的分號去掉)

                  2 分別查找

                  ;extension=php_mbstring.dll

                  ;extension=php_gd2.dll

                  ;extension=php_mysql.dll

                  把上面3項(xiàng)前面的分號去掉,這樣apache啟動時就可以加載這些dll了

                  注意不要把 ;extension=php_mysql.dl 和 ;extension=php_mssql.dl 混淆 當(dāng)然前面我們也把這些dll復(fù)制到system32下了.(大家在安裝的過程中都注意到如何把一些dll加載入來了.

                  以后要加載一些dll,比如說php_mysqli.dll,也就懂得怎么加載了) 3 設(shè)置會話保存路徑查找session.save_path 有這么一行

                  ; session.save_path = "N;/path"

                  在此行后加入一行(注意是加入一行,不是加到后面) session.save_path = "C:WINDOWSTemp"

                  保存到你的臨時目錄下,這里完全可以保存到windows臨時目錄Temp下

                  4 是否顯示錯誤 display_errors

                  出于安全性考慮,display_errors 有些版本也默認(rèn)為 Off. 就是說在調(diào)試時,如果php代碼有誤,就只出現(xiàn)一個空白頁.而不會顯示出錯原因和出錯行數(shù).

                  這樣調(diào)試起來將非常不便,建議根據(jù)自己需要修改 查找

                  display_errors = Off (注意不是 ; - display_errors = Off [Security])

                  改成

                  display_errors = On

                  5 php5時差問題

                  <php echo date("Y-m-d H:i:s");>時間相差八小時 為什么呢PHP5系列版本新增了時區(qū)設(shè)置,默認(rèn)為格林威治時間,與中國所在的東8區(qū)正好相差8個小時查找date.timezone有這么一行

                  ;date.timezone =

                  將;去掉,改成

                  date.timezone = PRC

                  其中PRC:People's Republic of China 中華人民共和國, PHP的文件上傳問題文件上傳成敗關(guān)鍵的幾點(diǎn)php.ini配置

                  文件上傳的程序沒有錯,但php的配置很可能導(dǎo)致文件不能上傳成功. 1. 一般的文件上傳,除非文件很小.就像一個5M的文件,很可能要超過一分鐘才能上傳完.

                  但在php中,默認(rèn)的該頁最久執(zhí)行時間為 30 秒.就是說超過30秒,該腳本就停止執(zhí)行.

                  這就導(dǎo)致出現(xiàn) 無法打開網(wǎng)頁的情況.這時我們可以修改 max_execution_time 在php.ini里查找

                  max_execution_time

                  默認(rèn)是30秒.改為

                  max_execution_time = 0

                  0表示沒有限制

                  另一種方法是可以在php程序中加入

                  set_time_limit();

                  來設(shè)定頁面最久執(zhí)行時間.

                  set_time_limit(0);//0表示沒有限制

                  2. 修改 post_max_size 設(shè)定 POST 數(shù)據(jù)所允許的最大大小。此設(shè)定也影響到

                  文件上傳。

                  php默認(rèn)的post_max_size 為2M.如果 POST 數(shù)據(jù)尺寸大于 post_max_size $_POST 和 $_FILES superglobals 便會為空.

                  查找 post_max_size .改為

                  post_max_size = 150M

                  3. 很多人都會改了第二步.但上傳文件時最大仍然為 8M.

                  為什么呢.我們還要改一個參數(shù)upload_max_filesize 表示所上傳的文件的最大大小。

                  查找upload_max_filesize,默認(rèn)為8M改為

                  upload_max_filesize = 100M

                  另外要說明的是,post_max_size 大于 upload_max_filesize 為佳.

                  四. active perl 需要安裝到c:/perl

                  五. ZendOptimizer 安裝時把 apache 服務(wù)器關(guān)掉,在過程中要指定 apache 和

                  php 的安裝路徑

                  php常見的模板引擎

                  Smarty

                  Smarty的特點(diǎn)是將模板編譯成PHP腳本,然后執(zhí)行這些腳本。很快,非常靈活。

                  Heyes Template Class

                  一個非常容易使用,但功能強(qiáng)大并且快速的模板引擎,它幫助你把頁面布局和

                  設(shè)計(jì)從代碼中分離。

                  FastTemplate

                  一個簡單的變量插值模板類,它分析你的模板,把變量的值從HTML代碼中分

                  離處理。

                  ShellPage

                  一個簡單易用的類,可以讓你的整個網(wǎng)站布局基于模板文件,修改模板就能改

                  變整個站點(diǎn)。

                  STP Simple Template Parser

                  一個簡單、輕量級并且易于使用的模板分析類。它可以從多個模板中組裝一個

                  頁面,把結(jié)果頁面輸出到瀏覽器或者文件系統(tǒng)。

                  OO Template Class

                  一個你可以用在自己程序中的面向兌現(xiàn)的模板類。

                  SimpleTemplate

                  一個可以創(chuàng)建和結(jié)構(gòu)化網(wǎng)站的模板引擎。它可以解析和編譯模板。

                  bTemplate

                  短小但是快速的模板類,允許你把PHP邏輯代碼從HTML修飾代碼中分離。

                  Savant

                  一個強(qiáng)大且輕量級的PEAR兼容模板系統(tǒng)。它是非編譯型的,使用PHP語言本

                  身做為它的模板語言。

                  ETS - easy template system

                  可以使用完全相同數(shù)據(jù)重組模板的模板系統(tǒng)。

                  EasyTemplatePHP

                  適用于你的站點(diǎn)的一個簡單但是強(qiáng)大的模板系統(tǒng)。

                  vlibTemplate

                  一個快速、全能的模板系統(tǒng),它包含一個緩存和調(diào)試類。

                  AvanTemplate

                  多字節(jié)安全的模板引擎,占用很少系統(tǒng)資源。它支持變量替換,內(nèi)容塊可以設(shè)

                  置顯示或隱藏。

                  Grafx Software’s Fast Template

                  一個修改版本的Fast Template系統(tǒng),它包括緩存功能,調(diào)試控制臺以及沉默去除為賦值塊。

                  TemplatePower

                  一個快速、簡單、功能強(qiáng)大的模板類。主要功能有嵌套的動態(tài)塊支持,塊/文件包含支持以及顯示/隱藏未賦值的變量。

                  TagTemplate

                  這個庫的功能被設(shè)計(jì)來使用模板文件,同時允許你從HTML文件檢索信息。

                  htmltmpl: templating engine

                  一個適用于Python和PHP的模板引擎。它面向希望在項(xiàng)目中分離代碼和設(shè)計(jì)

                  的web應(yīng)用開發(fā)人員。

                  PHP Class for Parsing Dreamweaver templates

                  一個分析Dreamweaver模板的簡單類,被用于Gallery 2 和WordPress的自定義模塊中。

                  MiniTemplator (Template Engine)

                  針對HTML文件的一個緊湊型模板引擎。對于模板變量和塊定義它具有簡單的語法。其中塊可以嵌套。

                  Layout Solution

                  簡化網(wǎng)站開發(fā)和維護(hù)。它擁有常用的變量和頁面元素使你不需要重復(fù)做頁面布局工作。

                  Cached Fast Template

                  它已經(jīng)納入 FastTemplate ,允許你緩存模板文件,甚至可以在分離的塊內(nèi)容上緩存不同的規(guī)格。

                  TinyButStrong

                  一個支持MySQL, Odbc, Sql-Server和ADODB的模板引擎。它包含7個方法和兩個屬性。

                  Brian Lozier’s php based template engine

                  只有2K大小,非常快并且是面向?qū)ο笤O(shè)計(jì)。

                  WACT

                  一個從設(shè)計(jì)中分離代碼的模板引擎。

                  PHPTAL

                  一個PHP下面的XML/XHTML模板庫。

                  來源于跳跳編程 原文鏈接:

                  PHP(penultimate hop pop)

                  倒數(shù)第2跳彈出,用與MPLS標(biāo)簽交換網(wǎng)絡(luò)中,使標(biāo)簽在目的路由器的前一個相鄰路由器時自動彈出,這樣可以使最終路由器不用進(jìn)行標(biāo)簽查找,節(jié)約資源.

                  9、資深程序員談如何學(xué)習(xí)PHP

                  您能否成功,還得靠自己的,堅(jiān)持,堅(jiān)持,再堅(jiān)持,就是步入成功的不二法門。

                  我先把我自己學(xué)習(xí)PHP的過程做一下概括:

                  (1)熟悉HTML/CSS/JS等網(wǎng)頁基本元素,完成階段可自行制作完整的網(wǎng)頁,對元素屬性達(dá)到熟悉程度

                  (2)理解動態(tài)語言的概念,運(yùn)做機(jī)制,熟悉PHP語法

                  (3)學(xué)習(xí)如何將PHP與HTML結(jié)合起來完成簡單動態(tài)頁面

                  (4)接觸MYSQL,開始設(shè)計(jì)數(shù)據(jù)庫程序

                  (5)不斷鞏固,摸透大部分PHP常用函數(shù),并可理解OOP,MYSQL優(yōu)化,以及模板

                  (6)完成一個功能齊全的動態(tài)站點(diǎn)

                  這套線路可能跟許多學(xué)習(xí)PHP的愛好者不謀而合,這也算是一個循序漸進(jìn)的學(xué)習(xí)過程,不過新手不要看到上面的概括就以為學(xué)習(xí)蠻簡單的,任何東西其實(shí)都不簡單,即使是小吃部的燒餅也不是一下子就會做成的。

                  我先解釋一下我的學(xué)習(xí)思路。

                  首先,理解網(wǎng)站這一概念之后不難看出,任何網(wǎng)站都是由網(wǎng)頁組成的,也就是說想完成網(wǎng)站,必須先學(xué)會做網(wǎng)頁,因此必須要掌握了HTML,才能為今后制作網(wǎng)站打下基礎(chǔ)。

                  在學(xué)習(xí)HTML中我想邊學(xué)邊做是最有效的方式,當(dāng)然這一方式對于學(xué)習(xí)PHP同樣是最有效的。

                  HTML中的任何元素都要親自實(shí)踐,只有明白了什么元素會起到什么效果之后,你才會記憶深刻,而一味的啃書,絕對是不行的。

                  掌握靜態(tài)網(wǎng)頁的制作技術(shù)是學(xué)習(xí)開發(fā)網(wǎng)站的先決條件。

                  我假設(shè)你目前已經(jīng)可以完成一個靜態(tài)頁面了。那么咱們就開始學(xué)習(xí)動態(tài)語言的概念吧,剛一接觸動態(tài)語言,可能很多人都會蒙了,怎么這亂七八糟的東西,在網(wǎng)頁里顯示的時候卻是另外一碼事其實(shí)這并不算亂七八糟,你寫的HTML代碼不也一樣是一堆堆的字符嗎畢竟,代碼并不是作為直接輸出的,而是經(jīng)過處理的,說白了,HTML是經(jīng)過HTML解析器,而 PHP當(dāng)然也就通過PHP解析器了,跟學(xué)習(xí)HTML一樣的道理,想讓任何的解析器完成操作,就必須使用它們專用的語法結(jié)構(gòu),所以PHP長相奇怪也就不足為奇了。

                  對于PHP的理解是新手最難邁過的一道門檻,不過你應(yīng)該感到幸運(yùn)的是PHP已經(jīng)最大極限的為了新手而努力了,如果你學(xué)過其他的語言,也許會覺得PHP的確相當(dāng)?shù)暮唵?,即使你理解不了PHP,但是也必須先跟它混個臉熟。

                  搞清楚HTML和PHP的概念,那么PHP和HTML混合編程應(yīng)該不成問題,在這期間,你完全可以讓PHP給你算算一加一等于幾,然后在瀏覽器輸出,不要覺得幼稚,這的確是跟阿波羅登月一樣,你打的是一小段代碼,但是對于你的編程之路,可是邁出了一大步啊!興奮吧但是不得不再給你潑點(diǎn)冷水,您還是菜鳥一個。

                  高興一段時間就必須繼續(xù)努力了,接下來就是學(xué)習(xí)數(shù)據(jù)庫了,MYSQL可算是PHP的黃金搭檔了,不過,雖然話是這么說,你也可能恨不得把MYSQL給生吞活剝了,因?yàn)檫@一行一列的東東簡直讓自己頭暈?zāi)垦!?/p>

                  頭暈歸頭暈,目眩歸目眩,你不可能吃飯的時候咬了自己一下舌頭就從此不吃飯了不是放下畏懼,繼續(xù)努力,咱們是來征服它的,而不是被它征服的,振奮起來吧同志。

                  在一番搏斗之后,你終于理解了數(shù)據(jù)庫的概念,而且讓你興奮不已的是你終于可以通過PHP來連接數(shù)據(jù)庫了,這期間你是怎么學(xué)會的,我們不去考證了,但是事實(shí)證明,你已經(jīng)可以了。

                  學(xué)會了PHP和數(shù)據(jù)庫的你,無疑是左手拿著MOTOLOLA右手拿著NOKIA,要多瀟灑,有多瀟灑,哈哈,終于學(xué)會了,但是可能這個時候,又會有人不經(jīng)意的拍拍肩膀?qū)δ阏f:哥們,別高興的太早,你還是菜鳥,離學(xué)會還差著一大截呢!

                  等到你發(fā)奮努力的學(xué)會了用PHP成功的插入,刪除,更新數(shù)據(jù)的時候,顯然,你已經(jīng)距離成功指日可待了。

                  這個時候的你也許是這種狀態(tài):

                  你會HTML嗎會,我能編好幾個大表格排板的網(wǎng)頁啦!

                  你會PHP嗎會,我會把一加一的運(yùn)算寫在函數(shù)里,然后調(diào)用啦!

                  你會MYSQL嗎會,我會把我的信息在數(shù)據(jù)庫里插入刪除啦那,接下來你該怎么做呢我覺得,小試一下身手,大概是沒問題了,那么交給你個任務(wù),做個留言本吧,這和HELLO WORLD有一比啊!^_^,同是新手面臨的第一道關(guān)。

                  花了一段時間,你終于學(xué)會把表單的數(shù)據(jù)插入數(shù)據(jù)庫,然后顯示出來了,應(yīng)該說一個程序的雛形已經(jīng)誕生了。

                  但是,你可能瞅瞅東,看看西,人家這個編論壇,那個CMS,還有那啥CRM,我啥時候?qū)懸粋€呢不要急,可以說你的馬步已經(jīng)扎的差不多了,接下來就要開始練把勢的時候了,如果有條件的話,用筆或者打印一個簡易的PHP手冊在身上,時不時的摸出來看看,記得,去WC也不能放過(^2^)。

                  再有條件的話,買本書看看吧,《PHP+MYSQL WEB開發(fā)(第三版)》號稱圣經(jīng)級,(也許是個不錯的選擇(聲明:作者沒給我啥好處費(fèi),我也不是書托,隔著大老遠(yuǎn),我連他老兄的面都沒見過的說-_-)

                  鞏固了自己的知識,熟悉了PHP和MYSQL開發(fā)的要領(lǐng)之后,再回頭看你寫的

                  那個留言本,你也許會懷疑那真的是你寫的嗎當(dāng)然,如果屋里還有鬼的話,也許是它寫的-_-

                  這個時候,你的留言本應(yīng)該加入注冊以及分頁功能了,而如果你更強(qiáng)的話,UI(用戶界面)也可以加強(qiáng),完成之后,感覺是不是特有成就感不管怎么樣,咱好歹是寫了一個動態(tài)網(wǎng)站程序了,放在自己的網(wǎng)站上耍耍吧,讓好朋友來看看,嘿,看咱寫的多棒,然后再在網(wǎng)上宣傳一下。

                  幾天之后你再打開留言本,哎哇,一下彈出N多頁面!很明顯,你的留言本并

                  沒有做好安全防范,被人用JS代碼小小的耍了一下,我很同情你這個時候的感受,但是沒有別的辦法了,繼續(xù)努力吧!

                  你發(fā)奮努力,熟悉了安全方面的問題,然后又設(shè)計(jì)了一些程序,感覺還不錯。

                  那么接下來,這就算學(xué)會啦NO,NO,NO,還早呢,你至盡還沒碰過OOP之類的吧模板呢 恩,學(xué)!加緊學(xué)呀學(xué),學(xué)會了這些之后,你又學(xué)會了生成靜態(tài)網(wǎng)頁,現(xiàn)在你應(yīng)該接觸一下XML了,恩,XML也了解了,那么AJAX你也得接觸接觸吧AJAX完了....然后... 總而言之,你絕對不會發(fā)現(xiàn)你全部都學(xué)會了,一些真正的強(qiáng)人總會搞出新玩意來丟給你,你不學(xué)就落后了,也印證了前人的經(jīng)驗(yàn),果然是學(xué)無止境啊! 我想通過我的一番YY,你也應(yīng)該大致熟悉了一些學(xué)習(xí)過程,也許我的過程和你的有些出路,但是不管怎么樣是殊途同歸,我寫這么多,也只是給大家一個借鑒的機(jī)會,至于好與不好,默默不敢打包票^0^

                  看完之后你發(fā)現(xiàn),羅嗦這么多,對我一點(diǎn)用處沒有啊,我知道該怎么學(xué),但是我想如何才能更快的學(xué),一周速成,啊不,24小時速成那種,默默你有沒 我.......我沒有,但是2分鐘之內(nèi)把你扁進(jìn)醫(yī)院里,我倒是有把握-_- 學(xué)東西,永遠(yuǎn)不要妄想有速成這一說,告訴你了一個方式,但是缺少努力這一環(huán)節(jié),那也是白搭。

                  但是有一點(diǎn)我可以給你保證的就是,你學(xué)會了PHP,那么學(xué)其他的語言,肯定速成,反過來也一樣,如果你之前學(xué)過其他的語言,那么學(xué)PHP肯定快。

                  不過語法好學(xué),但是怎么用語法來實(shí)現(xiàn)每個人都有每個人的方式,幾乎是各有千秋。然而借鑒別人成功的代碼,絕對是有益無害,因此,多看那些經(jīng)過千錘百煉凝出來的經(jīng)典代碼,是進(jìn)階的最好方法。

                  講了這么多,無非是想說:學(xué)習(xí)PHP不僅要掌握方法,更多的是付出汗水,我

                  不希望看到中途放棄的人,相信自己,相信自己的選擇,更要相信自己的能力,如果自己想放棄,暴力一點(diǎn)的話,就自己抽自己一個嘴巴,然后大吼:別人可以,我為什么就不可以(是不是有點(diǎn)閻羅教練的味道,默默的確是電影看多了,抽嘴巴是會痛的,各位其實(shí)明白這個道理了就行了)

                  另外要叮囑各位的是,抵御誘惑,ASP/PHP/JSP/.NET的對比也許會讓你無所適從,你也許學(xué)了一半PHP,又開始打C#的主意,或者有人說JAVA很強(qiáng),這個時候的你絕對不能動搖,哪怕你真想學(xué),也得學(xué)會了PHP。然后再學(xué),見異思遷是最不可取的,狗熊掰玉米就是這個道理,如果經(jīng)常中途放棄,只能是一無所獲,還浪費(fèi)了N多的時間和經(jīng)歷,得不償失,最重要的是,你會被別人瞧不起,沒有人會喜歡和見異思遷的人交朋友,因?yàn)檫@種人太不安分,太不可靠,因此,你必須要強(qiáng)迫自己完成自己的目標(biāo),哪怕可能會很難受,也得堅(jiān)持,毅力就是這么鍛煉出來的。       

                  10、PHP安全

                  PHP其實(shí)不過是Web服務(wù)器的一個模塊功能,所以首先要保證Web服務(wù)器的安全。當(dāng)然Web服務(wù)器要安全又必須是先保證系統(tǒng)安全,這樣就扯遠(yuǎn)了,無窮無盡

                  11、數(shù)種系統(tǒng)環(huán)境下的PHP的安裝方式

                  在Win2K環(huán)境下安裝Apache PHP

                  一、軟件需求:

                  Windows 2000 Professional ; Apache 1.3.19 (apache_1.3.19-win32-src-r2.msi) ; PHP 4.0.5 (php-4.0.5-Win32.zip) ; MySQL 3.23.38 (mysql-3.23.38-win.zip)

                  二、安裝過程

                  1. 將 Apache 1.3.19 安裝到 C:Webapache 目錄下。

                  2. 將 PHP 4.0.5 解壓到 C:Webphp 目錄下。

                  3. 將 MySQL 3.23.38 安裝到 C:Webmysql 目錄下。

                  4. 將 C:webphpphp4ts.dll 文件拷貝到 C:WINNTsystem32 目錄下。

                  5. 將 C:webphpphp.exel 文件拷貝到 C:WINNT 目錄下。

                  6. 將 C:webphpphp.ini-dist 文件拷貝到 C:WINNT 目錄下,并將php.ini-dist 更名為 php.ini。

                  7. 運(yùn)行 C:WebapacheApacheApache.exe -i –n

                  8. 運(yùn)行 C:Webmysqlinmysqld-nt.exe --install

                  9. 編輯 C:WINNTphp.ini

                  找到 ―extension_dir = ./ ‖ 字段,將其改為 extension_dir =

                  "C:myphpphpextensions"。

                  10. 運(yùn)行 C:WebapacheApacheApache.exe -i –n

                  11. 編輯 C:WebapacheApacheconfhttpd.conf

                  找到― #BindAddress*‖ 字段

                  將其改為 BindAddress 127.0.0.1 。(如果主機(jī)有固定IP地址,此處改為主機(jī)IP地址。如 BindAddress 211.101.152.106),找到 ―ServerName‖ 字段,將其改為 ServerName localhost。(如主機(jī)有固定主機(jī)名,此處改為主機(jī)的主機(jī)名。如ServerName bn001 )。

                  找到― ScriptAlias /cgi-bin/ "C:/Web/apache/Apache/cgi-bin/" ‖ 字段,在其下面加入 ScriptAlias /php/ "C:/Web/php/" 。找到 ―# And for PHP 4.x, use: ‖ 字段,在其后面加入:

                  AddType application/x-httpd-php .php3

                  AddType application/x-httpd-php .php4

                  AddType application/x-httpd-php .php

                  AddType application/x-httpd-php .phtml

                  Action Application/x-httpd-php "c:/Web/php/php.exe"

                  找到― #LoadModule usertrack_module modules/mod_usertrack.so‖ 字段,LoadModule php4_module c:/web/php/sapi/php4apache.dll

                  UNIX下的PHP環(huán)境配置 所需軟件

                  php-3.0.14-win32.zip;php-3.0.14-win32.zip;mysql-shareware-3.22.32-win.zip

                  所有軟件均安裝在/export/home/guoj/下,也可在其他目錄。

                  安裝mysql

                  gzip -dc mysql-3.22.30.tar.gz | tar xvf-

                  cd mysql-3.22.30

                  ./configure -prefix= /export/home/guoj/mysql

                  make

                  make install

                  scripts/mysql_install_db

                  cd../mysql/bin

                  bin/safe_mysqld & 安裝php apache gzip -dc apache_1.3.11.tar.gz | tar xvf-

                  gzip -dc php-3.0.11.tar.gz | tar xvf-

                  cd apache_1.3.11

                  ./configure -prefix= /export/home/guoj/www

                  cd ../php-3.0.11

                  ./configure -with-apache= /export/home/guoj/apache_1.3.11

                  -with-mysql= /export/home/guoj/mysql -enable-track-vars make

                  make install

                  cd ../apache_1.3.11

                  ./configure --prefix= /export/home/guoj/www --activate-module=src/modules/php3/libphp3.aP make

                  make install

                  cd ../php-3.0.11

                  cd ../php3.ini-dist php3.ini

                  vi php3.ini修改php3.ini

                  doc_root=/export/home/guoj/www/htdocs/

                  extension_dir=/export/home/guoj/php-3.0.11/ extension=php3_mysql.dllcp

                  php3.ini/usr/local/lib/php3.inivi ../www/conf/httpd.conf

                  加上以下幾句:

                  AddType application/x-httpd-php3 .php3

                  <Directory "/export/home/guoj/php-3.0.11/"> Options FollowSymLinks

                  AllowOverride None

                  </Directory>../www/bin/apachectl start

                  12、PHP技術(shù)的應(yīng)用集合

                  1,偽靜態(tài)

                  2,靜態(tài)頁面生成

                  3,數(shù)據(jù)庫緩存

                  4,過程緩存

                  5,div+css w3c標(biāo)準(zhǔn)

                  6,大負(fù)荷

                  7,分布式

                  8,jquery框架集成

                  9,flex  

                  


          PHP緩存技術(shù)的多種方法 php常用字符串函數(shù)
          PHP二維數(shù)組的簡易排序PHP如何讀取xml文件
          php版本比較PHP比ASP的優(yōu)勢
          php入門教程php與js我們?nèi)绾芜x擇呢
          PHP+Ajax實(shí)現(xiàn)分頁技術(shù)HP的簡明教程
          PHP學(xué)習(xí)總結(jié)筆記PHP基本語法詳解
          Char3 php基礎(chǔ)知識解析PHP中的內(nèi)存管理動態(tài)分配和釋放內(nèi)存
          php與apache結(jié)合使你的網(wǎng)站服務(wù)器支持php服務(wù)器腳本程序PHP編程要點(diǎn)
          信息發(fā)布:廣州名易軟件有限公司 http://www.jetlc.com
          • 勁爆價:
            不限功能
            不限用戶
            1998元/年

          • 微信客服

            <output id="r87xx"></output>
          1. 
            
            <mark id="r87xx"><thead id="r87xx"><input id="r87xx"></input></thead></mark>
              • 北条麻妃在线播放一区二区 | 噜噜噜av无码 | 亚洲欧美suv精品8888日 | 疯狂 自慰爽www看片91 国产999高清无码精品导航 | 啪啪网站视频 | 日日日日女人 | 久久一区二区三区在线 | 欧洲无码在线 | 乱伦 的搜索结果 - 91n | 黄性视频 |