OOP in PHP part-1

August 16, 2018 | Author: Ford AntiTrust | Category: N/A
Share Embed Donate


Short Description

Download OOP in PHP part-1...

Description

OOP in PHP ตอนท   ตอนท11 สวสดคร ครบ ในบทความนเราจะกลาวถงการน าเอาภาษาโปรแกรม าเอาภาษาโปรแกรม PHPมาเขยนในร#ปแบบของ Object Oriented Programming โดยในบทความนเราจะไมกลาวถงพ&นฐานของภาษา PHPมากนก โดยบทความนจะเหมาะกบผ#,ทท- เขยนและใช,ภาษาโปรแกรม PHPมาบ,างแล,ว โดยถ,าใช,อย#ในระดบการใช, Functionมากอนนาจะชวยทาให,เข,าใจ และทาให, าให,เห6 เห6นภาพได, นภาพได,มากข  มากข นคร นครบ

มาสรางโลกน างโลกนอยๆในการเข อยๆในการเขยนโปรแกรมก* ยนโปรแกรมก*นด นดกวกว-า กอนอ&-นเราต,องปรบความค8ดในการเขยน PHPจากการเขยนแบบลาดบขนจากบนลงลาง (Structuralหร&อ ProceduralProgramming)มาเปCนการเข นการเขยนแบบเช8 ยนแบบเช8งว งวตถD ตถD (ObjectOrientedProgramming)เสยก ยกอน อน  โดยการเขยนโปรแกรมเช8งวตถD นน เปCนการเขยนโปรแกรมให,เข, เข,าใกล, ใกล,การดาเน8นไปตามสภาพแวดล,อมท-เปCนจร8 จร8ง ของโลกเรา กลาวค&อ เรามองทDกอยางในการเขยนโปรแกรมเปC ยนโปรแกรมเปCนด นด-งการดารงอย#ของส8-งตาง าง ๆ บนโลกนนนนเอง โดยทDก ๆ ส8งบนโลกน -งบนโลกนมม กเก8ดจากแมแบบ (Class)แทบทงส8น ซ-งแมแบบเหลานนนนจะมส8ส8-งท - -จจา เปCนอย# 2สวนค&อ คDณสมบต8ต8 Behavior หร7อMethod)อาจจะมความเหม&อนหร&อตางกนทงใน (Properties)และแบบแผนพฤต8กรรม (Method Behavior คDณสมบ ณสมบต8ต8และพฤต8 และพฤต8กรรม กรรม โดยผลของแบบแผนพฤต8กรรมน กรรมนนจะได, น จะได,รรบเปCนแบบใด นแบบใด ข ข นอย#   อย#กกบคDณสมบ ณสมบต8ตใ8 นชวงเวลานน ๆ ซ - -ซงจะอธ8 งจะอธ8บายให, บายให,เห6 เห6นภาพช นภาพชดเจนได, ดเจนได,งงายข  ายข นด นดงต งตวอย วอยางด, างด,านล านลาง าง ผ# ,ผ# ,เขยนจะขอยกตวอยางท- งงา ยกอน โดยอยากให,มองถงคาวา “มน9ษย;” เปCนแมแบบ ทDก ๆ คนบนโลกนเก8ดจาก แมแบบ แบบ (lass)“มนDษยQ ษยQ” ซ - -ซงว งวตถD ตถD (Object)ท - )ทเก8 เก8ดจากแม ดจากแมแบบ แบบ โดยคDณสมบ ณสมบต8ต8 (Properties)ก6จะช& - จะช&อเร อเรยกแตกต ยกแตกตางก างกนไป นไป มความส# ความส#งน งน  าหน าหนกเพศ กเพศ และสวนประกอบทางร วนประกอบทางรางกายท - างกายทแตกต แตกตางก างกน ซงส8 - งส8งเหล งเหลาน  าน ค&คอคD อ& คDณสมบ ณสมบต8ต8 (Properties)ของ มนD ษยQ” โดยจะมพฤต8กรรม (Method)ท (Method)ท - -เหม& เหม&อน ๆ กนโดยพ&  โดยพ& นฐานของ มนDษยQ” ซ -งได,แก การก8นนอนหลบว8 -งและเด8น สองขา ฯลฯ ซ - -ซงถ& งถ&อเปC อเปCนพฎต8 นพฎต8กรรมพ&  กรรมพ& นฐานของแม นฐานของแมแบบน  แบบน  ถ,าเราเข าเราเขยนเปC ยนเปCนภาพให, นภาพให,เห6 เห6นช นชดเจนข  ดเจนข นก6 นก6จะได, จะได,ดดงร# งร#ปน  ปน 

ภาพแสดงแมแบบ แบบ และวตถD ตถD

