SlideShare une entreprise Scribd logo
1  sur  7
Télécharger pour lire hors ligne
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).

Contenu connexe

En vedette

Electrospn 6 memarian-full
Electrospn 6 memarian-fullElectrospn 6 memarian-full
Electrospn 6 memarian-full
miroli
 
In-depth look at the Flex compiler and HFCD
In-depth look at the Flex compiler and HFCDIn-depth look at the Flex compiler and HFCD
In-depth look at the Flex compiler and HFCD
Stop Coding
 
12641 Mobile Web Developers Guide
12641 Mobile Web Developers Guide12641 Mobile Web Developers Guide
12641 Mobile Web Developers Guide
sanajeya
 
讓錢和孩子一起長大
讓錢和孩子一起長大讓錢和孩子一起長大
讓錢和孩子一起長大
Kuo-Yi Chen
 
[2011 04 30]python-3장
[2011 04 30]python-3장[2011 04 30]python-3장
[2011 04 30]python-3장
Jong Pil Won
 
Maliana safitri (xii ips 1)
Maliana safitri (xii ips 1)Maliana safitri (xii ips 1)
Maliana safitri (xii ips 1)
Paarief Udin
 
2 rft simplified_scripting_shinoj_z
2 rft simplified_scripting_shinoj_z2 rft simplified_scripting_shinoj_z
2 rft simplified_scripting_shinoj_z
IBM
 
2010 back to school night presentation
2010 back to school night presentation2010 back to school night presentation
2010 back to school night presentation
micklethwait
 
Saját Web rádió készitése .
Saját Web rádió készitése .Saját Web rádió készitése .
Saját Web rádió készitése .
karesz57
 
3 know more_about_rational_performance_tester_8-1-snehamoy_k
3 know more_about_rational_performance_tester_8-1-snehamoy_k3 know more_about_rational_performance_tester_8-1-snehamoy_k
3 know more_about_rational_performance_tester_8-1-snehamoy_k
IBM
 
Smartsteam презентация бесбойлерных стимеров
Smartsteam  презентация бесбойлерных стимеровSmartsteam  презентация бесбойлерных стимеров
Smartsteam презентация бесбойлерных стимеров
Sokirianskiy&Lazerson School
 
Koalalar basketbol oynuyor
Koalalar basketbol oynuyorKoalalar basketbol oynuyor
Koalalar basketbol oynuyor
aybars
 
200901011453050 網咖時代與親子關係
200901011453050 網咖時代與親子關係200901011453050 網咖時代與親子關係
200901011453050 網咖時代與親子關係
Kuo-Yi Chen
 

En vedette (20)

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

Similaire à Os php-5.3new1

Access 18 263_634034061782634040
Access 18 263_634034061782634040Access 18 263_634034061782634040
Access 18 263_634034061782634040
Học Huỳnh Bá
 
C++ can ban(dung thu vien iostream)
C++ can ban(dung thu vien iostream)C++ can ban(dung thu vien iostream)
C++ can ban(dung thu vien iostream)
Nguyễn Phụng
 
Hướng Dẫn Php-3
Hướng Dẫn Php-3Hướng Dẫn Php-3
Hướng Dẫn Php-3
xeroxk
 
Lap Trinh Php Va My Sql
Lap Trinh Php Va My SqlLap Trinh Php Va My Sql
Lap Trinh Php Va My Sql
minhki
 
Lap trinh php va my sql
Lap trinh php va my sqlLap trinh php va my sql
Lap trinh php va my sql
hieusy
 
Tai lieu-laptrinh ph-pvamysql
Tai lieu-laptrinh ph-pvamysqlTai lieu-laptrinh ph-pvamysql
Tai lieu-laptrinh ph-pvamysql
John Phan
 
Haiphongit.com.tai lieu-laptrinh ph-pvamysql
Haiphongit.com.tai lieu-laptrinh ph-pvamysqlHaiphongit.com.tai lieu-laptrinh ph-pvamysql
Haiphongit.com.tai lieu-laptrinh ph-pvamysql
Giang Nguyễn
 

Similaire à Os php-5.3new1 (20)

Os php-7oohabits
Os php-7oohabitsOs php-7oohabits
Os php-7oohabits
 
Access 18 263_634034061782634040
Access 18 263_634034061782634040Access 18 263_634034061782634040
Access 18 263_634034061782634040
 
C++ can ban
C++ can banC++ can ban
C++ can ban
 
C++ can ban(dung thu vien iostream)
C++ can ban(dung thu vien iostream)C++ can ban(dung thu vien iostream)
C++ can ban(dung thu vien iostream)
 
Hướng Dẫn Php-3
Hướng Dẫn Php-3Hướng Dẫn Php-3
Hướng Dẫn Php-3
 
