當前位置:法律諮詢服務網 - 企業資訊 - PHP的其他方面

PHP的其他方面

PHP對數據庫的豐富支持也是其迅速流行的原因之壹。它支持以下數據庫或數據文件:

Adabas、D、DBA、dBase、dbm、filePro、Informix、InterBase、mSQL、微軟SQL Server、MySQL、Solid、Sybase、Oracle、PostgreSQL

在互聯網上,它還支持相當多的通信協議,包括與電子郵件相關的IMAP和POP3網絡管理系統SNMP;網絡新聞NNTP;;賬號* * *用NIS;;全球信息網HTTP和Apache服務器;目錄協議LDAP和其他網絡相關功能。

另外,用PHP編寫的CGI程序可以很容易地移植到不同的操作系統上。例如,當系統負載過高時,基於Linux的網站可以快速將整個系統遷移到SUN工作站,而無需重新編譯CGI程序。面對互聯網的飛速發展,這是長遠規劃的最佳選擇。

相關語法和概念

Php支持八種基本類型。

四種標量類型:布爾整數浮點型(也稱為“double”)字符串(string)

兩種復合類型:數組對象。

最後,還有兩種特殊類型:資源空。

為了保證代碼的可讀性,本手冊還介紹了壹些偽類型:mixed、number、callback。

