xây dựng php framework “made in tự tui” _ blog hoc tap.pdf

21
9/11/2014 Xây dựng PHP Framework “Made in tự tui” | Blog Hoc Tap http://bloghoctap.com/lap-trinh-php/xay-dung-php-framework-made-in-tu-tui.html 1/21 Blog Hoc Tap Xây dng PHP Framework “Made in ttui” September 11th, 2011 trong danh mc PHP Đã lâu mi có thi gian ngi viết bài chia svi các bnvcác kthut trong quá trình làm vicvi PHP ca mình. Hôm nay, mình chia sđến các bnmtsvkhi xây dng mt framework PHP cho riêng mình. Bài viết không dành cho phncó thai và các bndịứng vi ngôn nglp trình web PHP.

Upload: haanhtai

Post on 22-Nov-2015

36 views

Category:

Documents


4 download

DESCRIPTION

Xây dựng PHP Framework “Made in tự tui” _ Blog Hoc Tap.pdf

TRANSCRIPT

  • 9/11/2014 Xy dng PHP Framework Made in t tui | Blog Hoc Tap

    http://bloghoctap.com/lap-trinh-php/xay-dung-php-framework-made-in-tu-tui.html 1/21

    BlogHocTap

    XydngPHPFrameworkMadeinttui

    September11th,2011trongdanhmcPHP

    lumicthigianngivitbichiasviccbnvcckthuttrongqutrnhlmvicviPHPcamnh.Hmnay,mnhchiasnccbnmtsvnkhixydngmtframeworkPHPchoringmnh.BivitkhngdnhchophncthaivccbndngvingnnglptrnhwebPHP.

  • 9/11/2014 Xy dng PHP Framework Made in t tui | Blog Hoc Tap

    http://bloghoctap.com/lap-trinh-php/xay-dung-php-framework-made-in-tu-tui.html 2/21

    KhngtngilunnirngvitPHPframeworkchichokh,cbitbaonhiuciPHPframeworkttlmri,vitchichomtmchachcttvmnhnghhuhtccbncngngheiunythngxuyn.Thtsnglnhvy,crtnhiuPHPframeworkrttthingi,vyccbncthiliuccframeworkuranuaicngtheocitritldngframeworkcangikhc^^.

    HuhtccPHPframeworkuhngnmttpitngdeveloperno,tdnkh,tquymngdngtonnh,ttptnhnngnhiuntvchcchnchngcciPHPframeworknovitrapng100%nhucuchowebsitecabnhaywebsitemkhchhngyucubnphttrinvthnglthaciny,thiucikiavccPHPframeworkarathngtheonguynlOneSizeFitsAllcngngsdng.Do,bnstipcnccvnnhanhhnnulframeworkcabn,cthlphttrinmihoccitin,nngcp,cpnht.

    MnhkhngtptrungvovicsosnhccPHPframeworkcngnhcngdngcaframeworkttuinhiuvccbncngcthhnhdungcphnnocngdngcavicitheoframeworkcamnh.MnhchiasmtsvnkthutmmnhpdngchoframeworkxydngchoccwebsitecamnhcngnhlReader.vnccbncthhnhdungcvicxydngmtPHPframeworkkhngcglngs.

    MtPHPFrameworktheomnhcthdngclframeworkchtrmtscimsau:

  • 9/11/2014 Xy dng PHP Framework Made in t tui | Blog Hoc Tap

    http://bloghoctap.com/lap-trinh-php/xay-dung-php-framework-made-in-tu-tui.html 3/21

    1.OOP

    2.CutrcFile/Directoryngin

    3.RegistryvFrontControllerPattern

    4.MhnhMVC

    5.Phnquyn

    6.Caching&Scalability

    7.DatabaseAbstraction

    8.TemplateEngine

    9.HtrURLRewrite

    10.angnng

    NuccbntnglmnhiuhoccnhiuvPHPFrameworkthcnkhnhiucimkhcmccframeworkhtrnhORM,HMVC,TestMnhkhngphildevelopernngvlthuytcaosiu,bicchtipcncamnhhngnvicframeworkphithcsnginnhngcngscmnhcngnhsuynchuynxydngccngdnglnkhicpnht,citin.

  • 9/11/2014 Xy dng PHP Framework Made in t tui | Blog Hoc Tap

    http://bloghoctap.com/lap-trinh-php/xay-dung-php-framework-made-in-tu-tui.html 4/21

    1.OOP

    NubnnochanghenOOP(Lptrnhhngitng)thmnhnghcthbnangthiustmtcigccknghimtrngnumunphttrinwebtrongthiibygi.HuhtccPHPFrameworkhinnayutipcntheoOOPnnvictrinkhaiframeworkcabntheoOOPsgipviclmvicnhm,tisdngcodekhitrinkhaiwebsitecabnddngvthuntinhn.

    Thngthmiclasssctoringtrongmtfilephpvttrongccthmctngngngngcnhkhiincludechy.HthngcabncthcnhiuloiClass,vdccclasslccModel,Controller,ViewhocnginlccclassUtilitythchinmtstnhnngnlnhgiemail,download,resize,helper

    OOPtrongframeworkcabnnnhtrLazyloading,tclcchtngincludefileClassnutoobjectchkhngphimilnchylincludefilemanualbnghminclude

    2.CutrcFile/Directoryngin

    yclliubnnncnnhcktrckhixydngframeworkcngnhdngframeworkno.Nuframeworkcabnchthngfile,thmcrmr,khngtheoquylut,nhmchcnngthkhicvncndebugchnhsa,citinsnhhngnbnvteamcamnhrtnhiu.

  • 9/11/2014 Xy dng PHP Framework Made in t tui | Blog Hoc Tap

    http://bloghoctap.com/lap-trinh-php/xay-dung-php-framework-made-in-tu-tui.html 5/21

    Nguyntccamnhlhthngkhngcqunhiuthmc,vdcccthmcchoModel,View,Controller,Include,Upload,Language,Librarygomccclasshayfilelinquanvo.Ritrongnhngthmc,tythitkmmnhcthchiathmcconchophhp.

    3.RegistryvFrontControllerPattern

    SdngmtsPatternthngdngsgipmhnhngdngcabndhiuhnchongikhctipcnlnuviframeworkcabn.

    RegistryPatternlmtpatternngin,gingnhmtbinglobalchungchotonbngdngcthtruycptheodngthuctnhitngvchaccthngtinchungnhobjectconfig,setting,language,db

    FrontControllerPatterncnglmtpatternthngdng,quyclttcrequestPHPphiiqua1filenotptrungxlcctinxl,huxltrckhiiuhngncccontroller/actiontngng.Patternnythngthyhnhthcttcccrequestuiquafile/index.php,scccxlchungnhincludethvin,bootstraphthng,toregistry

    4.MhnhMVC

    MhnhMVClmtmhnhtytheocmnhncatngngivhngtipcnthcchthitkmhnhMVCcngkhc.KhngtnngccvnlthuytnhModel,View,Controllerlg,nphi

  • 9/11/2014 Xy dng PHP Framework Made in t tui | Blog Hoc Tap

    http://bloghoctap.com/lap-trinh-php/xay-dung-php-framework-made-in-tu-tui.html 6/21

    nhthnomigilModel,View,Controllernhm.Tuilmth,tuigilModel,cnanhnikhngphiModellchuyncaanh.lcchtipcnMVCcamnhvmnhcngchiasbndi.

    Model:ModellccClassktnitrctipnDatabasethngquaDatabaseAbstraction(PDO)thaotclnccTable,cngnhmhnhORM,mitablennc1ModelthchinccthaotcnhThm(INSERTINTO),Chnhsa(UPDATE),Xa(DELETEFROM),Truyxuttmkim(SELECT).Ngoira,tytheoModelmcccmethodkhcvdnhmodelUSERcamnhcthcccphngthcgetSmallImage()lyavatarpath

    View:llayermnhnvicxutktqurequestrafromtend,cthlHTML,XML,JSON,PlaintexthocHTML,CSS,ImageHthngViewthngktnitimttemplateenginenogipViewtrinkhainginvnhanhchnghn.

    Controller:Tytheohthngcabnthbnthitkcontroller.CccontrollerthnglccxlktniccModelvinhau,thchinccxlcbnlinquannRequest(GET,POST,FormValidate)vktniviViewxutraHTML,XMLnhthitkcaView.TrongControllerscccAction,tclccxlnhcho1chcnng.VdtacControllerProductcthcccActionnhLitk,chitit,tmkim

    Ngoira,hthngcamnhsdngkhinimControllerGroup,tclgomcccontrollerchunglibvo1thmcgil1controllergroup,

  • 9/11/2014 Xy dng PHP Framework Made in t tui | Blog Hoc Tap

    http://bloghoctap.com/lap-trinh-php/xay-dung-php-framework-made-in-tu-tui.html 7/21

    vdcccontrollerxlbackendhocfrontendhocbackgroundtask

    5.Phnquyn

    Hthngphnquyncabnphichititmbongngi,ngvic.BncththitkccUserGroupkhcnhauvphnquyntheotngGroupvdGroupGuest,Member,Moderator,AdminkthpvihthngchcnngcaControllerGroup,Controller,Action,bncthphnquynchititntngitngcththchinctnhnngny,tnhnngkia

    Bnkhngnhtthitphithitkdatabasethchinvicny,vhthnglnmcnndatabasephnquynthhiticho

  • 9/11/2014 Xy dng PHP Framework Made in t tui | Blog Hoc Tap

    http://bloghoctap.com/lap-trinh-php/xay-dung-php-framework-made-in-tu-tui.html 8/21

    Database.Tachngindngfilesettingnophnquynuser,cntableuserbnchcnthmmtfieldlGROUPIDphnquynthchhpchouser.

    6.Caching&Scalability

    Cachingsgiphthngcabngimticctnhnngthngxuyncntruyxutdatabasehoccctruyxutdatabasetnnhiuthigian.Bncnthitktndngcccchcachetnginnphctpvcnhiucchcacheihibncithoccuhnhtrn1hocnhiuserver.

    BncthxemxtviccachechoModeldatahoccachechoxlca1Actionno,vdthytrangchkhngthayinhiuthbncachetonbnidungtrangchvfilehocRAM(tytheobnchncacheu)gimticctruyvndatabaselpilplitrangch.

    CncachechoModelthnginhn,vdthngtinca1UserthayvlcnobncngSELECTttableUserlychititthsaomnhkhngluvocache,rikhimunlythngtinusertachcnvocachelythngtinuserny,nubnchnthigiancachephhpthdliucabnsgnnhlthigianthc(realtimedata)

    Scalabilitylkhnngmrngcawebsite.Bnnnthitksaochocththaythccthnhphnringr,tiuringrkhimrngwebsitekhngphithayinhiu.Vdthayicchcache,vics

  • 9/11/2014 Xy dng PHP Framework Made in t tui | Blog Hoc Tap

    http://bloghoctap.com/lap-trinh-php/xay-dung-php-framework-made-in-tu-tui.html 9/21

    dngccphngthccaModelkhngthayi,chlchitittrinkhaitrongModelthayi.BncthchuyncachefilesangcacheRAMhoctRAMtrongAPClnRAMtrongMemcache.

    7.DatabaseAbstraction

    Ngynay,himkhicnthycctruyvndatabasesdngmysql_*()hoccchmtngtkhcmthngthydngAbstractionthngquaccObjectDbtruyvndatabase.ThmchviORM,bncngcththyrngkhngcnkhinimSQLmcdbnangsdngSQLDBServer.

    CnhiuDatabaseAbstractionchobnlachn,nhngnubnangphttrinPHP5thPDOcllgiiphpttnhtbisngincngnhhtrkhnhiuthnhtransaction,preparedstatementchobomt

    8.TemplateEngine

    TemplateenginelhthnglmvictrctipviHTMLtemplatevphihpviViewlayertrongMVCxutwebpage,dliurachongidng.Ckhnhiutemplateenginelachntnginnphctp.MnhchnSmartybitnhthngdngvphongphcan.NuainismartylmtTemplateenginechmthnucdpnichuynvimnhthmnhschchobnbitclbnsai.

    9.HtrURLRewrite

  • 9/11/2014 Xy dng PHP Framework Made in t tui | Blog Hoc Tap

    http://bloghoctap.com/lap-trinh-php/xay-dung-php-framework-made-in-tu-tui.html 10/21

    Ngynay,SEOlmtphnttyucaccwebsite.KhngphichmangmcchSEO,vicrewriteURLcncnhiumcchnhlmchovicchiascclinkhiuquvdhiuhn.KhixydngFramework,bncnxemxtvichtrrewriteURLgipchowebsitecabntthn.CnhiubnthanphinllmRewriteURLthphicanthipRegularExpressiontrnfile.htaccesskhnhiu.Thcra,nubnsdngFrontcontrollerpatternchoRewriteURLthsthymivicnginhn.

    Thayvfile.htaccesslovicrewrite,bnhychoPHPlovny,khivoPHPfile,bnsrtthoimirewritekiugcngc,phntchthahbicnhiutrnghprewritedngPHPkmviwebsitecabnmihiuqu.Do,nupdngpatternnythfilehtaccesscabnchcn1dngrewriterulesau:

    Options +FollowSymLinksOptions -IndexesRewriteEngine onRewriteBase /RewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-dRewriteRule ^(.*)$ index.php?route=$1 [L,QSA]

    10.angnng

    Ngoivichtrangnngdliu(nubncnhucuthbtbucbnphitrinkhai)thhtrangnngchogiaodincngrtquantrng.Victhitksaochovicthayi,thmbtngnngphinginvngbsgipbntitkimrtnhiuthigiankhimrnghngnngcawebsitesuany.

  • 9/11/2014 Xy dng PHP Framework Made in t tui | Blog Hoc Tap

    http://bloghoctap.com/lap-trinh-php/xay-dung-php-framework-made-in-tu-tui.html 11/21

    trnl10cimmmnhthykhitrinkhaimtPHPFrameworkbncnphixemxttrinkhai.Ttnhin,ccyutnhbomt,Documentation,Codestylephiliubtbuckhitrinkhai1framework.BivitkhngthnotipcntheohngCodecvcrtnhiuCode,vthcsnubnmuncodeframeworkthbncngbitphicodegri,bivitnygipbnthycmtbctranhcthtmhiuthmvtxydngchomnh1PHPframeworkthtngvcthtrthnh1Opensourceniting.

    Nitipbivitny,nmtrongchuihotngFundingforReader.vn,bloghoctapstchcmtbuihithocthhngdnxydngPHPframeworknccitngquantm,ngthitmkimkinhphtiptcduytrvmrngmngxhischReader.vn^^.

    NidunghithosxoayquanhvicchiaskinhnghimxydngmtPHPFrameworknhtnglmviReader.vncngnhchiasnccbn10vntrnhbytrnccbncthnhntngtnhnvCodephinhthnochkhngtrutngnhtrn.

    Tnhitho:LmFrameworkkhngkh.

    Trnhby:VDuyTunBloghoctap.com&Reader.vnFounder

    Thigian:8:3011:30,Chnht,ngy02/10/2011

  • 9/11/2014 Xy dng PHP Framework Made in t tui | Blog Hoc Tap

    http://bloghoctap.com/lap-trinh-php/xay-dung-php-framework-made-in-tu-tui.html 12/21

    aim:angcpnht[TP.HChMinh]

    Slngdkin:50ngi.

    DoslngngingkbuiOfflinekhngnnmnhrtticthngbonccbnlbuiOfflineskhngdinranhdkin.Mongccbnthngcm!Nucchithbloghoctapslnltchiasnccbnnhngvnccptrn.

    Bivitlinquan:

    1. TnhyuFramework,PlugInhayBackdoor?2. Photoshopframeworkthitkweb

    17bnhlun

    dungsays:September12,2011at11:08am

    Tunkhngpostciframeworkcamnhychopkonnghinculunnh?

    [Reply]

  • 9/11/2014 Xy dng PHP Framework Made in t tui | Blog Hoc Tap

    http://bloghoctap.com/lap-trinh-php/xay-dung-php-framework-made-in-tu-tui.html 13/21

    Reply

    dungsays:September12,2011at11:09am

    C1ciquantrngkhisdngccpopularframeworkslnc1activecommunityvmnhsthngxuyncupdateccchcnngmi

    [Reply]

    adminReply:September12th,2011at12:10pm

    Hianh,nuemqungciframeworklnthuphimtcngngivitbinylmgmchl..blahblah..frameworkcatuin,xii^^.khngphilcchtipcncaem,hihi.Vliframeworkcaemcibpqu,alnchtmingikhngbitxi,vnlmadeinttuim,uphixyraopensource.

    [Reply]

    Reply

    MinhTunsays:September14,2011at2:11am

    UrlRoutingwithPHPthtlkhhiu.Hmnoanhlm1bihngdnklngvn

    [Reply]

  • 9/11/2014 Xy dng PHP Framework Made in t tui | Blog Hoc Tap

    http://bloghoctap.com/lap-trinh-php/xay-dung-php-framework-made-in-tu-tui.html 14/21

    Reply

    trnthsays:September14,2011at11:46am

    Uicinythuccptngthcao.Emlmquenvikhinimframeworkquymthpthithngthemhaytipxcframeworkdidngthemewordpress(emtonlmcinym).Numithuttpc.Rtmongscngheanhgingovobuihm.Mnhbitccucacito.Mnhlmcinhdhnnhiu.hihi

    [Reply]

    Reply

    LHongDngsays:September16,2011at7:26am

    nglkhngnncigcngItsmine,butitsforfree!.Nucimnhnghrahoccookmnngthcngphictrchtphch,cvythcontributormichngmlmvicc.DevelopersvngidngVNnhngfree(hoccracked)qulurinnmradngvichuyntrtinchobnquyn.nghcchlmcaTun,saunynutchcseminarthmnhcngchcthlmtheocchnythi.Nukhngthchcvtcmmnnghincuvhctp!

    [Reply]

    Reply

    thamtusays:September17,2011at12:33pm

  • 9/11/2014 Xy dng PHP Framework Made in t tui | Blog Hoc Tap

    http://bloghoctap.com/lap-trinh-php/xay-dung-php-framework-made-in-tu-tui.html 15/21

    frameworkmadeinttuimnhc12revnhngvnkhkhncikhonangnngvagiaodin.Thamkhoqua1viframeworkthhcngvnbhnchangnngvagiaodin

    [Reply]

    Reply

    MinhBosays:September18,2011at12:01am

    Vikinhnghimlngvlntrnccloiframework(tframeworkttuituisngnframeworkopensource)vCMSOpensourcethmnhvnthchxinhngframeworkopensource&CMSOpensourcehn.Sdvylv1sldosau:

    1.Frameworktbuildtsngchdot1n3hocnhiuhnchtngilitbuildvinhau.Dochtlngcaframeworkstythucvokinhnghimvtrnhcatngthnhvin.Mthnhvincngtthkinhnghimtngtricngcngt.l1imthuathitsoviFrameworkOpensourcedonhiunggp

    2.iviccwebsitecooperatehocphctphnchtlnhngtrangtintcchophpngkuser,comment,like,v.v..thmnhsdngCMSOpensourcevnnhanh,anton,hiuqu.

    3.CniviccngdngphctptrnnnwebthmnhsesdngFrameworkOpensourcevtrnhcrirocbnmmnhchagp,tndngcnhngthnhqucangiitrc.

  • 9/11/2014 Xy dng PHP Framework Made in t tui | Blog Hoc Tap

    http://bloghoctap.com/lap-trinh-php/xay-dung-php-framework-made-in-tu-tui.html 16/21

    [Reply]

    Reply

    Sonosays:September19,2011at3:44pm

    HianhTun!cbloganhlunhnghmicomment1ci^^.

    Bivitrthay,nhngecmtiuthcmcl:lmhnhMVCrithunhtthitphicnnTemplateEngine(Smarty),phncodevgiaodinctchbitrim,chcnngcachethcmc6mnhn.

    Monganhtrli.

    [Reply]

    adminReply:September19th,2011at3:51pm

    HiSono,MVClmtpatternchungchung,cnTemplateEnginelmtngdngrrngsdngchoViewLayerhayPresentationLayer.EmcthkhngdngTemplateEnginethciViewcaemthno?

    emnilphncodevphngiaodintchbith?

    Khngbitemthnochiuanhmtvskhcbittrn

  • 9/11/2014 Xy dng PHP Framework Made in t tui | Blog Hoc Tap

    http://bloghoctap.com/lap-trinh-php/xay-dung-php-framework-made-in-tu-tui.html 17/21

    chnhllView,tcDesignthkhngcbtkmtonCodePHPnodnhv,tclkhilmviView,emslmhontonviHTML,CSSvJS.VcththoimitndngscmnhcaIDEdesignringmkhngbbucvocodePHP,do,designerkhngquantmnPHPkhilmvicviTemplateengine,ymichnhlsringbitmanhcpn.Thn.

    [Reply]

    Reply

    codersays:October7,2011at9:40pm

    AnhcthnirhnvcchLazyLoadingckhng?ThanksAnhnhiu

    [Reply]

    Reply

    lethanhsonsays:October17,2011at3:13am

    EmthchnhngcuhicaAnhtrongngktukhoa.info

    [Reply]

    Reply

    php.vnsays:October17,2011at11:34pm

    Bcnocnhithuytviphp,bcTungiithiugipvqunlphp.vnci

  • 9/11/2014 Xy dng PHP Framework Made in t tui | Blog Hoc Tap

    http://bloghoctap.com/lap-trinh-php/xay-dung-php-framework-made-in-tu-tui.html 18/21

    [Reply]

    Reply

    KhanhTransays:October31,2011at8:47pm

    AnhTunimianh,emrtmuncthamgiabuiofflinenyKhinotchcthchoembitvinhaa.

    [Reply]

    Reply

    hinhanhdepsays:January17,2012at8:42pm

    hngicnganhemvobuinh

    [Reply]

    Reply

    ichuotsays:February27,2012at1:10pm

    TnhngnimcapcTunsau1thigianmi&mthcngcookdcci1tiniFramwork.SaumyngysmsoitmvsosnhcctemplateenginegnvothmnhquytnhdngTwiglmTemplateEngine.isuvoClass&ObjectcaPHPmithynnhiucihaymmnhchabit

    [Reply]

    Reply

    mrgunsays:April23,2012at10:44am

  • 9/11/2014 Xy dng PHP Framework Made in t tui | Blog Hoc Tap

    http://bloghoctap.com/lap-trinh-php/xay-dung-php-framework-made-in-tu-tui.html 19/21

    Emchocnh.Emxinhi1cht:Khiemlm1websitebnhngtheomhnhmvc.vkosdngframeworknoc.Ttngxl:Controllers:Cccontroller.Models:CcmodelView:CcviewControllergiModelridliuvtrongView.Vd:controllers/produc.phpsgimodelcanmodels/model_product.phpvsauviewraviews/product/index.php

    Emlmwebbnhngnh.Bygitrongtrangchcawebsiteemmunviewlnc:view/product/index.php1gcnhbnphithphilmnhthno.HaytrangmnhmunxydngciMenulydliutCSDLra.Thphivitthmcontrollervmodelriviewcinyemlmc.Nhnghiuthviewntrnhtcctrangthemchalmc.Hi!Emthycngibovitthmlphelpers,emcngcharlm.Mongcccbngip/

    [Reply]

    Reply

  • 9/11/2014 Xy dng PHP Framework Made in t tui | Blog Hoc Tap

    http://bloghoctap.com/lap-trinh-php/xay-dung-php-framework-made-in-tu-tui.html 20/21

    GibnhlunTncabn(btbuc)Email(skhngccngbrangoi)(btbuc)Website

    Gibnhlun

    Notifymeoffollowupcommentsviaemail

    DanhmcAndroid Business Flash

    GraphicDesign ITGuys Javascript

    Miscellaneous Mobile Photography

    PHP Reviewsch SearchEngineOptim

    Security software TechStartup

    Technology UserInterfaceDesig WebDesign

    WebProgramming

    Tmkim

  • 9/11/2014 Xy dng PHP Framework Made in t tui | Blog Hoc Tap

    http://bloghoctap.com/lap-trinh-php/xay-dung-php-framework-made-in-tu-tui.html 21/21

    NHPTCNTM+ENTER

    LutrAugust2014 March2014 December2013

    September2013 August2013 July2013

    June2013 September2012 May2012

    March2012 February2012 January2012

    December2011 November2011 September2011

    August2011 July2011 June2011

    May2011 April2011 March2011

    February2011 January2011 December2010

    November2010 October2010 September2010

    August2010 July2010 June2010

    May2010 April2010 March2010

    February2010 January2010 December2009

    November2009 October2009 September2009

    August2009 July2009 November2008

    October2008 September2008

    ABOUTME GIOTRNHPHP

    2014BlogHocTap