จากร#ปเราจะเห6นวา  Obj1และ Obj2น นมร#ร#ปแบบพฤต8กรรมและคDณสมบต8ต8เหม&อนกนแมแบบ มน9ษย; แต คDณสมบต8ตข8 องทงสองวตถD นนนได,ถ#กก กกาหนดตอมาให,แตกต แตกตางกน ทาให,ผลของพฤต8กรรมน นแตกตางกนไปตามข,อม#ล ของคD ณ สมบต8ต8ทท-เปล-ยนแปลงไป เชน Obj1น นมความส#ง 1ซม.นาหนก 4กก.และเปCนเพศหญ8ง ซ-งม คDณสมบต8ตแ8 ตกตางกบ Obj2ท - Obj2ทมมค วามส#ง 179ซม.น าหนก 5กก.และเปCนเพศชาย นเพศชาย กลาวค&อในสภาวะเปCนจร8งแล,ว ความแตกต-างของท*?งของว*ตถ9ท*ท*?งสองน*?นถAกกาหนดจากค9ณสมบ*ตF สมบ* ตFซงทาใหการผลของพฤตFกรรมน*?นแตก ต-างก* างก*นแม นแมจะเกF จะเกFดจากแมดจากแม-แบบเด แบบเดยวก* ยวก*บก บกตาม ตาม แบบ (lass)มความเปC ความเปCนนามธรรม(bstract)และวตถD ตถD (Object)มความเปC ความเปCนรAปธรรม(Concrete) สร9ปวปว-าาแมแบบ ปธรรม(Concrete)  โดยคDณสมบต8ต8ตตา ง ๆ ของวตถDนนนต,องมการหอหD,มอย#ภายใน (Encapsulation )ซ )ซ -งทาให,คDคDณสมบต8ตข8 องข,อม#ลนน ถ#กต,องเสมอ โดยจากตวอยางท-แล,วนนในกรณของคDณสมบต8ตข8 องเพศน องเพ ศนน จะต,องอย#ภายใต, ภายใต,เง&เง&-อนไขของเพศชาย และ แล ะ หญ8งเท งเทานน จงจาเปCนต,องมตตวควบคDมคDณสมบต8ต8 หร& อแบบแผนพฤต8 อแบบแผนพฤต8กรรมเข,ามาเก-ยวข,องซ องซ-งจะได,กลาวตอไป โดย ความถ#กต,องของข,อม#ลภายในน ลภายในนนสาคญมาก เพราะน-นหมายถงการแสดงคDณสมบต8ต8ททถ#-ถก# ต,องของวตถDนนนๆ ด,วย รวม ถงถ,าเรามองในด, าเรามองในด,านการเขยนโปรแกรมแล,ว การหอหD อหD,มภายในนนชวยให,การด#แลรกษาและพฒนาชDดคาส-งนนทาได, งายขน เพราะชDดคาส-งได, งได,ถ#ถก# แยกออกเปCนสวน ๆ และยงบอกถ งบอกถงพฤต8กรรมของส8-งท-หหอ หD,มด,วยวาควรเปCนพฤต8กรรม อะไร และเม& - และเม&อเราพบพฤต8 อเราพบพฤต8กรรมน กรรมน น ๆ แล,วผลของพฤต8 วผลของพฤต8กรรมน กรรมน นจะให, นจะให,ข,ขอม# อ, ม#ลและผลการท ลและผลการทางานออกมาเปC างานออกมาเปCนอะไรด, นอะไรด,วย วย

ภาพแสดงการหอหD , อหD ,มภายในคD มภายในคDณสมบ ณสมบต8ต8

คDณสมบต8ต8ทท-ททาให,การเข การเขยนโปรแกรมเช8งวตถDนนนได,รรบความน8ยมมาก ยมมาก ค&อการส&บทอด (Inheritance)ของแมแบบ (lass)ท - (lass)ทททาให, าให,ล#ล#กแบบ (SubClass)นนม น  มความเฉพาะเจาะจงมากขนไปอกไปอก และยงช งชวยให,การสร,างสรรคQ างสรรคQงาน น นทาได,งงายเพราะเราไมจจาเปCนต,องเขยนโปรแกรมหลาย ๆ อยางซา ๆ กนในแมแบบท-มมคDคDณสมบต8ต8เหม&อน ๆ กน เชนแมแบบ ยานพาหนะ” มล#ล#กแบบ ช&-อได,แก รถยนตQรถจกรยานยนตQ และจกรยาน เปCนต,น ซ-งทง 3ล#กแบบทกลาวมานนมคDคDณสมบต8ต8บางอยางท-เหม&อนกนจนได,เปCนยานพาหนะ เชนความส#งความกว,าง และความเร6วในการ เคล& เคล& -อนท-เปC เปCนต, นต,น ซ -ซ -งการแบงเปC งเปCนล#กแบบน  แบบน ททา ให,ความเฉพาะเจาะจงของล# ความเฉพาะเจาะจงของล#กแบบมมากขนท าให,การสร, การสร,างวตถD ใด ถD ใด ๆ จาก ล#กแบบเหลาน นนนม นมคDคDณสมบต8ต8ทท-เ ท-ยงตรงตอการแสดงพฤต8กรรมได,มากขนด,วย และลดการซบซ,อนของโครงสร,างแม แบบลงได,มาก มาก เพราะได,ถ#ถ#กก กกาหนดคD าหนดคDณสมบ ณสมบต8ต8หล หลก ๆ ไว,แล, แล,วในแม วในแมแบบ แบบ ทาให, าให,ล#ลก# แบบมความซ ความซบซ, บซ,อนน, อนน,อยลง อยลง