Lập trình PHP và MySQL
Lập trình PHP và MySQLLập trình PHP và MySQL
Lập trình PHP và MySQL
 
Laptrinh ph pvamysql
Laptrinh ph pvamysqlLaptrinh ph pvamysql
Laptrinh ph pvamysql
 
Ngôn ngữ lập trình PHP và MySQL - khoahoclaptrinhweb.tin.vn
Ngôn ngữ lập trình PHP và MySQL - khoahoclaptrinhweb.tin.vnNgôn ngữ lập trình PHP và MySQL - khoahoclaptrinhweb.tin.vn
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
Tài liệu lập trình PHP từ căn bản đến nâng caoTài liệu lập trình PHP từ căn bản đến nâng cao
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
Bài 5: Java Bean - Lập Trình Mạng Nâng CaoBài 5: Java Bean - Lập Trình Mạng Nâng Cao
Bài 5: Java Bean - Lập Trình Mạng Nâng Cao
 
Zing osapi v1.3.3
Zing osapi v1.3.3Zing osapi v1.3.3
Zing osapi v1.3.3
 
Tai lieu huong_dan_ve_lap_trinh_php_7512
Tai lieu huong_dan_ve_lap_trinh_php_7512Tai lieu huong_dan_ve_lap_trinh_php_7512
Tai lieu huong_dan_ve_lap_trinh_php_7512
 
lam_chat_room_3348.pdf
lam_chat_room_3348.pdflam_chat_room_3348.pdf
lam_chat_room_3348.pdf
 
PMMNM.docx
PMMNM.docxPMMNM.docx
PMMNM.docx
 
Lap Trinh Php Va My Sql
Lap Trinh Php Va My SqlLap Trinh Php Va My Sql
Lap Trinh Php Va My Sql
 
Tai lieu-laptrinh ph-pvamysql - bachkhoaaptech.com
Tai lieu-laptrinh ph-pvamysql - bachkhoaaptech.comTai lieu-laptrinh ph-pvamysql - bachkhoaaptech.com
Tai lieu-laptrinh ph-pvamysql - bachkhoaaptech.com
 
Lap trinh php va my sql
Lap trinh php va my sqlLap trinh php va my sql
Lap trinh php va my sql
 
Tai lieu-laptrinh ph-pvamysql
Tai lieu-laptrinh ph-pvamysqlTai lieu-laptrinh ph-pvamysql
Tai lieu-laptrinh ph-pvamysql
 
Haiphongit.com.tai lieu-laptrinh ph-pvamysql
Haiphongit.com.tai lieu-laptrinh ph-pvamysqlHaiphongit.com.tai lieu-laptrinh ph-pvamysql
Haiphongit.com.tai lieu-laptrinh ph-pvamysql
 
Lap trinh huong_doi_tuong
Lap trinh huong_doi_tuongLap trinh huong_doi_tuong
Lap trinh huong_doi_tuong
 

Plus de Giang Nguyễn

Php can ban_bai1_laptrinhwebphp.com
Php can ban_bai1_laptrinhwebphp.comPhp can ban_bai1_laptrinhwebphp.com
Php can ban_bai1_laptrinhwebphp.com
Giang Nguyễn
 
Lap trinh web dong voi php my sql
Lap trinh web dong voi php my sqlLap trinh web dong voi php my sql
Lap trinh web dong voi php my sql
Giang Nguyễn
 
Kentcources 110109221507-phpapp01
Kentcources 110109221507-phpapp01Kentcources 110109221507-phpapp01
Kentcources 110109221507-phpapp01
Giang Nguyễn
 
Hay php architect eav modeling
Hay php architect   eav modelingHay php architect   eav modeling
Hay php architect eav modeling
Giang Nguyễn
 
Haiphongit.com.tai lieu-php.my sql-thiet-ke-web-dong
Haiphongit.com.tai lieu-php.my sql-thiet-ke-web-dongHaiphongit.com.tai lieu-php.my sql-thiet-ke-web-dong
Haiphongit.com.tai lieu-php.my sql-thiet-ke-web-dong
Giang Nguyễn
 
Haiphongit.com.tai lieu-learning-php-my sql
Haiphongit.com.tai lieu-learning-php-my sqlHaiphongit.com.tai lieu-learning-php-my sql
Haiphongit.com.tai lieu-learning-php-my sql
Giang Nguyễn
 
Joomla administratormanual vi_20060206
Joomla administratormanual vi_20060206Joomla administratormanual vi_20060206
Joomla administratormanual vi_20060206
Giang Nguyễn
 
Canbanvethietkevalaptrinhgame
CanbanvethietkevalaptrinhgameCanbanvethietkevalaptrinhgame
Canbanvethietkevalaptrinhgame
Giang Nguyễn
 