語法(PHP代碼邊界字符

註釋有三種語法://comment這是單行註釋/*comment*/這是多行註釋#comment這是腳本類型註釋。基本結構控制語句很少使用://分支結構(選擇結構)if(條件){//語句} if(條件){//語句} else {//語句} if(條件){//語句} else if(條件){//語句){//語句}//。case“value 2”://statement break;默認://Statement}//循環結構while(條件){//Statement } do {//Statement } while(條件);For(初始化;法官;Change) {//Statement}// Array遍歷特殊循環語句foreach($ arrayas $ value){ echo $ value;} foreach($ Arrayas $ key = & gt;$ value){ echo $ key;echo $ value}壹個PHP實例:

面向對象編程的概念;

不同的作者可能有不同的觀點,但是壹個OOP語言必須具備以下幾個方面:

1.抽象數據類型和信息封裝

2.遺產

3.多態性

在PHP中用類封裝://在OOP類中,通常采用大雙峰的命名方式,每個單詞的首字母用classSomething{// Scope修飾符大寫:public和public * * *私人的私人的;受保護的;//屬性名壹般都是小寫private $ x = null//在編程建議中,內部使用的屬性應該被賦予私有修飾符,然後由方法進行賦值。//方法名壹般用小駝峰命名,第壹個字全小寫,其余字首字母大寫。//因為PHP不會自動使用$this for變量,所以必須主動添加$this偽變量指向操作對象PublicFunctionSetx($ V){ $ this-> x = $ V;} publicfunctiongetX(){ return $ this-& gt;x;當然妳可以根據自己的喜好來定義,但是最好保留壹個標準,這樣會更有效。數據成員是由類中的var聲明定義的,在給它們賦值之前,它們是無類型的。數據成員可以是整數、數組、關聯數組或對象。方法被定義為類中的函數。在方法中訪問類成員變量時,應該使用$ this->;名稱,否則對於壹個方法,它只能是壹個局部變量。

使用new運算符創建壹個對象:$ obj = newSomething然後可以使用成員函數傳遞:$ obj-& gt;setX(5);$ see = $ obj-& gt;getX();echo $ see在這個例子中,setX成員函數將5賦給對象(不是類)的成員變量x,然後getX返回它的值5。可以像:$ obj-& gt;x=6時通過類引用訪問數據成員不是好的OOP習慣。我強烈建議通過方法訪問成員變量。如果妳將成員變量視為不可處理的,並且只通過對象句柄來使用方法,那麽妳將是壹個優秀的OOP程序員。不幸的是,PHP不支持聲明私有成員變量,所以在PHP中也允許出現糟糕的代碼。只要使用extends關鍵字,繼承很容易在PHP中實現。class another extends something { private $ y;publicfunctionsetY($ v){ $ this-& gt;y = $ v;} function gety(){ return $ this-& gt;y;} }另壹個類的對象擁有父類的所有數據成員和方法,並且還添加了自己的數據成員和方法。

可以使用$ obj2 = newAnother$ obj 2-& gt;setY(5);echo $ obj 2-& gt;getY();PHP只支持單壹繼承,所以妳不能從兩個或更多的類中派生出新的類。您可以在派生類中重新定義方法。如果我們在另壹個類中重新定義getX方法(方法重寫),我們就不能在某個東西中使用getX方法。如果在派生類中聲明壹個與基類同名的數據成員,那麽在處理它時,它將“隱藏”基類的數據成員。

您可以在類中定義構造函數。構造函數是壹個與類名同名的方法,在妳創建壹個類的對象時會被調用,例如:classSomething { private $ x = null//新版本的構造函數放棄使用類名,使用_ _ construct()公共函數_ _ construct($ x){ $ this-->;x = $ x} publicfunctionsetX($ v){ $ this-& gt;x = $ v;} publicfunctiongetX(){ return $ this-& gt;x;}//析構函數public function _ _ destroy () {}這樣就可以通過:$ $obj=newSomething(6)創建壹個對象;(6);構造函數會自動給數據變量x賦值6,構造函數和方法都是普通的PHP函數(“_ _”兩個下劃線,魔術方法),所以可以使用默認參數。Public function _ _ construct ($ x = 3,$ y = 5){ } Then:$ obj = new something();//x = 3 Andy = 5 $ obj = new something(8);//x=8andy=5$obj=newSomething(8,9);//x=8andy=9默認參數是C++的形式,所以不能忽略Y的值,給X壹個默認參數,從左到右賦值。如果傳入參數小於所需參數,將使用默認參數。

當創建派生類的對象時,只調用其構造函數,而不調用父類的構造函數。如果要調用基類的構造函數,必須在派生類的構造函數中使用parent::__construct()。可以做到的是,所有的父方法在派生類中都是可用的。class anotherextendsomething { public function _ _ construct(){ parent::_ _ construct(5,6);//調用基類構造函數}}OOP的壹個好機制就是使用抽象類。抽象類不能實例化,只能給派生類提供壹個接口。設計者通常使用抽象類來強制程序員從基類派生,這樣可以保證新類包含壹些預期的功能。PHP中沒有標準的方法,但是如果需要這個特性,可以定義基類,在它的構造函數後面加上die的調用,這樣可以保證基類不可實例化,並且在每個方法(接口)後面加上die語句,這樣如果程序員沒有在派生類中重寫方法,就會導致錯誤。而且因為PHP是非類型化的,所以您可能需要確認壹個對象是從您的基類派生的,所以在基類中添加壹個方法來闡明類的身份(返回某種標識id)並在收到對象參數時檢查這個值。當然,如果壹個壞的邪惡程序員在派生類中重寫了這個方法,這個方法就不行了,但是普遍的問題是懶惰的程序員比邪惡的程序員多。

當然,讓程序員看不到基類也是好的,只要打印出接口,做好他們的工作就行了。PHP 5引入了析構函數的概念,類似於其他面向對象的語言,比如C++。當對象的所有引用都被刪除或對象被顯式銷毀時,析構函數被執行。

PHP不支持重載(不同於覆蓋),因為PHP是弱類型語言。在OOP中,妳可以重載壹個方法來實現兩個或更多的方法有相同的名字,但是參數的數量或類型不同(取決於語言)。PHP是壹種松散類型的語言,所以按類型重載不起作用,但按不同數量的參數重載也不起作用。

有時候在OOP中重載構造函數是非常好的,這樣妳就可以用不同的方式創建對象(變量函數)。在PHP中實現的技巧有:class my class { publicfunctionmyclass(){ $ name = my class。func _ num _ args()。//此函數返回傳遞的參數個數$ This->;$ name();//這裏使用了壹個變量函數,將這個變量的值作為函數名調用} publicfunctionmyclass 1($ x){/code } publicfunctionmyclass 2($ x,$ y) {/code}}通過類中的額外處理,使用這個類對用戶是透明的:$ obj60。//my class 1 $ obj 2 = new my class(' 1 ',' 2 ')將被調用;//將調用Myclass2。有時候這很有用。

多態的

多態是壹個對象在運行時根據傳遞的對象參數決定調用哪個對象的方法的能力。例如,如果妳有壹個圖形類,它定義了壹個繪制方法。並派生出圓形和矩形類。在派生類中,您重寫了draw方法,並且您可能有壹個函數想要使用參數x並且可以調用$ x-& gt;draw().如果妳是多態的,調用哪個draw方法取決於妳傳遞給這個函數的對象類型。

PHP之類的解釋型語言中的多態性(想象壹個C++編譯器生成這樣的代碼,應該調用哪個方法?妳不知道妳有什麽樣的對象,嗯,這不是重點)這很容易,很自然。所以PHP當然支持多態性。class calc { functionnicedrawing($ x){//假設這是Board類$ x->(Board class $ x->)的壹個方法;draw();} } class circle { publicfuncodraw(){ Echo畫了壹個圓;} } class rectangle { publicfuncodraw(){ Echo畫了壹個矩形;} } $ board = newCalc$obj=newCircle(3,187);$obj2=newRectangle(4,5);$ board->;nice drawing($ obj);//Circle的draw方法$ board->將被調用。nice drawing($ obj 2);PHP面向對象編程會調用Rectangle的draw方法。

誠然,壹些純粹主義者可能會說PHP不是真正的面向對象語言。PHP是壹種混合語言。妳可以使用OOP或者傳統的過程化編程。但是,對於大型項目,妳可能希望/需要用純OOP在PHP中聲明類,並且只在妳的項目中使用對象和類。

隨著項目越來越大,使用OOP可能會有幫助。OOP代碼易於維護、理解和重用。這些是軟件工程的基礎。將這些概念應用於基於網絡的項目將成為未來網站成功的關鍵。

高級面向對象技術

在閱讀了基本的OOP概念後,我可以向您展示更高級的技術:

序列化(序列化)

PHP不支持持久對象。在OOP中,持久對象是可以在多個應用程序的引用中保持其狀態和功能的對象,這意味著它們有能力將對象保存到文件或數據庫中,並且它們可以在以後加載。這就是所謂的序列化機制。PHP有壹個序列化方法,可以通過對象調用,序列化方法可以返回對象的字符串表示。但是,序列化只保存對象的成員數據,不包括方法。

在PHP4中,如果將對象序列化為字符串$s,然後釋放對象,再將對象反序列化為$obj,就可以繼續使用object方法了!我不建議這樣做,因為(a)文檔中不能保證這種行為在未來的版本中仍然可以使用。(b)當您將序列化版本保存到磁盤並退出腳本時,這可能會導致誤解。當您稍後運行這個腳本時,您不能期望當您反序列化壹個對象時,該對象的方法也會在那裏,因為字符串表示根本不包括方法。

總之,PHP序列化對於保存對象的成員變量非常有用。還可以將相關數組和數組序列化到壹個文件中。

示例:$ obj = newClassfoo();$ str = serialize($ obj);//將$str保存到磁盤$ obj 2 = unserialize($ str);//幾個月後//從磁盤加載str,您恢復成員數據,但不包括方法(根據文檔)。這導致解決這個問題的唯壹方法是使用$ obj 2->;x來訪問成員變量(妳沒有別的辦法!),所以不要在家裏嘗試。

有壹些方法可以解決這個問題,我會保留,因為它們對於這篇簡潔的文章來說太糟糕了。我很樂意歡迎PHP後續版本中的完全序列化特性。

PHP和OOP中使用類存儲數據的壹個非常好的地方就是可以很容易的定義壹個類來操作某個東西,想用的時候就可以調用相應的類。假設您有壹個HTML表單,用戶可以通過選擇產品ID號來選擇產品。數據庫裏有產品信息,妳想顯示產品,顯示它的價格等等。妳有不同類型的產品,同樣的動作對不同的產品可能有不同的意義。例如,顯示聲音可能意味著播放它,但對於其他類型的產品,它可能意味著顯示存儲在數據庫中的圖片。您可以使用OOP或PHP來減少編碼並提高質量:

定義壹個產品的類,定義它應該擁有的方法(比如display),然後定義每壹類產品的類,這些類都是從product類派生出來的(SoundItem類,ViewableItem類等。),並覆蓋產品類中的方法,使其按照妳的想法行動。

根據數據庫中每個產品的類型字段來命名該類。典型的產品表可能有(id、類型、價格、描述等。)...然後在處理腳本中,可以從數據庫中取出類型值,實例化壹個名為type: $obj=new$type()的對象;$ obj-& gt;action();這是PHP的壹個非常好的特性。無論對象的類型如何,都可以調用$obj的顯示方法或其他方法。有了這項技術,妳不需要修改腳本來添加壹個新類型的對象,只需要添加壹個類來處理它。

這個函數非常強大,只要妳定義方法,不考慮所有對象的類型,在不同的類中用不同的方式實現,然後在主腳本中對任何對象使用,就沒有如果...else,而且妳不需要兩個程序員,開心就好。

妳同意編程容易,維護便宜,可重復使用嗎?

如果妳管理壹群程序員,分配工作是非常簡單的。每個人都可能負責壹種類型的對象和處理它的類。

通過該技術可以實現國際化,根據用戶選擇的語言領域應用相應的類,等等。

復制和克隆

創建$obj的對象時,可以通過$obj2=$obj復制對象。新對象是$obj的副本(不是引用),因此它在那時具有$obj的狀態。有時候,妳不想這麽做。妳只是想生成壹個像obj類壹樣的新對象。您可以使用new語句調用類的構造函數。它也可以通過PHP中的序列化和基類來實現,但所有其他類都必須從基類派生。

進入危險區域

當妳序列化壹個對象時,妳會得到壹個特定格式的字符串。有興趣可以研究壹下,其中的字符串包含了班級的名字(太棒了!),可以拿出來,比如:$ herring = serialize($ obj);$vec=explode(':',$ herring);//將字符串拆分成壹個數組,用:作為標識符$nam=str_replace(\,'',$ vec[2]);所以假設妳創建了壹個universe的類,並強制所有類都從universe擴展,妳可以在Universe中定義壹個clone方法如下:新PHP版本中的class Universe {//Cloning(_ _ Clone())是壹個神奇的方法,不要和函數Clone(){ $ herring = serialize($ this)混淆。$vec=explode(':',$ herring);$nam=str_replace(\,'',$ vec[2]);$ ret = new $ nam返回$ ret} }//然後$ obj = new something();//Extend $ other = $ obj-& gt;clone();妳得到的是壹個Something類的新對象,和使用new方法並調用構造函數創建的對象是壹樣的。不知道這個對妳有沒有用,宇宙類知道派生類的名字是個不錯的體驗。想象力是唯壹的限制。

模板引擎Smarty:Smarty的特點是將模板編譯成PHP腳本,然後執行這些腳本。很快,很方便。Heyes Template Class:壹個非常易用但功能強大且快速的模板引擎,幫助妳將頁面布局和設計從代碼中分離出來。FastTemplate:壹個簡單的變量插值模板類,它分析妳的模板並從HTML代碼中分離出變量值。ShellPage:壹個易於使用的類,允許妳的整個網站布局基於模板文件。修改模板可以改變整個網站。STP簡單模板解析器:壹個簡單、輕量級且易於使用的模板分析類。它可以從多個模板組裝壹個頁面,並將結果頁面輸出到瀏覽器或文件系統。OO模板類:壹個面向對象的模板類,可以在自己的程序中使用。SimpleTemplate:可以創建和結構化網站的模板引擎。它可以解析和編譯模板。BTemplate:壹個簡短但快速的模板類,允許妳將PHP邏輯代碼與HTML修飾代碼分開。Savant:壹個強大的輕量級PEAR兼容模板系統。它是非編譯的,使用PHP本身作為它的模板語言。ETS-easy template system:壹個可以使用完全相同的數據來重新組織模板的模板系統。EasyTemplatePHP:壹個簡單但功能強大的網站模板系統。VlibTemplate:壹個快速通用的模板系統,包括壹個緩存和調試類。AvanTemplate:多字節安全模板引擎,占用系統資源少。支持變量替換,內容塊可以設置顯示或隱藏Grafx軟件的Fast Template:Fast Template系統的修改版,包含緩存功能、調試控制臺和靜音去除作為賦值塊。TemplatePower:壹個快速、簡單而強大的模板類。主要功能是嵌套動態塊支持,塊/文件包含支持和顯示/隱藏未分配的變量。TagTemplate:這個庫的功能是設計用來使用模板文件,並允許妳從HTML文件中檢索信息。Htmltmpl:模板引擎:Python和PHP的模板引擎。它的目標是那些希望在項目中分離代碼和設計的web應用程序開發人員。用於解析Dreamweaver模板的Php類:壹個用於分析Dreamweaver模板的簡單類,用於Gallery 2和WordPress的自定義模塊中。Minitemplate引擎:HTML文件的緊湊模板引擎。它對模板變量和塊定義有簡單的語法。其中塊可以嵌套。布局解決方案:簡化網站開發和維護。它有通用的變量和頁面元素,這樣妳就不需要重復做頁面布局的工作了。緩存FastTemplate:它已經被並入Fast Template,允許妳緩存模板文件,甚至可以在單獨的塊內容上緩存不同的規範。TinyButStrong:支持MySQL、Odbc、Sql-Server和ADODB的模板引擎。它包含七個方法和兩個屬性。Brian Lozier的基於PHP的模板引擎:大小只有2K,非常快,面向對象。WACT:壹個將代碼和設計分開的模板引擎。PHP tal:PHP下的壹個XML/XHTML模板庫。容_查看_無敵美:無敵美開發的國產框架容框架的模板引擎類似於smarty,優點是速度快,缺點是模板標簽少,但也夠用了。框架介紹thinkphp

ThinkPHP是壹個免費、開源、快速、簡單的面向對象的輕量級PHP開發框架,創建於2006年初,根據Apache2開源協議發布,為敏捷的WEB應用開發和簡化的企業應用開發而生。ThinkPHP從誕生之日起就秉承簡單實用的設計原則,在保持卓越性能和極簡代碼的同時註重易用性。而且它有很多獨創的功能和特點。在社區團隊的積極參與下,在易用性、擴展性、性能等方面不斷優化和提升。已經成長為國內最領先、最具影響力的WEB應用開發框架,眾多典型案例保證穩定用於商業和門戶級開發。

PHP認證級別

PHP課程由三部分組成:初級(IFE)、中級(IPE)和高級(IAE)。IFE是Index前端工程師的縮寫,意思是指數前端工程師。IPE是Index PHP Engineer的縮寫,意思是索引PHP工程師。IAE是指數建築/高級工程師的縮寫,意思是:指數高級/建築工程師。PHP安全性

其實PHP只是Web服務器的壹個模塊功能,所以首先要保證Web服務器的安全性。當然,Web服務器要想安全,首先要保證系統安全,這個很牽強,沒完沒了。常見的web安全漏洞包括:註入攻擊、跨站攻擊、服務器漏洞等。詳細解釋請參考延伸閱讀中的“WEB Security-2065 438+00 _ OWASP _ top 10”,裏面有非常詳細的解釋。

PHP學習過程和方法的優勢

PHP的語法類似於C,Perl,ASP或者JSP。對於熟悉以上語言之壹的人來說,PHP太簡單了。相反,如果妳對PHP了解的更多,妳可以很容易地學習其他幾種語言。妳只需要在短時間內掌握PHP所有的核心語言特性。妳可能已經非常了解HTML,甚至妳已經知道如何通過編輯和設計軟件或手工制作漂亮的網站。因為PHP代碼可以毫無障礙地添加到您的站點中,所以在設計和維護您的站點時,您可以輕松地添加PHP以使您的站點更加動態。

數據庫連接

PHP可以用連接到很多數據庫的函數來編譯。PHP和MySQL是壹個極好的組合,如果再加上Apache服務器,就相當完美了。也可以編寫自己的外設函數來間接訪問數據庫。這樣,當您更改所使用的數據庫時,您可以輕松地更改編碼以適應這種更改。PHPLIB是最常用的基礎庫,可以提供壹般的事務需求。

膨脹性

如前所述,PHP已經進入快速發展期。對於壹個非程序員來說,擴展PHP的附加功能可能很難,但是對於壹個PHP程序員來說並不難。

PHP可伸縮性

傳統上,網頁的交互是通過CGI來實現的。CGI程序的可伸縮性並不理想,因為它為每個正在運行的CGI程序打開了壹個獨立的進程。解決方案是編譯那些經常用來編寫CGI程序的語言的解釋器(比如mod_perl,JSP)。PHP可以這樣安裝,雖然很少有人願意這樣安裝在CGI裏。嵌入式PHP可擴展性更強。

PHP免費安裝

PHP源代碼包安裝版:該版本適合已經有自己獨立的網站域名和網站空間的專業網站建設用戶。使用方法仍然簡單,只需要三個步驟:

首先去官網:下載最新版本的安裝版PHP源代碼包,解壓下載的文件,將所有內容上傳到妳支持PHP的網站空間。

二、更改文件屬性,請將根目錄下以PHP為後綴的文件以及文件夾“/include/domain.php”和“/attachments”/“data”以及文件夾下的所有文件屬性更改為“可讀”、“可寫”、“可執行”,通常為“755”。

第三,打開妳網站的根目錄,系統會自動運行setup安裝程序,根據提示點擊下壹步操作。

友情提醒:當妳下載我們的軟件,看到這個描述,說明妳壹定對企業網站建設有壹定的需求,或者妳是壹個網站建設技術學習者。

文件格式對於只包含php代碼的文件,我們會在文件末尾忽略它?& gt。這是為了防止多余的空格或其他字符影響代碼。例如:

$ foo = ' foo縮進應該能夠反映代碼的邏輯結果。盡量用四個空格。制表符是被禁止的,因為這樣可以保證跨客戶端程序員軟件的靈活性。例如:if(1 = = $ x){ $ indexed _ code = 1;if(1 = = $ new _ line){ $ more _ indented _ code = 1;建議為變量賦值保持相等的間距和排列。比如:$ variable = ' demo$ var = ' demo2每行代碼的長度應控制在80個字符以內,最大長度不超過120個字符。因為linux讀取文件是80列的,也就是說,如果壹行代碼超過80個字符,系統會為此支付額外的指令。雖然這看起來是個小問題,但對於追求完美的程序員來說,這也是壹個值得關註和遵守的規範。每行末尾不允許有多余的空格。Php文件記事本中的亂碼編輯問題

壹般來說,當記事本編輯器完成編輯和保存文件時,其默認編碼是ANSI和中文。但是,更多的時候,php的語言在設置語言環境時是utf-8,直接保存後用於apache等http-server解析會出現亂碼。

所以需要註意的是,用記事本編輯後,文件可以另存為“另存為”,文件類型要選擇“所有文件”,編碼要和文件中指定的語言編碼壹致。

算術運算符

PHP運算符包括算術運算符、賦值運算符、比較運算符和邏輯運算符。

算術運算符:

加、減、乘、除、模(余數)+、-、*、/、%

賦值運算符:(下面的解釋在很多書裏是不壹樣的)

賦值、加法賦值、減法賦值、乘法賦值、除法賦值和連字符賦值。

=、+=、-=、*=、/=、.=

位運算符:

位與,位或,位或,位非,左移,右移

& amp、|、^、~、<;& lt、gt;& gt

比較運算符:

等於、完全等於、不等於、不完全等於、大於、小於、大於或等於、小於或等於。

==、===、!=(& lt;& gt)、!== 、& gt、& lt、gt;= 、& lt=

邏輯運算符:

邏輯與,邏輯或,邏輯非,邏輯或

& amp& amp、||、!、異或

字符串運算符:

。連接兩個字符串。

  • 上一篇:如何查公司是否是正規公司
  • 下一篇:餐館名稱的完整列表
  • copyright 2024法律諮詢服務網