การส&บทอดคD บทอดคDณสมบ ณสมบต8ต8

การส& - -อสารก อสารกนของว นของวตถD ตถD

 ในการสงข, งข,อม#ลระหวางวตถDนนนเราเรยกวาการสงข,อความ (Messaging)ซ (Messaging)ซ -งข,อความ (Message)น นจะถ# นจะถ#กสงผาน แบบแผนพฤต8กรรม (Method)เพ& (Method)เพ&-อตรวจสอบความถ# ตรวจสอบความถ#กต,องของข, องของข,อความท อความท-จะเข, จะเข,าหร&อออกจากว อออกจากวตถD (Object)กอนท อนท-จะ ทาการประมวลข,อความนนเพ&-อแก,ไขข,อม#ลหร&อคDณสมบต8ต8 (Propertie (Properties)ภายในว s)ภายในวตถD ตถD ซ-งการตรวจส ก ารตรวจสอบน อบนเปC เปCนไปตาม ไปตา ม หลกการหอหD ,หD ,มข,อม# อม#ลภายใน เพ& เพ& -อปองกนไม ให,ววตถDททา งานผ8ดไปจากพฤต8กรรมทกก- า หนด โดยขอยกตวอยาง ท -ท -เข,าใกล, กบช บชว8ว8ตประจ ตประจาวน โดยเรามนาย ก.และนาย ข.ซ - ข.ซงเก8 งเก8ดจากแมแบบ มนDษยQ ซ-งนาย ก.ได,ททา การถาม อายDนาย ข.โดย ท -ท -นาย ข.น นจะตอบอายDกลบไปก6ได,หร&อไม ขนอย#กก บคDณสมบต8ต8บางประการของวตถDนนน ๆ เชนเพศ เปCนต,น โดยทนายข. เปXนเพศชาย อาจจะตอบกลบไปในทนท แต-ในกรณททเปXนเพศหญFง อาจจะไมตอบกล ตอบกลบข,อความนกลบไป ซ - -ซงจากต งจากตวอยางด างดงกล งกลาวจะเห6นได,ววา การสงข,อความไป และกลบน บน นจะได, นจะได,ผลตอบรบอย างไรน างไรนน ข ข นอย#   อย#กกบคD บคDณสมบต8ต8 ณ. เวลาใดเวลาหน-งของว งของวตถDในเวลานน ๆ และวตถDแต แตละว ละวตถD ตถDนน นจะม น จะมความเปC ความเปCนอ8 สระก สระกนของคD นของคDณสมบต8ต8 เหม& เ หม&อนดงต งตวอย วอยาง ท - -ท นาย ก.และนาย ข.ไม ได, ข.ไม ได,เปC เปCนคนเด นคนเดยวก ยวกนน นน นเอง นเอง  โดยยงมคDคDณสมบต8ต8การกระทาหลายร# าหลายร#ปแบบ (Polymorphism)ซ )ซ -งจะไมขอผ#ถ,ถง ในตอนน เพราะอาจทา ให,งงได, ผ#, เขยนจะขอพ# ยนจะขอพ#ดถ ดถงในระด งในระดบท - บทส#สงต ง# ตอไป อไป จากท-เราได,ศศก ษาจากข,อม#ลด,านบนนนเราได,สรDปสวนท- สสา คญในการพฒนาของ ObjectOrientedProgramming  ไว,ดดงต งตอไปน  อไปน  ●









แมแบบ แบบ (lass) ล#กแบบ กแบบ (Sublass) วตถD ตถD (Object) การสงข, งข,อความ อความ (Messaging) ข,อความ อความ (Message)











การหอหD อหD ,มข, มข,อม# อม#ล(Encapsulation) การส&บทอด บทอด (Inheritance) การทาหลายร# าหลายร#ปแบบ ปแบบ (Polymorphism) คDณสมบ ณสมบต8ต8 (Properties) แบบแผนพฤต8กรรม กรรม (MethodBehavior)

“สว*สด สดชาวโลก”ก* ชาวโลก”ก*บPHP บPHP บนโลกแห-งความจรF งความจรFง  ในบทความนทางผ#,เขยนจะอ,างอ8งกบ PHPVersion4กอน เพราะมข,ข,อกาหนดท-ไมยDยDงยาก และเหมาะแกการนามาศกษา มากกวา PHPVersion5

 โดยในการเขยนแบบโปรแกรมเช8งวตถD ตถDใน PHPน   นไมยาก โดยคาท-ใช,เปCนคาหลก (Keyword)ในการเขยนได,แก class, function, this และ parentเปCนต, นต,น จากตวอย วอยางในช างในชวงแรกผ# วงแรกผ# ,เข เขยนจะสร, ยนจะสร,าง าง แมแบบ แบบ (lass)humanข  ข นมาก นมากอน อน โดยว8ธธการสร, การสร,างแม างแมแบบใน แบบใน PHPมดดงน  งน 