Building websites-with-joomla-1-5-sample-chapter-chapter-7-the-menus-menu
Building websites-with-joomla-1-5-sample-chapter-chapter-7-the-menus-menuBuilding websites-with-joomla-1-5-sample-chapter-chapter-7-the-menus-menu
Building websites-with-joomla-1-5-sample-chapter-chapter-7-the-menus-menu
Giang Nguyễn
 
Eclipse pdt indigo release review
Eclipse pdt   indigo release reviewEclipse pdt   indigo release review
Eclipse pdt indigo release review
Giang Nguyễn
 
Bai tap lap trinh web voi joomla csau
Bai tap   lap trinh web voi joomla csauBai tap   lap trinh web voi joomla csau
Bai tap lap trinh web voi joomla csau
Giang Nguyễn
 
1.5 installation manual_version_0.5
1.5 installation manual_version_0.51.5 installation manual_version_0.5
1.5 installation manual_version_0.5
Giang Nguyễn
 
01.chương trình tiếng anh giao tiếp thương mại tại trường đại học kinh tế tp....
01.chương trình tiếng anh giao tiếp thương mại tại trường đại học kinh tế tp....01.chương trình tiếng anh giao tiếp thương mại tại trường đại học kinh tế tp....
01.chương trình tiếng anh giao tiếp thương mại tại trường đại học kinh tế tp....
Giang Nguyễn
 

Plus de Giang Nguyễn (20)

Php can ban_bai1_laptrinhwebphp.com
Php can ban_bai1_laptrinhwebphp.comPhp can ban_bai1_laptrinhwebphp.com
Php can ban_bai1_laptrinhwebphp.com
 
Lap trinh web dong voi php my sql
Lap trinh web dong voi php my sqlLap trinh web dong voi php my sql
Lap trinh web dong voi php my sql
 
Kentcources 110109221507-phpapp01
Kentcources 110109221507-phpapp01Kentcources 110109221507-phpapp01
Kentcources 110109221507-phpapp01
 
Php day4
Php day4Php day4
Php day4
 
Hay php architect eav modeling
Hay php architect   eav modelingHay php architect   eav modeling
Hay php architect eav modeling
 
Haiphongit.com.tai lieu-php.my sql-thiet-ke-web-dong
Haiphongit.com.tai lieu-php.my sql-thiet-ke-web-dongHaiphongit.com.tai lieu-php.my sql-thiet-ke-web-dong
Haiphongit.com.tai lieu-php.my sql-thiet-ke-web-dong
 
Chuong07 php
Chuong07 phpChuong07 php
Chuong07 php
 
Bai th08 php voi csdl
Bai th08 php voi csdlBai th08 php voi csdl
Bai th08 php voi csdl
 
Haiphongit.com.tai lieu-learning-php-my sql
Haiphongit.com.tai lieu-learning-php-my sqlHaiphongit.com.tai lieu-learning-php-my sql
Haiphongit.com.tai lieu-learning-php-my sql
 
Hd lap pttkht2008
Hd lap pttkht2008Hd lap pttkht2008
Hd lap pttkht2008
 
Joomla administratormanual vi_20060206
Joomla administratormanual vi_20060206Joomla administratormanual vi_20060206
Joomla administratormanual vi_20060206
 
Canbanvethietkevalaptrinhgame
CanbanvethietkevalaptrinhgameCanbanvethietkevalaptrinhgame
Canbanvethietkevalaptrinhgame
 
C1
C1C1
C1
 
Building websites-with-joomla-1-5-sample-chapter-chapter-7-the-menus-menu
Building websites-with-joomla-1-5-sample-chapter-chapter-7-the-menus-menuBuilding websites-with-joomla-1-5-sample-chapter-chapter-7-the-menus-menu
Building websites-with-joomla-1-5-sample-chapter-chapter-7-the-menus-menu
 
Eclipse pdt indigo release review
Eclipse pdt   indigo release reviewEclipse pdt   indigo release review
Eclipse pdt indigo release review
 
Bai tap lap trinh web voi joomla csau
Bai tap   lap trinh web voi joomla csauBai tap   lap trinh web voi joomla csau
Bai tap lap trinh web voi joomla csau
 
Analyse
AnalyseAnalyse
Analyse
 
Bai1
Bai1Bai1
Bai1
 
1.5 installation manual_version_0.5
1.5 installation manual_version_0.51.5 installation manual_version_0.5
1.5 installation manual_version_0.5
 
01.chương trình tiếng anh giao tiếp thương mại tại trường đại học kinh tế tp....
01.chương trình tiếng anh giao tiếp thương mại tại trường đại học kinh tế tp....01.chương trình tiếng anh giao tiếp thương mại tại trường đại học kinh tế tp....
01.chương trình tiếng anh giao tiếp thương mại tại trường đại học kinh tế tp....
 

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).