SlideShare a Scribd company logo
Có gì m i trong PHP 5.3, Ph n 1: Các thay       i v giao di n     it   ng                                 Page 1 of 7


 Có gì m i trong PHP 5.3, Ph n 1: Các thay                                            iv
 giao di n i t ng
 M c    : Trung bình

 John Mertic, K s ph n m m, SugarCRM
 06 11 2009

       PHP V5.3 lên l ch phát hành s m. Nhi u c tính m i trong b n phát hành này ã trong các giai o n k
       ho ch trong vài n m.        c chào bán ban u nh m t “PHP V6 không có tr giúp mã Unicode g c”,
       PHP V5.3 ã        c phát tri n thành m t b n nâng c p v i nhi u c tính cho dòng PHP V5. Nó    c
       thi t k làm m t b n phát hành chu n b cho các nhà phát tri n PHP V6 khi nó xu t hi n v i nhi u c
       tính m i, làm s ch các c tính hi n t i b ng cách thay i chút ít (tweaking) các ch c n ng, c nh khía
       c nh v n n c bi t, và lo i b các tính n ng c mà s không còn trong các b n sau này c a PHP. Trong
       lo t bài "Có gì m i trong PHP V5.3" này, chúng ta s xem xét các c tính m i c a b n V5.3, và xem
       cách chúng      c dùng, c ng nh cách dùng chúng trong ng d ng web c a b n.

 PHP V5 và l p trình h           ng      it    ng
 Khi PHP V5       c phát hành vào n m 2004, nó ã là m t b c i nh y v t so v i nh ng gì mà PHP V4 cung c p v
 m t thi t k và l p trình h ng i t ng OOP (object-oriented program). Nó b sung m t vài c i ti n c n thi t, thí d
 nh kh n ng nhìn th y l p (class visibility), các b d ng (constructors) và các b hu! (destructors) phù h p, các g i ý
 v ki u, và API ph n nh l p (class-reflection API). Nó m" ra cánh c#a cho vi c l p trình h ng i t ng tiên ti n
 trong PHP, và cho phép b n th c hi n nhi u m$u thi t k d% h&n nhi u, cùng v i các l p thi t k và các API t t h&n.
 Trong PHP V5.3, nhi u b sung gia t ng ã        c a vào nh m t ng c 'ng OOP. Nh ng c i ti n này ã n m trong
 l(nh v c b sung cú pháp và c i ti n hi u n ng.   b)t u, chúng ta hãy quan sát các c tính m i s*n có v i các
 ph &ng th c và thành viên t(nh.




 Các ph       ng th c t nh           c c i thi n và qu n lí thành viên (member handling)
 M t b sung h u ích trong PHP V5 là kh n ng quy nh m t ph &ng th c ho c thành viên c a m t l p là t(nh (PHP
 V4 th c hi n h+ tr truy c p t(nh n các ph &ng th c và các thành viên c a l p, nh ng không có kh n ng quy nh
 r ng ph &ng th c ho c thành viên ó      c thi t k      truy c p t(nh). Truy c p t(nh c bi t r t h u ích th c hi n
 m$u thi t k &n l, (singleton design), n&i ch- t.n t i m t th c th c a l p.

 PHP V5.3 ã thêm vào m t s      c tính t ng c 'ng tr giúp các thành viên và các ph &ng th c t(nh trong m t l p.
   u tiên chúng ta s quan sát m t ph &ng th c ma thu t v/a  c thêm vào: __callStatic().

 Ph     ng th c ma thu t _callStatic()
 PHP V5 có m t s ph &ng th c        c xác nh m t cách c bi t, có th s# d ng bên trong các l p g i là các ph ng
 th c ma thu t (magic methods). Khi     c xác nh trong l p, các ph &ng th c này cung c p các ch c n ng c bi t,
 và có kh n ng ch u t i (kh n ng cho phép m t ph &ng th c ch p nh n các ki u tham s khác nhau) và tính a d ng
 (polymorphism) (kh n ng cho phép các ki u d li u khác nhau s# d ng cùng m t giao di n). Chúng c ng m" cánh
 c#a cho vi c s# d ng các ki u khác nhau c a các ph &ng th c l p trình OOP và các m$u thi t k b ng PHP m t cách
 d% dàng.

 Trong PHP V5.3 có m t ph &ng th c ma thu t m i        c thêm vào: __callStatic(). Nó làm vi c t &ng t nh
 ph &ng th c ma thu t __call()         c thi t k   x# lý các cu c g i ra ph &ng th c cho các ph &ng th c mà không
    c xác nh ho c nhìn th y      c trong l p. Tuy nhiên, __callStatic()           c thi t k   x# lý các cu c g i ra
 ph &ng th c t(nh, chúng cho chúng ta kh n ng thi t k t t h&n s quá t i v ph &ng th c c a chúng ta. M t ví d v
Có gì m i trong PHP 5.3, Ph n 1: Các thay                  i v giao di n         it    ng                                  Page 2 of 7

 cách s# d ng ph &ng th c này nh d                i ây.

 Li t kê 1. Ví d v vi c s d ng __callStatic()                            i v i __call()




     !!                        ""
          #       $
         %&                    ""


 M t i u c n l u ý là PHP th c hi n áp t nh ngh(a c a ph &ng th c __callStatic(); nó ph i là chung
 (public), và nó ph i  c tuyên b là t(nh. C ng nh v y, ph &ng th c ma thu t __call() c ng ph i c xác                              nh
 là chung, úng nh t t c các ph &ng th c ma thu t ph i là nh v y.




 Các cu c g i ra t nh                    ng
 M t c tính r t hay c a PHP là các bi n cho bi n (variable variables). i u có ngh(a là b n có th s# d ng chu+i giá
 tr c a m t bi n quy nh tên c a m t bi n khác. Nói m t cách khác, b n có th th c hi n vi c gì ó gi ng nh d i
   ây.

 Li t kê 2. Các bi n “bi n” (Variable variables)
          ' # ( (
           ' # ()(
               '   ""                   ( (
                   ""                   ()(
                 ' ""                   ()(


 Cùng m t khái ni m có th                 c s# d ng v i các hàm, ho c th m chí các ph &ng th c l p nh d           i ây.

 Li t kê 3. Tên các hàm bi n và ph                ng th c l p
              *

                                    +
                          ,    -



              # (*    (
                # (       +(
   ' #        $                ""                               (*   (
   '%&                         ""             ,    -


   i m m i " PHP V5.3 là kh n ng có tên c a l p khi                      c quy   nh là m t bi n khi th c hi n m t cu c g i t(nh. Vi c
 này m" ra m t vài kh n ng m i, nh d i ây.
Có gì m i trong PHP 5.3, Ph n 1: Các thay                        i v giao di n       it   ng                                Page 3 of 7


 Li t kê 4.         t tên l p bi n
           *

                                               +
                           ,   -



            # (*      (
              # (         +(
           !!                      ""          ,       -


 B sung này t o ra khía c nh v các bi n c a bi n trong PHP                       y    , cho phép dùng chúng ch- trong t/ng tình hu ng
 v i PHP.

 Chúng ta hãy quan sát m t c i ti n h u ích h&n cho vi c s# d ng các ph &ng th c và thành viên t(nh: liên k t t(nh
 mu n (late static binding).




 Liên k t t nh mu n
 M t trong nh ng i u phi n ph c nh t v PHP tr c V5.3 là cách ph &ng th c và thành viên t(nh               c x# lý. Cho n
 nay, các tham chi u t(nh (static references), ch0ng h n nh các tham chi u        c làm b n thân nó ho c __CLASS__,
     c gi i quy t trong ph m vi l p, trong ó hàm        c nh ngh(a. V n là " ch+ tham chi u s không úng n u l p
     c m" r ng và cu c g i       c th c hi n t/ l p con (child class) m i. Liên k t t(nh mu n ã      c thêm vào PHP
 V5.3 gi m b t v n này.             minh ho rõ h&n, chúng ta hãy t o ra m t l p v i m t ph &ng th c t(nh d i ây.

 Li t kê 5. L p Foo v i ph              ng th c t nh test()


                                         # (       (



                               !!




 Chúng ta hãy m" r ng l p này. Chúng ta s                      nh ngh(a l i thành viên $name trong l p con này.

 Li t kê 6. L p con Bar m r ng l p cha Foo

                .          '

                                               # (.        (



 Chúng ta th c hi n cu c g i t(nh trong Li t kê 7.

 Li t kê 7. Các cu c g i ph             ng th c t nh test()

       .       !!


 K t qu t/ cu c g i ó s là chu+i Foo. ây là do tham chi u self::$name th c hi n trong ph &ng th c test()
     c th c hi n b ng l p Foo. Liên k t xu t hi n b ng cách này vì ây là n&i hàm c nh ngh(a.
Có gì m i trong PHP 5.3, Ph n 1: Các thay                                  i v giao di n   it   ng                   Page 4 of 7


 PHP V5.3 ã thêm t/ khoá static cho phép b n th c hi n m t tham chi u i v i l p hi n t i. Do ó b n s thay
   i l p Foo trên s# d ng t/ khoá này trong Li t kê 8, và chúng ta s th y r ng Bar s thay vào k t qu .

 Li t kê 8. S d ng t khoá static


                                                # (        (



                                           !!



           .
                                                # (.       (


       .       !!                 ""                (.     (


 M t i u c n l u ý v t/ khoá static là nó không làm vi c nh cách làm trong ng c nh không t(nh. i u này có
 ngh(a là các nguyên t)c k th/a bình th 'ng không áp d ng v i các cu c g i t(nh. T/ khoá static s ch- c n c g)ng
 gi i quy t cu c g i trong l p hi n t i thay cho l p mà hàm c nh ngh(a. ây là m t i u quan tr ng c n l u ý.

 Bây gi' chúng ta ã th y m t vài c i ti n v i các ph &ng th c và thành viên t(nh, hãy quan sát m t vài l p m i             c
 b sung vào b ph n r t h u ích c a PHP V5, là Th vi n l p PHP chu n.




 Th vi n l p PHP chu n
 Th vi n l p PHP chu n (SPL) là m t t p các giao di n và các l p thêm vào PHP V5,             c thi t k  gi i quy t các
 v n chu n. Các v n này g.m vi c cho m t i t ng                  c l p (iterateable), cho phép m t i t ng i x# c
 nh m t m ng, ho c th c hi n m t danh sách móc n i. L i i m c a vi c s# d ng các l p và các ph &ng th c này là "
 ch+ chúng là riêng cho PHP, ngh(a là chúng s nhanh h&n n u chúng           c th c hi n trong chính PHP. Chúng c ng,
 trong nhi u ví d , cho phép nhi u hàm trong c a PHP s# d ng các i t ng tr c ti p này, ch0ng h n nh cách giao
 di n bi n l p (Iterator interface) cho phép b n s# d ng c u trúc foreach l p l i trên i t ng.

 PHP V5.3 thêm khá nhi u l p vào SPL. Có m t i u chúng ta ã tham kh o tr c ây là cài t danh sách móc n i
 kép (doubly linked list) trong l p SPL SplDoublyLinkedList. Nó      c s# d ng b"i hai l p SPL m i khác:
 SplStack, cài t stack (vùng nh x p ch.ng), và SplQueue, cài t hàng i.

 Chúng ta hãy quan sát cách b n có th s# d ng l p SplStack                                 th c hi n m t vùng nh .

 Li t kê 9. S d ng SplStack
       + #          $                  +
  ""                    $    $                                 +
       +%&               ( (
       +%&               ( (
       +%&               ( (

  ""            $                                                  +
                             +         ""             /

  ""                    0                                          +
                             +
                1             2
  ""            0                      ! 1 2 1 2 1 2

  ""                                            +
                +%&                    ""                ( (
  ""   $                 $                                             +
Có gì m i trong PHP 5.3, Ph n 1: Các thay             i v giao di n   it   ng                            Page 5 of 7


                     +           ""           3


 SqlQueue làm vi c theo ki u t &ng t , nh ng nó làm vi c nh m t hàng i (vào tr c, ra tr c; ch không ph i là
 vào sau, ra tr c, nh là stack. Ngoài ra, còn cài t ng (SplHeap), c ng nh là hàng i riêng và các cài t ng
 cho vài tình hu ng nh t nh (SplMinHeap, SplMaxHeap và SplPriorityQueue).

 M t b sung h u ích n a là l p SplFixedArray mà nh tên ã ng ý, là cài t m ng kích th c c             nh. T t nhiên
 nó khá nhanh — th c ra là nhanh n m c          c o th# chu n, nhanh h&n 10-30% so v i cài t m ng l)p s*n trong
 PHP. S t ng t c này là do vi c m ng này có m t kích th c c       nh, không thay i nh PHP m c nh, và do không
     c phép s# d ng các ch- m c phi s . Li t kê 10 ch- ra cách nó   c s# d ng.

 Li t kê 10. SplFixedArray
            #   $            '    4       /
           152 # (   (
           162 # (   (
           132 # (    (
      %&      ) 7    ""                           )
           1/2 # (           (
                                  0
               1 0       2
  8      !
  1    2 1     2 1       2 1          2


 Ngoài ra còn có m t vài l p bi n l p m i ã     c thêm vào: FilesystemIterator và GlobIterator. Các
 bi n này làm vi c nh các l p bi n l p khác trong PHP, nh ng chúng   c thi t k c bi t dùng cho vài cá th nh t
   nh.

 M t thay i n a v i SPL là " ch+ bây gi' nó luôn    c kích ho t trong PHP V5.3. Trong các phiên b n tr   cc a
 PHP V5, b n có th vô hi u hoá SPL vào lúc d ch, nh ng i v i PHP V5.3, vi c này không còn cho phép.

 Các b sung m i cho SPL thêm m t s ch c n ng h u ích vào PHP r t d% s# d ng, c ng nh các b sung v c u trúc
 d li u, thí d nh các danh sách móc n i kép, stack, heap, và hàng i. Các l p này có th     c s# d ng thay th
 các cài t không gian ng 'i dùng mà b n có th có, chúng s thu     ct c     gia t ng và s k t h p t t h&n v i các
 c u trúc và hàm PHP khác nhau.

 Gi' chúng ta ã th y m t vài b sung m i cho SPL, hãy xem cách OOP trong PHP V5.3 ã thu          c m t hi u n ng
 quan tr ng và c i thi n vi c s# d ng b nh v i b sung vi c gom rác xoay vòng (circular garbage collection).




 Gom rác xoay vòng
 M t v n mà các nhà phát tri n PHP g p ph i trên quan i m hi u n ng là vi c gom rác (garbage collection). PHP có
 m t b gom rác khá &n gi n, mà v c& b n s thu th p rác cho m t i t ng khi nó không còn n m trong ph m vi
 h p l . Cách mà nó th c hi n vi c này v m t n i t i là b ng cách s# d ng m t b m quy chi u (reference counter),
    khi b    m ch m 0 (có ngh(a là không còn các quy chi u n i t ng này n a), i t ng s           c thu gom và
 g ch b t/ b nh .
 Vi c này khá t t, nh ng có th tr" thành m t v n trong các tình th khi m t i t ng quy chi u n m t i t ng
 khác theo quan h cha-con (parent-child relationship). V i tình tình th này, b  m quy chi u i v i các i t ng
  ó không     c thu gom, nên b nh s# d ng b ng i t ng này l u l i trong b nh không quy chi u (unreferenced
 memory) và không       c ng/ng c p phát, cho n khi k t thúc yêu c u. Chúng ta hãy quan sát m t ví d khi v n
 này x y ra.

 Li t kê 11. Quan h l p cha-con b thu gom rác không phù h p trong b n PHP V5.2 và b n tr          c ó
           9
Có gì m i trong PHP 5.3, Ph n 1: Các thay       i v giao di n      it   ng                                Page 6 of 7


                %&       #    $




          9

                %&        #




 Trong ví d này, m+i khi b n t o ra m t cá th c a l p Parent và sau ó cá th ti p theo không còn n m trong ph m
 vi h p l , b nh không bao gi'        c gi i phóng, nh v y k ch b n l nh s ngày càng l n thêm trong vi c s# d ng b
 nh . Có m t s gi i pháp v không gian ng 'i dùng i v i v n này, ch0ng h n nh t o m t hàm hu! cho l p cha
 mà s tr c ti p gi i phóng i t ng con. Hàm hu! này s ph i           c g i ra riêng tr c khi b thi t t quy chi u l p
 cha (parent class reference). Th c hi n t t c các vi c này gây ph c t p m t chút cho ch &ng trình c a b n.

 Trong PHP V5.3, b gom rác s dò tìm các quy chi u vòng này và có th gi i phóng h t b nh chúng s# d ng, do ó
 vi c s# d ng b nh PHP s gi           c ngang b ng khi k ch b n l nh c th c hi n. Khi m+i tham chi u n l p
 Parent       c lo i b , tham chi u l p Child bên trong l p Parent c ng s      c gom rác.




 Tóm t t
 PHP ã ti n thêm m t quãng dài v cách h+ tr l p trình h ng i t ng, t/ vi c h+ tr y u trong nh ng ngày còn
 PHP V4 cho n các b sung nhi u c i ti n h&n trong PHP V5 và các thay i nh v i các b n ti p sau ó. Hi n nay,
 PHP V5.3 ã t         c m t vài c i thi n h ng thú, g.m các c i ti n v cú pháp nh các ph &ng th c ma thu t m i
 __callStatic(), các cu c g i t(nh ng, liên k t t(nh mu n, ph &ng th c t(nh, và tr giúp thành viên. Các b
 sung m i vào SPL v i các b sung danh sách móc n i kép, các stack, heap, và hàng ch', t ra m t vài c u trúc d
 li u thông th 'ng trên u ngón tay b n (d% tìm th y) và làm cho chúng d% s# d ng. Cu i cùng, b gom rác xoay vòng
 mong i t/ lâu ã n nh b nh và các v n v hi u n ng làm vi c v i các l p t quy chi u, b ng cách cài t m t
 b gom rác nhi u c i ti n mà ã gi i phóng b nh úng cách cho các cá th vòng tròn này. T t c các c tính này
 làm cho PHP V5.3 tr" thành m t ngôn ng m nh h&n nhi u i v i l p trình h ng i t ng.



 Tài nguyên
 H ct p
      Ti p t c lo t bài này v i "Có gì m i trong PHP V5.3, Ph n 2, Ph n 3 và Ph n 4.

       Trang Zend Developer Zone có t li u dành cho các hàm qu n lý b nh (memory manager functions).

          c "M t h   ng d$n v di trú PHP V5"       tìm hi u cách di trú mã   c phát tri n trong PHP t/ b n V4   n
       b n V5.

       "K t n i các ng d ng PHP v i Apache Derby" ch- cho b n cách cài       t và l p c u hình PHP trên Windows®
       (m t vài b c có th áp d ng v i Linux®).

       PHP.net là tài nguyên trung tâm dành cho các nhà phát tri n PHP.

       Xem trang "Danh sách các tài li u PHP nên      c."

       Duy t qua toàn b n i dung PHP trên developerWorks.

       M" r ng các k n ng PHP c a b n b ng cách xem trang Các tài nguyên d án PHP c a IBM developerWorks.
Có gì m i trong PHP 5.3, Ph n 1: Các thay      i v giao di n     it   ng                                Page 7 of 7

       L)ng nghe các ph ng v n và th o lu n thú v cho các nhà phát tri n ph n m m, xem trang developerWorks
       podcasts.

       S# d ng c& s" d li u v i PHP? Hãy th# Zend Core for IBM, ó là m t môi tr 'ng phát tri n và ch y s n xu t
       PHP li n kh i, s*n dùng ngay, d% dàng cài t và có h+ tr DB2 V9 c a IBM.

       Theo sát các s ki n k thu t và các bu i phát tin trên m ng.

       Theo dõi các h i ngh s)p    c t ch c, các tri n lãm th &ng m i, các bu i phát thanh trên m ng và các s ki n
       khác trên kh)p th gi i   c các nhà phát tri n mã ngu.n m" c a IBM quan tâm.

       Truy c p trang Open source zone c a developerWorks có các thông tin v cách làm th nào, các công c , và
       c p nh t i t ng sâu h&n giúp b n phát tri n các công ngh mã ngu.n m" và s# d ng chúng b ng các s n
       ph m c a IBM.

       Xem và tìm hi u v IBM và các công ngh mã ngu.n m" và các ch c n ng c a s n ph m các trình di%n mi%n
       phí developerWorks Theo yêu c u.


 L y s n ph m và công ngh
          i m i d án phát tri n mã ngu.n m" ti p theo c a b n b ng ph n m m ch y th# c a IBM, có s*n     t iv
       ho c trên DVD.

       T i v các phiên b n ch y th# c a s n ph m IBM và b)t tay vào các công c phát tri n ng d ng và các s n
       ph m ph n m m trung gian DB2®, Lotus®, Rational®, Tivoli® và WebSphere®.


 Th o lu n
       Tham gia vào developerWorks blogs và vào c ng .ng developerWorks.

       Tham gia vào H i th o developerWorks PHP Forum: Phát tri n các ng d ng PHP v i các s n ph m Qu n tr
       Thông tin IBM (DB2, IDS).



   ôi nét v tác gi
  John Mertic ã t t nghi p i h c ngành Khoa h c Máy tính c a i h c Qu c gia Kent và hi n là k s ph n m m
  t i SugarCRM. Ông có nhi u óng góp vào các d án mã ngu.n m", áng k nh t là các d án PHP; ông là ng 'i t o
  ra và duy trì B Cài t PHP trên Windows (PHP Windows Installer).

More Related Content

PDF
Os xmldomphp
PDF
Pascal 2
PPT
Giáo trình lập trình C
PPTX
Perfecting the Conversion Process to Get More Leads
PDF
Revista nuevo hipódromo de las flores reunión nº 7
PDF
Resolucion 71 susp. spc
DOC
Resultados generales reunión nº 6 09 10-16
PPTX
Arena Multimedia Media Plan (shared using VisualBee)
Os xmldomphp
Pascal 2
Giáo trình lập trình C
Perfecting the Conversion Process to Get More Leads
Revista nuevo hipódromo de las flores reunión nº 7
Resolucion 71 susp. spc
Resultados generales reunión nº 6 09 10-16
Arena Multimedia Media Plan (shared using VisualBee)

Viewers also liked (20)

KEY
First class
PDF
Electrospn 6 memarian-full
PPT
Bauwens Kloetzer professional use of social media
KEY
In-depth look at the Flex compiler and HFCD
PDF
DMSRetail Coaching
PDF
12641 Mobile Web Developers Guide
PPT
Perfect egg sous vide style
PPT
讓錢和孩子一起長大
PPTX
[2011 04 30]python-3장
PPT
Alex thankful
PPTX
Maliana safitri (xii ips 1)
PDF
2 rft simplified_scripting_shinoj_z
 
PDF
2010 back to school night presentation
DOC
Saját Web rádió készitése .
PDF
3 know more_about_rational_performance_tester_8-1-snehamoy_k
 
PDF
Yrke2025 april 2011
PDF
Smartsteam презентация бесбойлерных стимеров
PPTX
Koalalar basketbol oynuyor
PPTX
Test Presentation
PPT
200901011453050 網咖時代與親子關係
First class
Electrospn 6 memarian-full
Bauwens Kloetzer professional use of social media
In-depth look at the Flex compiler and HFCD
DMSRetail Coaching
12641 Mobile Web Developers Guide
Perfect egg sous vide style
讓錢和孩子一起長大
[2011 04 30]python-3장
Alex thankful
Maliana safitri (xii ips 1)
2 rft simplified_scripting_shinoj_z
 
2010 back to school night presentation
Saját Web rádió készitése .
3 know more_about_rational_performance_tester_8-1-snehamoy_k
 
Yrke2025 april 2011
Smartsteam презентация бесбойлерных стимеров
Koalalar basketbol oynuyor
Test Presentation
200901011453050 網咖時代與親子關係

Similar to Os php-5.3new1 (20)

PDF
Os php-7oohabits
PDF
Access 18 263_634034061782634040
PPTX
introduction to java script, history, functionalities
PDF
C++ can ban
PDF
C++ can ban(dung thu vien iostream)
PDF
Hướng Dẫn Php-3
PDF
Laptrinh ph pvamysql
PDF
Lập trình PHP và MySQL
PDF
Lap trinh PHP va MySQL (tài liệu tham khảo))
PDF
Ngôn ngữ lập trình PHP và MySQL - khoahoclaptrinhweb.tin.vn
PDF
Tài liệu lập trình PHP từ căn bản đến nâng cao
PPT
Bài 5: Java Bean - Lập Trình Mạng Nâng Cao
PDF
Zing osapi v1.3.3
PDF
Tai lieu huong_dan_ve_lap_trinh_php_7512
PPTX
Slide CDCS-chuyen_de_co_so_HVKTMM123.pptx
PDF
lam_chat_room_3348.pdf
DOCX
PMMNM.docx
PDF
Tai lieu-laptrinh ph-pvamysql
PDF
Lap trinh php va my sql
PDF
Lap Trinh Php Va My Sql
Os php-7oohabits
Access 18 263_634034061782634040
introduction to java script, history, functionalities
C++ can ban
C++ can ban(dung thu vien iostream)
Hướng Dẫn Php-3
Laptrinh ph pvamysql
Lập trình PHP và MySQL
Lap trinh PHP va MySQL (tài liệu tham khảo))
Ngôn ngữ lập trình PHP và MySQL - khoahoclaptrinhweb.tin.vn
Tài liệu lập trình PHP từ căn bản đến nâng cao
Bài 5: Java Bean - Lập Trình Mạng Nâng Cao
Zing osapi v1.3.3
Tai lieu huong_dan_ve_lap_trinh_php_7512
Slide CDCS-chuyen_de_co_so_HVKTMM123.pptx
lam_chat_room_3348.pdf
PMMNM.docx
Tai lieu-laptrinh ph-pvamysql
Lap trinh php va my sql
Lap Trinh Php Va My Sql

More from Giang Nguyễn (20)

PDF
Php can ban_bai1_laptrinhwebphp.com
PDF
Lap trinh web dong voi php my sql
PDF
Kentcources 110109221507-phpapp01
PDF
Php day4
PDF
Hay php architect eav modeling
PDF
Haiphongit.com.tai lieu-php.my sql-thiet-ke-web-dong
PDF
Haiphongit.com.tai lieu-laptrinh ph-pvamysql
PDF
Chuong07 php
PDF
Bai th08 php voi csdl
PDF
Haiphongit.com.tai lieu-learning-php-my sql
PDF
Hd lap pttkht2008
PDF
Joomla administratormanual vi_20060206
PDF
Canbanvethietkevalaptrinhgame
PDF
Building websites-with-joomla-1-5-sample-chapter-chapter-7-the-menus-menu
PDF
Eclipse pdt indigo release review
PDF
Bai tap lap trinh web voi joomla csau
PDF
PDF
1.5 installation manual_version_0.5
Php can ban_bai1_laptrinhwebphp.com
Lap trinh web dong voi php my sql
Kentcources 110109221507-phpapp01
Php day4
Hay php architect eav modeling
Haiphongit.com.tai lieu-php.my sql-thiet-ke-web-dong
Haiphongit.com.tai lieu-laptrinh ph-pvamysql
Chuong07 php
Bai th08 php voi csdl
Haiphongit.com.tai lieu-learning-php-my sql
Hd lap pttkht2008
Joomla administratormanual vi_20060206
Canbanvethietkevalaptrinhgame
Building websites-with-joomla-1-5-sample-chapter-chapter-7-the-menus-menu
Eclipse pdt indigo release review
Bai tap lap trinh web voi joomla csau
1.5 installation manual_version_0.5

Os php-5.3new1

  • 1. Có gì m i trong PHP 5.3, Ph n 1: Các thay i v giao di n it ng Page 1 of 7 Có gì m i trong PHP 5.3, Ph n 1: Các thay iv giao di n i t ng M c : Trung bình John Mertic, K s ph n m m, SugarCRM 06 11 2009 PHP V5.3 lên l ch phát hành s m. Nhi u c tính m i trong b n phát hành này ã trong các giai o n k ho ch trong vài n m. c chào bán ban u nh m t “PHP V6 không có tr giúp mã Unicode g c”, PHP V5.3 ã c phát tri n thành m t b n nâng c p v i nhi u c tính cho dòng PHP V5. Nó c thi t k làm m t b n phát hành chu n b cho các nhà phát tri n PHP V6 khi nó xu t hi n v i nhi u c tính m i, làm s ch các c tính hi n t i b ng cách thay i chút ít (tweaking) các ch c n ng, c nh khía c nh v n n c bi t, và lo i b các tính n ng c mà s không còn trong các b n sau này c a PHP. Trong lo t bài "Có gì m i trong PHP V5.3" này, chúng ta s xem xét các c tính m i c a b n V5.3, và xem cách chúng c dùng, c ng nh cách dùng chúng trong ng d ng web c a b n. PHP V5 và l p trình h ng it ng Khi PHP V5 c phát hành vào n m 2004, nó ã là m t b c i nh y v t so v i nh ng gì mà PHP V4 cung c p v m t thi t k và l p trình h ng i t ng OOP (object-oriented program). Nó b sung m t vài c i ti n c n thi t, thí d nh kh n ng nhìn th y l p (class visibility), các b d ng (constructors) và các b hu! (destructors) phù h p, các g i ý v ki u, và API ph n nh l p (class-reflection API). Nó m" ra cánh c#a cho vi c l p trình h ng i t ng tiên ti n trong PHP, và cho phép b n th c hi n nhi u m$u thi t k d% h&n nhi u, cùng v i các l p thi t k và các API t t h&n. Trong PHP V5.3, nhi u b sung gia t ng ã c a vào nh m t ng c 'ng OOP. Nh ng c i ti n này ã n m trong l(nh v c b sung cú pháp và c i ti n hi u n ng. b)t u, chúng ta hãy quan sát các c tính m i s*n có v i các ph &ng th c và thành viên t(nh. Các ph ng th c t nh c c i thi n và qu n lí thành viên (member handling) M t b sung h u ích trong PHP V5 là kh n ng quy nh m t ph &ng th c ho c thành viên c a m t l p là t(nh (PHP V4 th c hi n h+ tr truy c p t(nh n các ph &ng th c và các thành viên c a l p, nh ng không có kh n ng quy nh r ng ph &ng th c ho c thành viên ó c thi t k truy c p t(nh). Truy c p t(nh c bi t r t h u ích th c hi n m$u thi t k &n l, (singleton design), n&i ch- t.n t i m t th c th c a l p. PHP V5.3 ã thêm vào m t s c tính t ng c 'ng tr giúp các thành viên và các ph &ng th c t(nh trong m t l p. u tiên chúng ta s quan sát m t ph &ng th c ma thu t v/a c thêm vào: __callStatic(). Ph ng th c ma thu t _callStatic() PHP V5 có m t s ph &ng th c c xác nh m t cách c bi t, có th s# d ng bên trong các l p g i là các ph ng th c ma thu t (magic methods). Khi c xác nh trong l p, các ph &ng th c này cung c p các ch c n ng c bi t, và có kh n ng ch u t i (kh n ng cho phép m t ph &ng th c ch p nh n các ki u tham s khác nhau) và tính a d ng (polymorphism) (kh n ng cho phép các ki u d li u khác nhau s# d ng cùng m t giao di n). Chúng c ng m" cánh c#a cho vi c s# d ng các ki u khác nhau c a các ph &ng th c l p trình OOP và các m$u thi t k b ng PHP m t cách d% dàng. Trong PHP V5.3 có m t ph &ng th c ma thu t m i c thêm vào: __callStatic(). Nó làm vi c t &ng t nh ph &ng th c ma thu t __call() c thi t k x# lý các cu c g i ra ph &ng th c cho các ph &ng th c mà không c xác nh ho c nhìn th y c trong l p. Tuy nhiên, __callStatic() c thi t k x# lý các cu c g i ra ph &ng th c t(nh, chúng cho chúng ta kh n ng thi t k t t h&n s quá t i v ph &ng th c c a chúng ta. M t ví d v
  • 2. Có gì m i trong PHP 5.3, Ph n 1: Các thay i v giao di n it ng Page 2 of 7 cách s# d ng ph &ng th c này nh d i ây. Li t kê 1. Ví d v vi c s d ng __callStatic() i v i __call() !! "" # $ %& "" M t i u c n l u ý là PHP th c hi n áp t nh ngh(a c a ph &ng th c __callStatic(); nó ph i là chung (public), và nó ph i c tuyên b là t(nh. C ng nh v y, ph &ng th c ma thu t __call() c ng ph i c xác nh là chung, úng nh t t c các ph &ng th c ma thu t ph i là nh v y. Các cu c g i ra t nh ng M t c tính r t hay c a PHP là các bi n cho bi n (variable variables). i u có ngh(a là b n có th s# d ng chu+i giá tr c a m t bi n quy nh tên c a m t bi n khác. Nói m t cách khác, b n có th th c hi n vi c gì ó gi ng nh d i ây. Li t kê 2. Các bi n “bi n” (Variable variables) ' # ( ( ' # ()( ' "" ( ( "" ()( ' "" ()( Cùng m t khái ni m có th c s# d ng v i các hàm, ho c th m chí các ph &ng th c l p nh d i ây. Li t kê 3. Tên các hàm bi n và ph ng th c l p * + , - # (* ( # ( +( ' # $ "" (* ( '%& "" , - i m m i " PHP V5.3 là kh n ng có tên c a l p khi c quy nh là m t bi n khi th c hi n m t cu c g i t(nh. Vi c này m" ra m t vài kh n ng m i, nh d i ây.
  • 3. Có gì m i trong PHP 5.3, Ph n 1: Các thay i v giao di n it ng Page 3 of 7 Li t kê 4. t tên l p bi n * + , - # (* ( # ( +( !! "" , - B sung này t o ra khía c nh v các bi n c a bi n trong PHP y , cho phép dùng chúng ch- trong t/ng tình hu ng v i PHP. Chúng ta hãy quan sát m t c i ti n h u ích h&n cho vi c s# d ng các ph &ng th c và thành viên t(nh: liên k t t(nh mu n (late static binding). Liên k t t nh mu n M t trong nh ng i u phi n ph c nh t v PHP tr c V5.3 là cách ph &ng th c và thành viên t(nh c x# lý. Cho n nay, các tham chi u t(nh (static references), ch0ng h n nh các tham chi u c làm b n thân nó ho c __CLASS__, c gi i quy t trong ph m vi l p, trong ó hàm c nh ngh(a. V n là " ch+ tham chi u s không úng n u l p c m" r ng và cu c g i c th c hi n t/ l p con (child class) m i. Liên k t t(nh mu n ã c thêm vào PHP V5.3 gi m b t v n này. minh ho rõ h&n, chúng ta hãy t o ra m t l p v i m t ph &ng th c t(nh d i ây. Li t kê 5. L p Foo v i ph ng th c t nh test() # ( ( !! Chúng ta hãy m" r ng l p này. Chúng ta s nh ngh(a l i thành viên $name trong l p con này. Li t kê 6. L p con Bar m r ng l p cha Foo . ' # (. ( Chúng ta th c hi n cu c g i t(nh trong Li t kê 7. Li t kê 7. Các cu c g i ph ng th c t nh test() . !! K t qu t/ cu c g i ó s là chu+i Foo. ây là do tham chi u self::$name th c hi n trong ph &ng th c test() c th c hi n b ng l p Foo. Liên k t xu t hi n b ng cách này vì ây là n&i hàm c nh ngh(a.
  • 4. Có gì m i trong PHP 5.3, Ph n 1: Các thay i v giao di n it ng Page 4 of 7 PHP V5.3 ã thêm t/ khoá static cho phép b n th c hi n m t tham chi u i v i l p hi n t i. Do ó b n s thay i l p Foo trên s# d ng t/ khoá này trong Li t kê 8, và chúng ta s th y r ng Bar s thay vào k t qu . Li t kê 8. S d ng t khoá static # ( ( !! . # (. ( . !! "" (. ( M t i u c n l u ý v t/ khoá static là nó không làm vi c nh cách làm trong ng c nh không t(nh. i u này có ngh(a là các nguyên t)c k th/a bình th 'ng không áp d ng v i các cu c g i t(nh. T/ khoá static s ch- c n c g)ng gi i quy t cu c g i trong l p hi n t i thay cho l p mà hàm c nh ngh(a. ây là m t i u quan tr ng c n l u ý. Bây gi' chúng ta ã th y m t vài c i ti n v i các ph &ng th c và thành viên t(nh, hãy quan sát m t vài l p m i c b sung vào b ph n r t h u ích c a PHP V5, là Th vi n l p PHP chu n. Th vi n l p PHP chu n Th vi n l p PHP chu n (SPL) là m t t p các giao di n và các l p thêm vào PHP V5, c thi t k gi i quy t các v n chu n. Các v n này g.m vi c cho m t i t ng c l p (iterateable), cho phép m t i t ng i x# c nh m t m ng, ho c th c hi n m t danh sách móc n i. L i i m c a vi c s# d ng các l p và các ph &ng th c này là " ch+ chúng là riêng cho PHP, ngh(a là chúng s nhanh h&n n u chúng c th c hi n trong chính PHP. Chúng c ng, trong nhi u ví d , cho phép nhi u hàm trong c a PHP s# d ng các i t ng tr c ti p này, ch0ng h n nh cách giao di n bi n l p (Iterator interface) cho phép b n s# d ng c u trúc foreach l p l i trên i t ng. PHP V5.3 thêm khá nhi u l p vào SPL. Có m t i u chúng ta ã tham kh o tr c ây là cài t danh sách móc n i kép (doubly linked list) trong l p SPL SplDoublyLinkedList. Nó c s# d ng b"i hai l p SPL m i khác: SplStack, cài t stack (vùng nh x p ch.ng), và SplQueue, cài t hàng i. Chúng ta hãy quan sát cách b n có th s# d ng l p SplStack th c hi n m t vùng nh . Li t kê 9. S d ng SplStack + # $ + "" $ $ + +%& ( ( +%& ( ( +%& ( ( "" $ + + "" / "" 0 + + 1 2 "" 0 ! 1 2 1 2 1 2 "" + +%& "" ( ( "" $ $ +
  • 5. Có gì m i trong PHP 5.3, Ph n 1: Các thay i v giao di n it ng Page 5 of 7 + "" 3 SqlQueue làm vi c theo ki u t &ng t , nh ng nó làm vi c nh m t hàng i (vào tr c, ra tr c; ch không ph i là vào sau, ra tr c, nh là stack. Ngoài ra, còn cài t ng (SplHeap), c ng nh là hàng i riêng và các cài t ng cho vài tình hu ng nh t nh (SplMinHeap, SplMaxHeap và SplPriorityQueue). M t b sung h u ích n a là l p SplFixedArray mà nh tên ã ng ý, là cài t m ng kích th c c nh. T t nhiên nó khá nhanh — th c ra là nhanh n m c c o th# chu n, nhanh h&n 10-30% so v i cài t m ng l)p s*n trong PHP. S t ng t c này là do vi c m ng này có m t kích th c c nh, không thay i nh PHP m c nh, và do không c phép s# d ng các ch- m c phi s . Li t kê 10 ch- ra cách nó c s# d ng. Li t kê 10. SplFixedArray # $ ' 4 / 152 # ( ( 162 # ( ( 132 # ( ( %& ) 7 "" ) 1/2 # ( ( 0 1 0 2 8 ! 1 2 1 2 1 2 1 2 Ngoài ra còn có m t vài l p bi n l p m i ã c thêm vào: FilesystemIterator và GlobIterator. Các bi n này làm vi c nh các l p bi n l p khác trong PHP, nh ng chúng c thi t k c bi t dùng cho vài cá th nh t nh. M t thay i n a v i SPL là " ch+ bây gi' nó luôn c kích ho t trong PHP V5.3. Trong các phiên b n tr cc a PHP V5, b n có th vô hi u hoá SPL vào lúc d ch, nh ng i v i PHP V5.3, vi c này không còn cho phép. Các b sung m i cho SPL thêm m t s ch c n ng h u ích vào PHP r t d% s# d ng, c ng nh các b sung v c u trúc d li u, thí d nh các danh sách móc n i kép, stack, heap, và hàng i. Các l p này có th c s# d ng thay th các cài t không gian ng 'i dùng mà b n có th có, chúng s thu ct c gia t ng và s k t h p t t h&n v i các c u trúc và hàm PHP khác nhau. Gi' chúng ta ã th y m t vài b sung m i cho SPL, hãy xem cách OOP trong PHP V5.3 ã thu c m t hi u n ng quan tr ng và c i thi n vi c s# d ng b nh v i b sung vi c gom rác xoay vòng (circular garbage collection). Gom rác xoay vòng M t v n mà các nhà phát tri n PHP g p ph i trên quan i m hi u n ng là vi c gom rác (garbage collection). PHP có m t b gom rác khá &n gi n, mà v c& b n s thu th p rác cho m t i t ng khi nó không còn n m trong ph m vi h p l . Cách mà nó th c hi n vi c này v m t n i t i là b ng cách s# d ng m t b m quy chi u (reference counter), khi b m ch m 0 (có ngh(a là không còn các quy chi u n i t ng này n a), i t ng s c thu gom và g ch b t/ b nh . Vi c này khá t t, nh ng có th tr" thành m t v n trong các tình th khi m t i t ng quy chi u n m t i t ng khác theo quan h cha-con (parent-child relationship). V i tình tình th này, b m quy chi u i v i các i t ng ó không c thu gom, nên b nh s# d ng b ng i t ng này l u l i trong b nh không quy chi u (unreferenced memory) và không c ng/ng c p phát, cho n khi k t thúc yêu c u. Chúng ta hãy quan sát m t ví d khi v n này x y ra. Li t kê 11. Quan h l p cha-con b thu gom rác không phù h p trong b n PHP V5.2 và b n tr c ó 9
  • 6. Có gì m i trong PHP 5.3, Ph n 1: Các thay i v giao di n it ng Page 6 of 7 %& # $ 9 %& # Trong ví d này, m+i khi b n t o ra m t cá th c a l p Parent và sau ó cá th ti p theo không còn n m trong ph m vi h p l , b nh không bao gi' c gi i phóng, nh v y k ch b n l nh s ngày càng l n thêm trong vi c s# d ng b nh . Có m t s gi i pháp v không gian ng 'i dùng i v i v n này, ch0ng h n nh t o m t hàm hu! cho l p cha mà s tr c ti p gi i phóng i t ng con. Hàm hu! này s ph i c g i ra riêng tr c khi b thi t t quy chi u l p cha (parent class reference). Th c hi n t t c các vi c này gây ph c t p m t chút cho ch &ng trình c a b n. Trong PHP V5.3, b gom rác s dò tìm các quy chi u vòng này và có th gi i phóng h t b nh chúng s# d ng, do ó vi c s# d ng b nh PHP s gi c ngang b ng khi k ch b n l nh c th c hi n. Khi m+i tham chi u n l p Parent c lo i b , tham chi u l p Child bên trong l p Parent c ng s c gom rác. Tóm t t PHP ã ti n thêm m t quãng dài v cách h+ tr l p trình h ng i t ng, t/ vi c h+ tr y u trong nh ng ngày còn PHP V4 cho n các b sung nhi u c i ti n h&n trong PHP V5 và các thay i nh v i các b n ti p sau ó. Hi n nay, PHP V5.3 ã t c m t vài c i thi n h ng thú, g.m các c i ti n v cú pháp nh các ph &ng th c ma thu t m i __callStatic(), các cu c g i t(nh ng, liên k t t(nh mu n, ph &ng th c t(nh, và tr giúp thành viên. Các b sung m i vào SPL v i các b sung danh sách móc n i kép, các stack, heap, và hàng ch', t ra m t vài c u trúc d li u thông th 'ng trên u ngón tay b n (d% tìm th y) và làm cho chúng d% s# d ng. Cu i cùng, b gom rác xoay vòng mong i t/ lâu ã n nh b nh và các v n v hi u n ng làm vi c v i các l p t quy chi u, b ng cách cài t m t b gom rác nhi u c i ti n mà ã gi i phóng b nh úng cách cho các cá th vòng tròn này. T t c các c tính này làm cho PHP V5.3 tr" thành m t ngôn ng m nh h&n nhi u i v i l p trình h ng i t ng. Tài nguyên H ct p Ti p t c lo t bài này v i "Có gì m i trong PHP V5.3, Ph n 2, Ph n 3 và Ph n 4. Trang Zend Developer Zone có t li u dành cho các hàm qu n lý b nh (memory manager functions). c "M t h ng d$n v di trú PHP V5" tìm hi u cách di trú mã c phát tri n trong PHP t/ b n V4 n b n V5. "K t n i các ng d ng PHP v i Apache Derby" ch- cho b n cách cài t và l p c u hình PHP trên Windows® (m t vài b c có th áp d ng v i Linux®). PHP.net là tài nguyên trung tâm dành cho các nhà phát tri n PHP. Xem trang "Danh sách các tài li u PHP nên c." Duy t qua toàn b n i dung PHP trên developerWorks. M" r ng các k n ng PHP c a b n b ng cách xem trang Các tài nguyên d án PHP c a IBM developerWorks.
  • 7. Có gì m i trong PHP 5.3, Ph n 1: Các thay i v giao di n it ng Page 7 of 7 L)ng nghe các ph ng v n và th o lu n thú v cho các nhà phát tri n ph n m m, xem trang developerWorks podcasts. S# d ng c& s" d li u v i PHP? Hãy th# Zend Core for IBM, ó là m t môi tr 'ng phát tri n và ch y s n xu t PHP li n kh i, s*n dùng ngay, d% dàng cài t và có h+ tr DB2 V9 c a IBM. Theo sát các s ki n k thu t và các bu i phát tin trên m ng. Theo dõi các h i ngh s)p c t ch c, các tri n lãm th &ng m i, các bu i phát thanh trên m ng và các s ki n khác trên kh)p th gi i c các nhà phát tri n mã ngu.n m" c a IBM quan tâm. Truy c p trang Open source zone c a developerWorks có các thông tin v cách làm th nào, các công c , và c p nh t i t ng sâu h&n giúp b n phát tri n các công ngh mã ngu.n m" và s# d ng chúng b ng các s n ph m c a IBM. Xem và tìm hi u v IBM và các công ngh mã ngu.n m" và các ch c n ng c a s n ph m các trình di%n mi%n phí developerWorks Theo yêu c u. L y s n ph m và công ngh i m i d án phát tri n mã ngu.n m" ti p theo c a b n b ng ph n m m ch y th# c a IBM, có s*n t iv ho c trên DVD. T i v các phiên b n ch y th# c a s n ph m IBM và b)t tay vào các công c phát tri n ng d ng và các s n ph m ph n m m trung gian DB2®, Lotus®, Rational®, Tivoli® và WebSphere®. Th o lu n Tham gia vào developerWorks blogs và vào c ng .ng developerWorks. Tham gia vào H i th o developerWorks PHP Forum: Phát tri n các ng d ng PHP v i các s n ph m Qu n tr Thông tin IBM (DB2, IDS). ôi nét v tác gi John Mertic ã t t nghi p i h c ngành Khoa h c Máy tính c a i h c Qu c gia Kent và hi n là k s ph n m m t i SugarCRM. Ông có nhi u óng góp vào các d án mã ngu.n m", áng k nh t là các d án PHP; ông là ng 'i t o ra và duy trì B Cài t PHP trên Windows (PHP Windows Installer).