ร#ปแบบค ปแบบคาส าส-งท งท - - 1

1.คาหล าหลกท - กทเราจะใช, เราจะใช,นน นค& น ค&อ class 2.หลงค งคาหล าหลก class ตามด,วยช& - วยช&อแม อแมแบบ แบบ (classname) 3.เปดและป ดและปดด, ดด,วยเคร& - วยเคร&องหมายป องหมายปกกา กกา เพ& - เพ&อก อกาหนดช าหนดชวง วง การเขยนชD ยนชDดค ดคาส าส - -งของแม งของแมแบบ แบบ

เม&-อเราร# , อเราร# ,ร#รปแบบการสร, ป# แบบการสร,างแม างแมแบบแล, แบบแล,ว เราจะมาสร,างแม างแมแบบเพ& - แบบเพ&อใช, อใช,งานจร8 งานจร8งก งกนเลย นเลย

ชDดค ดคาส าส - -งท - งท 1 จากชDดค ดคาส าส - -ง (Source Code)ท - )ท 1น  1น เปC เปCนเพ นเพยงการประกาศแม ยงการประกาศแมแบบเทาน าน น ซ - -ซงไม งไมสามารถท สามารถทางานได, างานได,

ชDดค ดคาส าส - -งท - งท 2 ทาให,เก8ดชD ดชDดค ดคาส-งท- 2ซ-งเราได,เพ8 เพ8-มพฤต8กรรม (Method)ลงไป (Method)ลงไป โดยผมขอยกตวอย วอยางวาให,ววตถDใด ๆ ท-สร,างจาก แมแบบ humanน นสามารถพ8มพQคคาวา HelloWorldออกมาได, HelloWorldออกมาได,โดยใช,ผผานพฤต8กรรมท- ช&ช&-อวา TalkมาเปCนหวข, วข,อ ตวอย วอยาง โดยการเขยนพฤต8กรรมในแมแบบนนก6เขยนร#ปแบบเดยวกบฟxงกQชชนท นท-ว ๆ ไปท ไ ปท-เราคD,นเคยกนใน PHPแบบ เด8ม ๆ น-นเอง โดยใช,คคา หลกค&อ function และตามด,วยช& ยช& -อพฤต8กรรม ซ-งการประกาศ functionในแม onในแม แบบน แบบนก6ก6เหม&อน กบ functionโดยท-วไปนนเอง โดยจากตวอยางชDดคาส-งท- 2น  2น เราจะสร,างวตถDจากแมแบบท- เขยนขนมาทางาน โดย  ใช,คคาหล า หลก new  โดยร#  โดยร#ปแบบการสร, ปแบบการสร,างว างวตถD ตถDข ข นมาน น มาน นม นมดดงน  งน  $objectname =

new 

classname();

ร#ปแบบค ปแบบคาส าส-งท งท - - 2 จากร#ปแบบคาส-งท- 2น  2น จะเห6นร#ปแบบการสร,างวตถDโดยท- $objectnameน  น เปCนช& นช&อของ อ- ของช7 ช7 ออางอFงว*ตถ9 หร&อเรยก วาต*วแปรอางอFง ก6ได, โดยทตต- วแปรนจะไปอ,างอ8งกบวตถDทท-เ ราสร,างขนในหนวยความจาอกท โดยหลกการตงช&-อตว แปรอ,างอ8 างอ8งก งกบว บวตถD ตถDนน นจะเหม& นจะเหม&อนก อนกบต บตวแปรท - -วไปทD วไปทDกประการ กประการ

ชDดค ดคาส าส - -งท - งท 3  โดยจากชDดคาส-งท ท - 3 เราจะได,ววตถDทท-มมตตวแปรอ,างอ8งท - -ช&ช&-อวา somsakเม& somsakเม&อเรามาด# อ- เรามาด#ตตวอยางความสมพนธQ ระหว ระหวาง าง แมแบบต แบบตวแปรอ, วแปรอ,างอ8 างอ8งว งวตถD ตถD และวตถD ตถD ได,จากภาพด, จากภาพด,านล านลางน างน วาม ามความสมพ มพนธQ นธQกกนอย น อยางไร างไร

