Os php-5.3new1

395 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
395
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Os php-5.3new1

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

×