OOP in PHP part-2
August 16, 2018 | Author: Ford AntiTrust | Category: N/A
Short Description
Download OOP in PHP part-2...
Description
OOP in PHP ตอนท ตอนท22 สวสดครบ สหรบในตอนท 2 น นเรจะน เ รจะนเขสเรองทยกขนอกระดบจกตอนท บจกตอนทแลว เพระเรได เพระเร ไดปรบพ บพนในกร นในกร เขยนโปรแกรมแบบเช) ยนโปรแกรมแบบเช)งว งวตถ+ ตถ+มบ มบงแล งแลว และไดทรบถ ทรบถงค งคท ทมมกถ ก ถกใช กใช ในกรเขยนโปรแกรมแบบเช) ยนโปรแกรมแบบเช)งว งวตถ+ ตถ+ซซ งได ง ไดแก แก แมแบบ แบบ (Class กรหอห+ อห+ มข มขอม อมล(Encapsulation ล(Encapsulation ลกแบบ กแบบ (Sub-Class กรสบทอด บทอด (Inheritance วตถ+ ตถ+ (Object กรทหลยร หลยรปแบบ ปแบบ (Polymorphism กรสงข งขอควม อควม (Messaging ค+ณสมบ ณสมบต)ต) (Properties ขอควม อควม (Message แบบแผนพฤต)กรรม กรรม (MethodBehavior โดยจกตอนทแลวน วนนกไดเขยนโปรแกรมแบบเบองตนไปแลวบงบงสวน แตหลย ๆ ทนทไดลองเขยนดตม ตวอยงแลวนนอจจะยงไมทรบถงประโยชนR และเหนภพในกรเอไปใชงนมกนก ในตอนนผผเขยนจะนเขส กรนไปใช ไปใชงนจร) งนจร)งมกข งมกข น ●
●
●
●
●
●
●
●
●
●
พฤตกรรมพ กรรมพ นฐาน(Constructor นฐาน(Constructor Method Behavior) กอนท อนทเรจะน เรจะนไปใชงนจร)ง เรควรจะรถถง กรสรงพฤต)กรรมพนฐนของแมแบบนน ๆ ในบงครงแม งแมแบบนนจะ ถกน กนมสร มสรงว งวตถ+ ได ตถ+ ได ตองก องกหนดค+ หนดค+ณสมบ ณสมบต)ต)บงประกรให บงประกรใหอย ในค อย ในคท ทถถกต ก ตองเสมอต องเสมอต งแต งแตววตถ+ ต ถ+ถถก สรงข งข นม นม กรจะสรงพฤต) งพฤต)กรรมพนฐนบน น ฐนบน PHPน นกเหมอนกบกรสร บกรสรงพฤต)กรรมโดยท วไปเพ วไปเพยงแตใชชชอ พฤต)กรรมนน ใหเหม เหมอนก อนกบช บชอแม อแมแบบ แบบ ดงต งตวอย วอยงช+ งช+ดค ดคส ส งต งตอไปน อไปน 1. 2. 3. 4. 5. 6. 7. 8.
ช+ดค ดคส ส งท งท 1 ผ ผ เขยนจงขอยกตวอย วอยงจกตอนทแลวว วว เมอเรสร อ เรสรงวตถ+ ตถ+จกแมแบบมน+ษยRเรตองก องกหนดชอและเพศ รวมถง กหนดคเร)มตนของควมสง,น หนก และอย+ใหมมควมสง 170ซ.ม.,น 170ซ.ม.,นหน หนก 60ก.ก.และมอย+ 21ป^กกอนเสมอ จกช+ดค ดคส ส งตอนท งตอนทแล แลว เรนมปร มปรบปร+ บปร+งใหม ได งใหม ไดดดงน งน 1. 0 var $wei 6. $weigh ght t = 0; // weig weight ht > 0 7. = 0; // age > 0 var $age 8. function human($name, $sex){
9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45.} 46.?>
$this$this->se >setNa tName( me($na $name) me); ; $this->setSex($sex); $this->setHeight(170); $this->setWeight(60); $this->setAge(21); } function setName($value = 'human'){ $this->name = $value; } function setSex($value = 1){ $this->Sex = ($value==1 || $value==2 ? $value : 1); } function setHeight($value = 1){ $this->height = ($value > 0 ? $value : 1 ); } function setWeight($value = 1){ $this->weight = ($value > 0 ? $value : 1 ); } function setAge($value = 1){ $this->age = ($value > 0 ? $value : 1 ); } function getName(){ return $this->name; } function getSex(){ return ($this->Sex == 1 ? 'male' : 'female'); } function getHeight(){ return $this->height; } function getWeight(){ return($this->Sex == 2 ? 'No Answer':$this->weight); } function getAge(){ return($this->Sex == 2 ? 'No Answer':$this->age); }
ช+ดค ดคส ส งท งท 2 จกช+ดคสงท 1น นบรรทดท 8–14เรไดททกรเพ)มพฤต)กรรมมตรฐน โดยเมอเรสมรถวตถ+ขขนมเร ตองใส องใสขขอม อ มลมตรฐนลงไปด ลมตรฐนลงไปดวย วย ซ ซงในท งในทน น กกคค อช อชอและเพศ อและเพศ ตมลด ดบ โดยกรนไปใช ไปใชงนก งนกจะได จะไดดดงน งน 1. 2. 3. 4. 5. 6.
$som $somsa sak k = new human ('Somsak', ('Somsak', 1); echo 'Name : '.$somsak->getName().''; echo 'Sex : '.$somsak->getSex().''; echo 'Height : '.$somsak->getHeight().''; echo 'Weight : '.$somsak->getWeight().''; echo 'Age : '.$somsak->getAge().'';
ช+ดค ดคส ส งท งท 3
ซ งจกต งจกตวอย วอยงช+ งช+ดค ดคส ส งท งท 3เรจะไดผลกรท ผลกรทงนท งนท 1 Name : Somsak Sex : male Height : 170 Weight : 60 Age : 21
ผลกรทงนท งนท 1 จกช+ดคสงท 2และ 3และผลกรทงนท งนท 1น นจะเห นจะเหนไดววเม เมอเรสรงวตถ+ขขนม 1วตถ+ตตวพฤต) วพฤต)กรรมมตร ฐนจะทกรกหนดค เร) เร)มต มตนของวตถ+ ตถ+นน น ๆ ใหททนท รวมไปถงคบงค ท ทจจ เปนตองมในกรสรงวตถ+ขขนม นม ซ ซ งท ใหเรสมรถน เรสมรถนไปประย+กตRใชไดหลย ๆ งนทตตองกรใชคค พนฐนทซซ ๆ กนตลอดเวล ซงชวยใหเรไม ตตองม ใสคคต ตง ง ๆ ตลอดเวลใหเป เปนค นคมตรฐนเสมอ มตรฐนเสมอ ๆ
นาแนวค าแนวคดเช ดเชงว1 งว1ตถ3 ไปใช7 ตถ3 ไปใช7งานจร งานจรง จกตวอย วอยงทแลวทเรเขย นโปรแกรมเล ก ๆ แลวสรงว งวตถ+ ตถ+ขข นม 2วตถ+ใหมมค+ค+ณสมบต)ตแ) ตกตงกนในเรองเพศ ทให ใหมมพฤต) พ ฤต)กรรมในกรแสดงออกของต กรรมในกรแสดงออกของตวว ววตถ+ ตถ+แตกต แตกตงก งกนตมท ได นตมท ไดกล กลวไปแล วไปแลวในตอนท วในตอนทแล แลว ครวน ครวน เรมเขยนโปรแกรมเลก ๆ 1ตวท วท เอไว ใช ในกรบอกวนและเวลโดยอศยฟ ยฟงกRชชนพ นพ นฐนของ PHPเปน ค+ณสมบต)ตภ) ยใน โดยทเรสรงวตถ+ ตถ+แลว เรไมจจเป เปนตองรววภยในทงนอย งนอยงไร เพยงแตสสง ใหสสง คนนออกมก เพยงพอต ยงพอตอกรน อกรนไปใช ไปใชงนได งนได เรมกหนดลกษณะของแม แบบก แบบกนเส นเสยกอนว อนวมลลกษณะแบบใด กษณะแบบใด โดยแมแบบเรจะใหช ช อว thai_datetimeโดย เปนแม นแมแบบท แบบท ใช ในกรแสดงผลวนท นท และเวล โดยท โดยท แสดงผลใหเปนไปตมแบบไทย คอชอเดอนเปนภษไทยและป^ เปนป^ นป^ พ.ศ.โดยพ พ.ศ.โดยพ นฐนของว นฐนของวนท นทยยงคงเป งคงเปนป^ นป^ ค.ศ.ทให ใหงงยต ยตอกรน อกรนไปใช ไปใช โดยท โดยทมมพฤต) พ ฤต)กรรมต กรรมตง ง ๆ ดงต งตอไปน อไปน 4. ช ชอย= . พฤต พฤต ก รร รรมมพพ นฐาน(thai_datetime ) อย=อของเด อของเดอน( อน(short_month) จะมกรเรยกใชพฤต)กรรม ต1 งค=าว1นและ เม อ ใสลล ดบของเด อ นเขไปใน เวลาต งแต งแตเร)เร)มสร มสรงว งวตถ+ ตถ+ททนท โดยในพฤต) น ท โดยในพฤต)กรรมพ กรรมพ น พฤต)กรรมน กรรมนแล แลวส วสงช งชอย อยอของเด อของเดอนออกมให อนออกมใหเร เร ฐนน ฐนน มมกรร กรรบค บคเร) เร)มต มตนเข นเขมด มดวยหร วยหรอไม อไมก ได ก ได 5. ช ชอเตD อเตDมของเด มของเดอน( อน(long_month) 2. ต1 งค= า ว1นและเวลา(set_datetime ) เม อ ใสลล ดบของเด อ นเขไปใน ถไมใสววนทเขมจะใหผลเปนวนทและ พฤต)กรรมน กรรมนแล แลวส วสงช งชอเต อเตมของเด มของเดอนออกมให อนออกมใหเร เร เวลปจจ+บบน แตถถมกรใสววนทเข เ ขมจะแสดงผล 6. ส=งค= งค=าปF าปF((year) วนท นทและเวลในขณะน และเวลในขณะน นเป นเปนว นวนท นทแบบไทย แบบไทย 7. ส=งค= งค=าเด าเดอน( อน( month) 3. แปลงค=าว1นทและเวลา( cast_datetime ) เปนกรแปลงค นกรแปลงคต ตวเลขทเป เ ปนรปแบบของ งค=าว1 าว1น( น(day) 8. ส=งค= วนทตตง ๆ ใหเปนคของวนทและเวลตมท งค=าช1 าช1 วโมง( วโมง(hour) 9. ส=งค= กหนดไว หนดไวซ ซงได งไดแก แก งค=านาท านาท minute (( ) 10. ส=งค= dคอว อวนท นท mคอเด อเดอน อน yคอป^ อป^ งค=าว าวนาท นาท((second ) 11. ส=งค= Hคอช อช วโมง วโมง Mคอนท อนท Sคอว) อว)นท นท
1. set_datetime($valuedate); 6. } 7. function set_datetime($valuedate) { 8. if(empty($valuedate)) 9. $this$this->da >datet tetime ime = date("Y-m-d H:i:s"); else 10. 11. $this->datetime = $valuedate; 12. } 13. function cast_datetime($value, $type) { 14. $value = strtotime($value); switch($type) { 15. case "d": return date("j", $value); 16. 17. case "m": return date("m", $value); 18. case "y": return date("Y", $value); 19. case "H": return date("H", $value); case "M": return date("M", $value); 20. case "S": return date("S", $value); 21. 22. } 23. } 24. function short_month($m_val = NULL) { if(empty($m_val)) 25. 26. $m_val = $this->cast_datetime($this->datetime,"m"); 27. switch($m_val) { 28. case 1: return "ม.ค."; break; 29. case 2: return "ก.พ."; break; case 3: return "ม.ค."; break; 30. case 4: return "เม.ย."; break; 31. 32. case 5: return "พ.ค."; break; 33. case 6: return "ม.ย."; break; 34. case 7: return "ก.ค."; break; case 8: return "ส.ค."; break; 35. case 9: return "ก.ย."; break; 36. 37. case 10: return "ต.ค."; break; 38. case 11: return "พ.ย."; break; 39. case 12: return "ธ.ค."; break; default : return "ม.ค."; break; 40. 41. } 42. } 43. function long_month($m_val = NULL) { 44. if(empty($m_val)) 45. $m_val = $this->cast_datetime($this->datetime,"m"); switch($m_val) { 46. 47. case 1: return "มกราคม"; break; 48. "; break; มภาพนธ นธ"; case 2: return "กมภาพ 49. นาคม"; break; case 3: return "มนาคม case 4: return "เมษายน"; break; 50. case 5: return "พฤษภาคม "; break; 51. 52. ถนายน น ายน"; break; case 6: return "มถ 53. case 7: return "กรกฎาคม"; break; 54. งหาคม"; break; case 8: return "สงหาคม นยายน"; break; case 9: return "กนยายน 55. case 10: return "ตลาคม 56. ลาคม"; break; 57. กายน"; break; case 11: return "พฤศจกายน 58. นวาคม"; break; case 12: return "ธนวาคม 59. default : return "มกราคม"; break;
60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82.} 83.?>
} } function year($value = NULL) { if(empty($value)) return $this->cast_datetime($this->datetime,"y")+543; else return $value+543; } function month() { return ($this->cast_datetime($this->datetime,"m")); } function day() { return $this->cast_datetime($this->datetime,"d"); } function hour() { return $this->cast_datetime($this->datetime,"H"); } function minute() { return $this->cast_datetime($this->datetime,"M"); } function second() { return $this->cast_datetime($this->datetime,"S"); }
ช+ดค ดคส ส งท งท 4 จกช+ดคสงท 4น นจะเหนว นวเรนเขฟงกRชชนพ นพนฐนของ น ฐนขอ ง PHPมใชงนในแมแบบอยมกมย ซงในงนทมม กรใชฟฟงกRชชนต นตง ๆ มก ม ก ๆ จะท ใหช+ช+ดคสงของเรนนอ นอนไดยก กรนเอมปรบปร+ บปร+งโดยกรใสล งในแมแบบ และสรงว งวตถ+ ตถ+นน นกล น กลบท บทให ใหดดเข เขใจง ใจงยมกข ยมกข นไปอ นไปอก โดยกรใชงนน งนน นด ได นด ไดจกช+ จกช+ดค ดคส ส งท งท 5 1. 2. 3. 4. 5. 6. 7.
day() , " " ,$x->short_month(), " " ,$x->year(); echo ''; $y = new thai_datetime("2005-1-20"); echo $y->day() , " " ,$y->short_month(), " " ,$y->year(); ?>
ช+ดค ดคส ส งท งท 5 11 ม.ค. 2550 20 ม.ค. 2548
ผลกรทงนท งนท 2 จกช+ดคสงท 5น นจะเหนไดวว เรไดสรงวตถ+ม 2วตถ+ ตถ+คคอ xและ yโดยทวว ตถ+ xน นไมไดกกหนดพฤต)กรรม มตรฐน แตผลกรท ล กรทงนกออกมเปนวนท นทปปจจ+บบน (ณ.วนท นทเขยนบทควมส วนว วนวตถ+ yน นไดกกหนดพฤต)กรรม พ พ นฐนไว นฐนไวววเป เปนว นวนท นท “20เดอนท อนท 1ป^ 2005”ผลท ได 2005”ผลท ไดออกมค ออกมคอว อวนท นท “20ม.ค.2548” จกตวอย วอยงกรน งกรนเอแนวค) เอแนวค)ดกรเข ดกรเขยนโปรแกรมเช) ยนโปรแกรมเช)งว งวตถ+ ตถ+มเข มเขยนแม ยนแมแบบว แบบวนท นทนน นจะเห นจะเหนได นไดววเรสมรถน เรสมรถนเอส) เอส)ง ท ทเรต เรตองเข องเขยนซ ยนซ ๆ มเขยนให ยนใหอย อยรรปท ป ทเอไปใช เอไปใชงนได งนไดงงยมกข ยมกขน ในตอนตอไปเรจะมพดถงกรสบทอดแมแบบใหมมลลกแบบเปนทอด ๆ และกรนเอแนวค)ดนไปใชงนในด งนในดน กรเชอมตอฐนขอมลอยง MySQLใหสมรถนเอวตถ+ททเปนแมแบบของกรต)ดตอกบฐนขอมล MySQLน น เอมชวยในกรท วยในกรทงนก งนกบฐนข บฐนขอม อมลให ลใหงง ยมกข ยมกข น และช+ดค ดคส ส งท งทเรใช เรใชดดสส นลงอย น ลงอยงเห งเหนได นไดชชดเลยท ด เลยทเด เดยว ยว
เอกสารอ7างอ างอง ●
●
●
PHP Manual, http://www.php.net,January2007 Zend PHP Certification Study Guide,ZendTechnologies,August2004 Concepts of Programming Languages (th Edition), obertW.Sebesta,April2005
View more...
Comments