ภาพแสดงความสมพ มพนธQ นธQท - -ท 1 จากภาพแสดงความสมพนธQทท- 1น  1น จะเห6นวามววตถDอย# 1วตถDอย#ในหนวยความจ าโดยม าโดยมตตวแปรอ,างอ8งกบวตถDนนช&ช&-อ วา somsakอกท โดยทว-วตถDนน เก8ดจากแมแบบ humanน  นเอง ซ-งจากชDดคาส-งส-งดงกลาวนนก6มมการให,พ8พ8มพQคคาวา HelloWorld ออกมา ดง ผลดงผลการท งผลการทางานของชD างานของชDดค ดคาส าส - -งท งท- 3 Hello World

ผลการทางานของชD างานของชDดค ดคาส าส - -งท งท - 3  โดยเราจะสงเกตเห6 งเกตเห6นเคร&-องหมายอางอFง -> ((Reference/rrow Operator )ซ )ซ -งเปCนการช ไปยงคD งคDณสมบต8ต8ภายใน หร&อเรยกใช,พฤต8กรรมใด ๆ ในวตถD นนน ๆ โดยด#ได,จากชD ดค ดคาส-งท- 3ท - -ตตวแปรอ, วแปรอ,างอ8งวตถD somsakเ somsakเพ&พ&-อเรย กใช, พฤต8กรรม Talkข  ข นมานนเองซ น- เองซ-งจากชDดคาส-งท- 3น  3น  เราจะมาวาดภาพเปCนแมแบบ และวตถDกกน เพ&-อให,เราจะได,เช&-อม  โยงความค8ดระหว ดระหวางชD างชDดค ดคาส าส - -งและแนวค8 งและแนวค8ดการเข ดการเขยนโปรแกรมเช8 ยนโปรแกรมเช8งว งวตถD ตถD

ภาพแสดงความสมพ มพนธQ นธQท - -ท 2  โดยจากภาพแสดงความสมพนธQทท- 2น  2น เปรยบเทยบกบชDดคาส-งท- 3น  นเราจะเห6นวาตวแปรอ,างอ8งวตถD somsak น นไปอ,างอ8งกบวตถDทท-เก8ดจากแมแบบ humanซ  humanซ  -งและเม&-อเก8ดขนมาแล,วนน ตวแปรอ,างอ8งวตถDก6 ถDก6ททาการส-งเรยกใช, พฤต8กรรม Talkโดยภาพนจะเห6 จะเห6นวาวตถDทท-ตตวแปรอ, วแปรอ,างอ8ง somsakไปอ,างอ8 างอ8งอย#  อย#  และได,สสง- ให,พฤต8 พฤต8กรรม Talkทางาน ข ข นโดยพ8 นโดยพ8มพQ มพQคคาว าวา HelloWorldออกมา

มาเรF   มาเรFมเข มเขยนต* ยนต*วละครฉบ* วละครฉบ*บPHP บPHP ก*นด นดกวกว-าา จากชDดคาส-งท - 13และภาพแสดงความสมพนธQททงสองร# งสองร#ปท ปท-ได,แสดงไปแล,วน วนน จะเห6นได,ววาเม&อเราเข อ- เราเขยนโปรแกรม แบบเช8งวตถDก6ก6เหม&อนกบเราเขยนบทละครให,แตละวตถD ททาส8-งใด ๆ ก6ต ามท-เราต,องการ องการ โดยกาหนดตวแปรอ, วแปรอ,างอ8 งอ8ง หร&อความหมายหน อความหมายหน- งก6 งก6ค&คอ& การสร,างช& - -อน อนกแสดงอ กแสดงอกท กทหน หน-งเพ& งเพ& -องายต ายตอการจดการคD ดการคDณสมบ ณสมบต8ตและแสดงพฤต8 8และแสดงพฤต8กรรมให,ตรงก ตรงกบ วตถDนนน ๆ โดยตวอยางท-ได,กลาวไปนนอาจจะยงไมเห6นภาพมากนก เรามาด#ตตอวาเม&-อแมแบบนนมการกาหนด คDณสมบต8ตเ8 พ8 - -พ8มเข, มเข,ามาจะทาให,ผลของพฤต8กรรมเปลยนไปและแตกต ย- นไปและแตกตางกน ซ-งเราจะมาด#ววาท าทาให,เก8ดความแตกต ดความแตกตางกน  ได,อยางไร โดยเรากาหนดคDณสมบต8ต8และพฤต8 ละพ ฤต8กรรมดงต งตอไปน ไปน ช&-อแมแบบค&อ humanโดยท-แมแบบ humanม ค9ณสมบ*ตFตF (Properties)ค&อช7อ, ความสAง, น?  าหน*ก, อาย9และเพศ และมพฤตF พฤตFกรรม(Method) ค&อ บอกช7อ, บอกความสAง,ง, บอกน?  าหน* าหน*กและบอกเพศ กและบอกเพศ ได,

เม&-อได, อได,ร#รปแบบท - ป# แบบทต,ตองการแล, อ, งการแล,วเราก6 วเราก6จะมาเข จะมาเขยนชD ยนชDดค ดคาส าส - -งก งกนเลย นเลย

