A. 關於php面向對象的問題,求對框架原理了解的大神。
自己設計框架學習意義遠大於實用意義,設計的過程中可能會浪費你不少時間,而且你可能以後永遠不會(99%)用到自己設計的框架,但是對你深入了解PHP還是很有幫助的。
(我自己也有在設計一個框架,如有興趣,可以發給你一起研究)
大部分PHP MVC框架中心思想都是一樣的:
首先要單文件入口(index.php),就是所有的訪問都通過一個文件來控制,這樣就能控制流程了。要實現這個功能就需要apache或者nginx的設置來配合了。以apache為例,最經典的.htacess:
<IfMolemod_rewrite.c>
RewriteEngineOn
RewriteCond%{REQUEST_FILENAME}!-d
RewriteCond%{REQUEST_FILENAME}!-f
RewriteRule^(.*)$index.php?_url=$1[QSA,L]
</IfMole>
此文件的作用就是如果如果訪問的文件或者文件夾存在的話就直接調用文件(用來處理訪問/public/css, /public/js之類的請求),不然的話就將請求轉發給index.php。此時index.php可以調用$_GET['_url'] 來獲得請求。
#一般框架遵循的規則是:[地址]/[控制器名字]/[方法名字]/[參數/參數]
#請求:localhost/test/helloworld/china/shanghai
#在index.php里就可以訪問$_GET['_url']來獲得字元串:/test/helloworld/china/shanghai
然後將字元串explode()成array,根據默認規則獲得以下信息(如果願意可以自己寫一個路由而不用默認方法解析路徑)
控制器:test
方法:helloworld
參數:china, shanghai
先在test.php中:
classtest
{
publicfunctionhelloworld($country,$city)
{
echo'Hello,Iamfrom',$country,$city;
}
}
然後在index.php中:
#這里可以自己定義一個__autoload方法來讓PHP自行require_once()class文件,就不用自己一個一個include()了。
#初始化一個控制器實例:
$test=newtest();
#調用控制器中的方法,並遞交參數
#請查閱PHP函數call_user_func_array()的使用方法
call_user_func_array(array($test,'helloworld'),array('china','shanghai'));
這樣就完成了一個簡單的MVC框架,剩下的就是繼續完善他,你可能需要學習以下知識:
PHP __autoload()的設計和命名空間(namespace)的設計
各種軟體設計模式:singleton, dependency injection, lazy loading
OOP(面向對象編程)PHP類的繼承模式(extends class), PHP介面(implements interface)
PHP資料庫操作類: mysqli類, pdo類
HTTP請求,header中的各種參數設置
Web Programming的安全事項, 如xss防護
《代碼簡潔之道》,《PHP Zend Coding Style》
希望能幫助到你!
B. 自學PHP兩個月了,不會用框架,熟悉面向對象思想。想做一個項目,應該要用什麼樣的架構呢
看項目是什麼類型的就用什麼框架,自學一定要會至少一個框架。比如商城類一般用ecshop,企業站套站就用dedecms,或者想做好一點就用thinkphp,zend,CI,這些都可以的。
C. 為什麼說 ThinkPHP 不是純面向對象的框架
面向對象是一種思想,而不只是單純對類的實例化。
ThinkPHP屬於輕量型的任務式框架,相對於函數式編程有更易於維護的過程封裝,可以很好地把很多任務進行分解分類存放於Model、Controller、View以及擴展Library當中,但它還是不是屬於一個有機體,只是對函數式編程的一種優化
D. PHP進階:面向對象及TP5框架初識
面向過程就是你把代碼封裝成子過程或函數(procere),然後依次去做一件事情;
面向對象就是你把要做的事情抽象成對象,然後告訴具體的那一個對象去做。
面向對象三大特性(封裝,繼承,多態)使得在做復雜的事情的時候效率和正確率得到保證。
在實際的編程中「面向對象」和「面向過程」兩種開發思想一定是同時都用到了的,現在宣傳最多的「面向對象」實際上是以面向對象為主題,面向過程為輔助,往往過分了誇大其作用。
E. php 面向對象框架是怎麼載入類文件的
有沒有定義命名空間啊namespace,如果有這個的話,其下面的代碼肯定有use某個類文件
F. php中都有哪些框架,為什麼要用框架呢,用框架有什麼好處
以下為十個目前最流行的基於MVC設計模式的PHP框架。
1. Yii
Yii是一個基於組件的高性能的PHP的框架,用於開發大規模Web應用。Yii採用嚴格的OOP編寫,並有著完善的庫引用以及全面的教程。從MVC,DAO/ActiveRecord,widgets,caching,等級式RBAC,Web服務,到主體化,I18N和L10N,Yii提供了今日Web 2.0應用開發所需要的幾乎一切功能。而且這個框架的價格也並不太高。事實上,Yii是最有效率的PHP框架之一。
2. CodeIgniter
CodeIgniter是一個應用開發框架——一個為建立PHP網站的人們所設計的工具包。其目標在於快速的開發項目:它提供了豐富的庫組以完成常見的任務,以及簡單的界面,富有條理性的架構來訪問這些庫。使用CodeIgniter開發可以往項目中注入更多的創造力,因為它節省了大量編碼的時間。
3. CakePHP
CakePHP是一個快速開發PHP的框架,其中使用了一些常見的設計模式如ActiveRecord,Association Data Mapping,Front Controller以及MVC。其主要目標在於提供一個令任意水平的PHP開發人員都能夠快速開發web應用的框架,而且這個快速的實現並沒有犧牲項目的彈性。
4. PHPDevShell
PHPDevShell是一個開源(GNU/LGPL)的快速應用開發框架,用於開發不含Javascript的純PHP。它有一個完整的GUI管理員後台界面。其主要目標在於開發插件一類的基於管理的應用,其中速度、安全、穩定性及彈性是最優先考慮的重點。其設計形成了一個簡單的學習曲線,PHP開發者無需學習復雜的新術語。PHPDevShell的到來滿足了開發者們對於一個輕量級但是功能完善,可以無限制的進行配置的GUI的需求。
5. Akelos
Akelos PHP框架是一個基於MVC設計模式的web應用開發平台。基於良好的使用習慣,使用它可以完成如下任務:
◆方便的使用Ajax編寫views
◆通過控制器管理請求(request)及響應(response)
◆管理國際化的應用
◆使用簡單的協議與模型及資料庫通信
你的Akelos應用可以在大多數共享主機服務供應方上運行,因為Akelos對伺服器唯一的要求就是支持PHP。因此,Akelos PHP框架是理想的用於發布單獨web應用的框架,因為它不需要非標准PHP配置便能運行。
6. Symfony
Symfony是一個用於開發PHP5項目的web應用框架。
這個框架的目的在於加速web應用的開發以及維護,減少重復的編碼工作。
Symfony的系統需求不高,可以被輕易的安裝在任意設置上:你只需一個Unix或Windows,搭配一個安裝了PHP5的網路伺服器即可。它與差不多所有的資料庫兼容。Symfony的價位不高,相比主機上的花銷要低得多。
對於PHP開發者而言,使用Symfony是一件很自然的事,其學習曲線只有短短一天。干凈的設計以及代碼可讀性將縮短開發時間。開發者可以將敏捷開發的原理(如DRY,KISS或XP等)應用在其中,將重點放在應用邏輯層面上,而不用花費大量時間在編寫沒完沒了的XML配置文件上。
Symfony旨在建立企業級的完善應用程序。也就是說,你擁有整個設置的控制權:從路徑結構到外部庫,幾乎一切都可以自定義。為了符合企業的開發條例,Symfony還綁定了一些額外的工具,以便於項目的測試,調試以及歸檔。
7. Prado
PRADO團隊由一些PRADO狂熱者組成,這些成員開發並推動PRADO框架以及相關項目的進行。
PRADO的靈感起源於Apache Tapestry。從04年開始,PRADO成為SourceForge上的開源項目之一。這個項目目前進展到了3.x版本。
8. Zend
作為PHP藝術及精神的延伸,Zend框架的基礎在於簡單,面向對象的最佳方法,方便企業的許可協議,以及經過反復測試的快速代碼庫。Zend框架旨在建造更安全,更可靠的Web 2.0應用及web服務,並不斷從前沿廠商(如Google,Amazon,Yahoo,Flickr,StrikeIron和ProgrammableWeb等)的API那裡吸收精華。
9. ZooP
Zoop PHP框架,意為Zoop面向對象的PHP框架。
這是個穩定,可伸縮並可移植的框架。從誕生到現在的5年間,已經在不少產品開發中被使用。Zoop是一個快速,有效並干凈的框架。它的伸縮性很好,你可以只安裝你需要的功能。
對代碼並不很熟悉的開發者也可以通過Zoop快速的開發安全的web應用。熟練的開發者則可以更加將Zoop的彈性利用到極致。
Zoop建議將display,logic以及數據層(MVC)分開使用。
Zoop由很多組件和項目集合而成,其中包括smarty和prototype AJAX框架,PEAR模塊等。高效的核心組件提供了很多你原本需要自己編碼來實現的功能。Zoop內置的糾錯功能可以通過配置實現生產環境下的錯誤日誌生成,這個錯誤日誌提供了很多信息,可讀性很高,可以更輕易的尋找並排除錯誤。
Zoop的一個特別之處在於其GuiControls,在PHP中是一個相當革新的想法。它提供了很多form widgets與驗證完整的集合到一起,並形成了一個可以輕松打造個性化GuiControls的框架。
10. QPHP
QPHP,意為快速PHP,它是一個與ASP.NET類似的MVC框架。基本上它是這樣一個情況:
◆整合了Java和C#的美感
◆除去了在其他PHP框架中使用的Perl形式的意義含糊的語言
◆大量基於OOP的概念
國內的thinkphp也很不錯,使用框架可以避免重建底層函數等,加快開發速度。
G. php內置庫中關於面向對象和面向過程的支持問題
目前php中比較熱門的框架如thinkphp,laravel,ci,yii等都是用的面向對象的思想寫的。用哪一種都是可以的,
這個需要看項目的需求來選擇的,比如有些公司用的ecshop(一個成熟的產品),這個時候我就要用面向過程來寫,因為這個ecshop就是用的面相過程來做的。如果項目是用thinkphp來做,
那我就用面向對象來寫。
H. 編程php學到什麼基礎可以入手框架會面向對象cms可以入手嗎學框架前需要打哪些基礎
框架的話mvc當然要了解了。學完基礎語法,資料庫,面向對象以後你就可以接觸框架了,現在一般的框架都是mvc模式的,所以mvc你一定要知道才能更好的理解框架。你要是以後做php程序員的話除非你要做cms二次開發,不然cms沒有必要看。只要我上面說的那些你都學的差不多了,就開始學習thinkPHP吧。看看手冊啥的比較快,要是不嫌費時間的話看視頻教程也可以啊,關鍵是要自己動手寫,光看是看不會的。希望能幫到你,謝謝。
I. PHP框架設計思想都是面向對象的嗎
簡單業務需求使用「面向過程」思路倒是不錯,簡單快捷。然而隨著業務邏輯增加,功能擴展及維護,慢慢會發現,之前的面向過程開發思路,漸漸不好使了。
曾經遇到一個項目,多城市選擇,既可以選擇省,也可以選擇市,但最多隻能為3個,且不能重復。當時js用的就是面向過程方式寫的,外加封裝幾個函數。但越往後,越發現,這種代碼思路,後期維護,功能擴展,簡直就是大坑。
J. PHP框架與PHP類的區別
用框架能造房子,用類只能造個門。
簡單的說,框架提供了快速搭建網站需要的全部組件。而類可能只是其中的一個組件。
php的類是一個面向對象的概念。
對於面向對象的框架你可以說這個框架是由很多類組成的,但是不一定說拿很多類就能組成一個框架,上面說過了,需要快速搭建網站需要的全部組件才能叫完整的框架。
------------------------------
用框架有用框架的好處,不用自然也有不用的好處,框架可以加快開發效率,成熟,穩定,但框架有局限性,瓶頸也很多,還有一定的門檻,比較成熟的開發團隊都是自己開發框架的,因為適用更靈活,不過我還是推薦你使用框架來進行開發,無論你是新手還是老手。
框架我接觸過一些,國產的thinkPHP和fleaPHP(qeePHP)比較容易上手,有中文支持,適合新手,但是功能明顯不足,國外的象symfony,
yii這類就比較強勁,國內用的最多的還是zend,中文文檔很全,中文用戶也多。
你可以來我們的網站看下框架相關的知識。