ชDดค ดคาส าส - -งท - งท 4 จากชDดคาส-งท- 4น  4น  เราได,พบคาหลกอกคาค&อ var โดยค โดยคานเปCนคาหลกท-ใช,กกาหนดคDณสมบต8ตเ8 ร8-มต,นของแมแบบ ซ - -ซงเปC งเปCน ดงข, งข,อก อกาหนดวาเม& - าเม&อสร, อสร,างวตถD ตถDข ข นแล, น แล,วคDณสมบ ณสมบต8ต8ดดงกลาวจะต8 าวจะต8ดตวไปกบวตถD ตถDนนน ๆ ด,วย ซ-งคD งคDณสมบต8ต8นนนจะแยก นจะแยก อ8สระออกจากว สระออกจากวตถD ตถDอ& - -อน& ๆ โดยร#ปแบบการเข ปแบบการเขยนคD ยนคDณสมบ ณสมบต8ต8ก6กค&ค6 &อ var 

$propertyname;

ร#ปแบบค ปแบบคาส าส-งท งท - - 3  โดยท-หลงคาหลก var จะตามด, จะตามด,วยช&-อคDณสมบต8ต8 $propertyname ซ -งการตงช&-อคDณสมบต8ต8นนนก6ใช,หลกการตงช&-อ แบบเดยวก ยวกบต บตวแปรโดยท วแปรโดยท - -วไป วไป  โดยการเรยกใช,คDคDณสมบต8ต8 และพฤต8กรรมภายในแม รร มภายในแม แบบเด แบบเดยวกนน นนนจะใช,ผผานคาหลกทช&ช- &-อ this ซ -ซ -งเราจะทาการ อ,างอ8 างอ8งก งกบช& - บช&อคD อคDณสมบ ณสมบต8ตหร& ห8 ร&อพฤต8 อพฤต8กรรมอ กรรมอกท กทหน - หนงโดยใช, งโดยใช,เคร& - เคร&องหมายอ, องหมายอ,างอ8 างอ8ง -> เข, เข,ามาร ามารวมการท วมการทางานโดยว8 างานโดยว8ธธการเข ก ารเขยนค& ยนค&อ $this->propertyname; $this->methodname( ); );

ร#ปแบบค ปแบบคาส าส-งท งท - - 4 การเช7อมโยงค9 อมโยงค9ณสมบ*ตFตF และพฤตFกรรมของตนเอง ” ซ -ซ -งในร#ปแบบคาส  โดยท- $thisมความหมายว ความหมายวา การเช7   าสง- ท -ท - 4น  4น ก6ก6  ได,มมตตวอยางการอ,างอ8งถงพฤต8กรรม ซ-งพฤต8กรรมนเราสามารถเรยกใช,ได,เหม&อน ๆ กบฟxงกQชชนท-วๆ ไปและรวมไป ถงการส งการสงพารQ งพารQราม8 ราม8เตอรQ เตอรQตตาง า ง ๆ เข,าไปได, าไปได,ด,ดวย ,วย จากตวชDดค ดคาส -งท -ท - 4เรานามาสร,างว างวตถD ตถDเพ& เพ&-อพ8 อพ8สDสทD ธ8 zธ8 zววาว าวตถD ตถDนน น ๆ มความเปCนอ8 นอ8สระตอก อกน โดยเราจะสร,างวตถD 2วตถD ตถD ท - -ทมมช&ช-&ออ,างอ8งวา somsakและ somyingโดยท ngโดยทกก- าหนดให,ช&ช&-อ SomsakเปC SomsakเปCนผ#,ชาย มอายD 2ปความส#ง 17 ชม.นา

หนก 5กก.และ 5 กก.และ somyingเปCนผ#หญ8 ห, ญ8ง มอายD 25ปความส#ง 1 ชม.นาหน าหนก 4กก.เม&-อก อกาหนดเสร6จแล,ว เราจะ เราจ ะ บอกให,ววตถD ต ถDทท งสองบอกข, ง สองบอกข,อม# อม#ลของต ลของตวเองผ วเองผานพฤต8 านพฤต8กรรมท - - ได, กรรมท ได,กกาหนดไว, าหนดไว, ในชDดค ดคาส าส - -งท งท- 4ท - - ได, 4ท ได,เข เขยนไว, ยนไว,กกอนหน, อนหน,าน  าน  ได,ดดงน  งน  $somsak = new human (); (); $somsak->name = 'Somsak'; $somsak->sex = 1; $somsak->height = 178; $somsak->weight = 65; $somsak->age = 28; echo 'Name : '.$somsak->showName(). '.$somsak->showName().'showSex().''; echo 'Height : '.$somsak->showHeight().''; echo 'Weight : '.$somsak->showWeight().''; echo 'Age : '.$somsak->showAge().''; $somying = new human (); (); $somying->name = 'Somying'; $somying->sex = 2; $somying->height = 168; $somying->weight = 48; $somying->age = 25; '.$somying->showName().'showName() echo 'Sex : '.$somying->showSex().''; echo 'Height : '.$somying->showHeight().''; echo 'Weight : '.$somying->showWeight().''; echo 'Age : '.$somying->showAge().'';

ชDดค ดคาส าส - -งท - งท 5 จากตวอย วอยางชD างชDดค ดคาส าส - -งด งดงกล งกลาวน าวนเราจะได, เราจะได,คคาตอบของผลการท าตอบของผลการทางานด างานดงต งตอไปน  อไปน  Name : Somsak Sex : male Height : 178 Weight : 65 Age : 28 Name : Somying Sex : female Height : 168 Weight : No Answer Age : No Answer

ผลการทางานของชD างานของชDดค ดคาส าส - -งท งท - 5 จากชDดคาส-งท- 5 และผลการท และผล การทางานนบอกเราวาวตถD ตถDทท-สร,างจากแมแบบ humanน นเม&-อถ#กกาหนดคDณสมบต8ต8ววา เปCนเพศชายแล, นเพศชายแล ,วถ,าเราส าเราส-งให,แสดงอายDและนาหนกก6 กก6จะแสดงออกมา ะแสด งออกมา แตถ,ถ,าถ# าถ#กก กกาหนดคDณสมบต8ตเ8 ปCนเพศหญ8 นเพศหญ8งแล,วกลบ  ไมแสดงอายDและนาหนกออกมาให,เรา ซ-งเก8ดจากการท-เราได,กกาหนดในพฤต8กรรมนในแมแบบไว,แล,ววา โดยอย#ใน พฤต8กรรมท - กรรมทช& - -ชอ& showAgeและ showWeightวาถ, าถ,าเปC าเปCนเพศหญ8งจะ งจะ NoAnswerออกมา ด,วยเหตD วยเหตDผลบางประการ ผลบางประการ ;P จากตวอยางน  างน ยยงมจDจDดอ ดออนเร& อนเร&-องของการตงคาคD าคDณสมบ ณสมบต8ตห8 ลายอยาง เชนการกาหนดเพศนนจะต,องเปC องเปCน 1ท - 1ทเปC เปCนเพศ นเพศ ชายและ 2ท - -เปC เปCนเพศหญ8 งซ งซ -งถ,าเราต าเราตงค งคาคDณสมบต8ตโ8 ดยตรงแบบชDดคาส-งท- 5น นจะท นจะทาให,ข,ข,อม#ลคDณสมบต8ต8ผ8ผด8 เพยนไป จากท-ควรจะเปCนเราจงจาเปCนต,องปรบเปล-ยนการตงคาคDณสมบต8ต8ใหมโดยท ดยทางานผานพฤต8 นพฤต8กรรมแทนซ-งชวยในการ กรองข,อม#ลให,เรากอนทาการตงคาให,กกบคDณสมบต8ต8จร8ง ๆ ซ-งเปCนคDณสมบต8ต8ทท-อย#ในข,อกาหนดการหอหD,มภายใน (Encapsulation)น นเอง นเอง โดยตามข,อกาหนดท-ร#ร#,โดยท ดยท-วกนในวงการการเข นในวงการ การเขยนโปรแกรม นโ ปรแกรมเช8 เช8งวตถD ตถDววาการตงคาให,กกบ

งค-า และการเรยกใช,คคาคDณสมบ คDณสมบ ณสมบต8ต8นนนต,องใช, องใช,คคาขนต, น ต,นวา set ท - ทแปลว แปลวา ต*  ?งคณสมบต8ต8นน นใช,คคา ขนต,นว นวา get ท - ทแปลว แปลวา เขาถ าถง แล,วตามด,วยช& วยช&-อคDณสมบต8ต8นนน ๆ เพ&-อง องายตอการเรยกใช,และส& และส&-อความหมายมากขน ทางผ# ,เขยนจงขอนาชDดคา ส - -งท - งท 5มาปรบปรD บปรDงให, งให,ดดข ข นไปอ น ไปอก

ชDดค ดคาส าส - -งท - งท  จากชDดคาส-งท- จะเห6  จะเห6นได,ววา ผ#,เขยนนนได, ได,ปรบปรD บปรDงจากการใช, จาก การใช,คคาวา show เปC เปCนคาวา get แทน แท น และไดเพFม พฤตFกรรมใหม-ททมม set เปXนคาข?นตนและตามดวยช7อต*วแปรโดยสรางข?นมาเพ7อใหใชพฤตFกรรมน?ในการ เปลยนแปลงค-าแทนการต*?งค-าใหก*ก*บค9ณสมบ*ตFตFโดยตรง แบบชDดคาส-งท- 5โดยในพฤต8ก รรม setNamesetSe setNamesetSe  setHeightsetWeightและ setAgeโดยจะมคคาเร8 าเร8 -มต,นของการทางานไว, างานไว,ทท-พาราม8เตอรQ เตอรQเปC เปCน 1 ไว,กกอ นแล,วเพ&-อปองก องกนผ# , นผ# , เขยนโปรแกรมนนล&มใสคคา ลงไป ซ-งใน setNameน นได,กกาหนดพาราม8เตอรQตตงต,นไว,เชนกน แตเปCนการกาหนดช&-อ humanแทน humanแทน ซ-งใน setSeน setSeน นได,มมการดกจบคาวาต,องมคคา เพยง 1และ 2เทานน สวน setHei setHeightset ghtsetWei Weight ght และ setAgeก6ได,ดดกจบค บคาวา คาท-ใสเข, เข,ามานนต,องมคคา มากกวา 0 เสมอ ซ-งจากท-เราได,ททาแบบนททาให,การต การตงค งคาและ เข,าถ าถงคD งคDณสมบ ณสมบต8ต8ตตาง า ง ๆ มความถ# ความถ#กต, กต,องของข, องของข,อม# อม#ลมากข  ลมากข นกว นกวาเด8 าเด8ม เม&-อเราน อเรานาไปใช, าไปใช,งานก6 งานก6จะม จะมร#รปแบบด ป# แบบดงชD งชDดค ดคาส าส - -งท - งท 7น  7น 

$somsak = new human (); (); $somsak->setName('Somsak'); $somsak->setSex(); setHeight(178); $somsak->setWeight(65); $somsak->setAge(28); echo 'Name : '.$somsak->getName().''; echo 'Sex : '.$somsak->getSex().''; echo 'Height : '.$somsak->getHeight().''; echo 'Weight : '.$somsak->getWeight().''; echo 'Age : '.$somsak->getAge().''; $somying = new  human (); (); $somying->setName('Somying'); $somying->setSex(2); $somying->setHeight(168); $somying->setWeight(48); $somying->setAge(25); '.$somying->getName().'getName(). echo 'Sex : '.$somying->getSex().''; echo 'Height : '.$somying->getHeight().''; echo 'Weight : '.$somying->getWeight().''; echo 'Age : '.$somying->getAge().'';

ชDดค ดคาส าส - -งท - งท 7 Name : Somsak Sex : male Height : 178 Weight : 65 Age : 28 Name : Somying Sex : female Height : 168 Weight : No Answer Age : No Answer

ผลการทางานของชD างานของชDดค ดคาส าส - -งท งท - 7 จากชDดค ดคาสง- ท -ท - 7และผลการทางานของชDดค ดคาส-งท- 7น 7 น จะเห6 จะเห6นได, นได,ววา ในชDดคาส-งท- 7น นท - นท $somsak->setSex() น นไมได,ใสคคาอะไรลงไปแตผลการทางานนนก6ออกมาเปCน maleเชนเด8ม ซ -ซ -งเปCนช&-อตงต,นของพาราม8เตอรQของ พฤต8กรรมด กรรมดงกล งกลาว ซ-งชวยให, ยให,ข,ข,อม#ลตาง ๆ น นยงคงมความถ#กต,องหร&อ ในบางกรณชชว ยให,โปรแกรมนนไมททางานผ8ด พลาดไปจากท - พลาดไปจากทควรจะเปC ควรจะเปCนในข นในข นตอน นตอน จากบทความในตอนท- 1 น น เปC เปCนเพ นเพยงการปร ยงการปรบพ&  พ& นความเข, นความเข,าใจหล าใจหลกการทางานของการเขยนโปรแกรมเช8 ยนโปรแกรมเช8งวตถDเทานน ยงไม ได, ไม ได,ลงลกถ กถงการใช,งานท-วไปมากมายนก เพราะถ,าเรายงไมเข,าใจหลกการพ&นฐานแล,วก6ยากท-จะนาไปใช,งานใน ระดบส# บส#งตอไปได, อไปได,ดด โดยในตอนท-1 น น ทางผ# , างผ# ,เขยนพยายามใช, ยนพยายามใช,ศศพทQเทคน8คให,น,น,อยท - -สDสDด แตบางคร บางครงคาไทยท-ใช,อาจทาให, งDนงง ซ-งทางผ#,เขยนก6ได,ททา กากบไว,ด,ด,านหลงคาไทยนน ๆ ไว,เพ&-อให,เข,าใจงายขนสาหรบทานท-ใช,คคาเทคน8คเหลาน เปCนประจ นประจาครบ สาหรบตอนต บตอนตอไปน อไปนนผมจะแนะน นผมจะแนะนาการนาเอาแมแบบและวตถD ท-สร,างนาไปใช,งาน โดยท โดยท -เราจะยงไมส&สบ& ทอดแมแบบ แต ใช, แต ใช,งานท งานท - -วไปก วไปกอนเปC อนเปCนอ นอนด นดบแรก บแรก

เอกสารอางอF างอFง ●







PHP Manual, http://www.php.netJanuary2007 Zend PHP Certification Study GuideZendTechnologiesAugust2004 Concepts of Programming Languages (th Edition), RobertW.SebestaApril2005 The Object Modelhttp://developer.apple.com/ecember200

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF