184 | บทท่ี 9 คกุ กี้ (Cookie) และ เซสชนั่ (Session) ข้อมูล ตัวแปรเซสชันนิยมนามาใช้ในการรับส่งค่าข้อมูลท่ีเป็นความลับ เช่น การ Authentication ในการตรวจสอบผู้ที่มาใช้งานระบบเครือข่ายอินเทอรเ์ นต็ การระบุตวั ตนในการใชส้ ิทธเิ ข้าใช้งานของ ระบบ ระบบตะกร้า Shopping Cart ในระบบพาณิชย์อเิ ลก็ ทรอนิกส์ หรอื สถานะตา่ ง ๆ เช่น ระบบ ยนื ยนั ตวั ตนของเว็บไซต์ Facebook.com เปน็ ต้น อายุของตวั แปรเซสชัน สามารถกาหนดได้ 2 รูปแบบคือ 1. ผู้ใชง้ านทาการปดิ เวบ็ เบราเซอร์ 2. ครบกาหนดกาหนดอายุของ session การคอนฟกิ คา่ เวลา session.gc_maxlifetime ในไฟล์ php.ini SessionID : 478945514248854775825 ตัวแปรเซสชน่ั ไคลเอ็น 1 ตัวแปรเซสช่นั SessionID : 12345678998765432145566 ไคลเอน็ 2 ภาพที่ 9.6 หลกั การทางานของตัวแปรเซสชัน ที่มา : ผู้เขียน หลักการทางานของตัวแปรเซสช่นั 1. เว็บเบราวเซอร์จะร้องขอไฟลเ์ วบ็ เพจไปยังเว็บเซริ ์ฟเวอร์ 2. เว็บเซิร์ฟเวอร์ส่งเว็บเพจกลับมาให้ไคลเอ็นพร้อมส่งตัวแปรคุกก้ีชื่อ SessionID มาด้วย 3. เว็บเบราวเซอร์จะเช่ือมระหว่างคุกกี้ช่ือ SessionID และตัวแปรเซสชันที่เว็บ เซิรฟ์ เวอร์ ซึ่งหลายๆเว็บไซต์ก็มีการใช้งานตัวแปรคุกกี้ และตัวแปรเซสชัน ในเว็บของตนเอง ด้วย ตวั อย่างเชน่ การพฒั นาเวบ็ ไซต์ทางธุรกจิ ชนั้ สูง
บทท่ี 9 คุกกี้ (Cookie) และ เซสชนั่ (Session) | 185 ภาพที่ 9.7 การลอ็ กอินใชง้ านเว็บไซต์ facebook.com ท่ีใช้ Session ในการควบคมุ ที่มา : https://www.facebook.com ภาพที่ 9.8 ระบบ Shopping Cart เว็บไซต์ amazon.com ที่มา : https://www.amazon.com การพฒั นาเวบ็ ไซตท์ างธุรกจิ ชนั้ สงู
186 | บทท่ี 9 คุกกี้ (Cookie) และ เซสชนั่ (Session) ภาพท่ี 9.9 ระบบ Shopping Cart ทมี่ ีการเลือกสนิ คา้ เว็บไซต์ amazon.com ท่ีมา : https://www.amazon.com 9.3.1 การกาหนดตวั แปรเซสช่ัน ในการใช้งานตัวแปรเซสชั น ต้องมีการกาหนดให้สามารถใช้ด้วยคาสั่ง session_start() เป็นคาส่ังสาหรับการเร่ิมใช้งานตัวแปรเซสชั่น โดยจะกาหนดไว้บนสุด ของโค้ด ถึงสามารถกาหนดหรือเรียกใช้งานตัวแปรเซสชันได้ หรือกาหนดค่า Session ใน php.ini ให้เซสชันทางานโดยอัตโนมัติ session.auto_start = 1 ; แล้วทาการรีสตาร์ท Apache ใหม่ รปู แบบที่ 1. $_SESSION[\"variable\"] = value; variable ช่อื ตัวแปรเซสชัน value ค่าขอ้ มลู ท่กี าหนดให้กับตัวแปรเซสชัน ตัวอยา่ ง 9.7 ไฟล์ session1.php <?php // กาหนดใหส้ ามารถใชง้ าน session ได ้ session_start(); // ทดลองใสค่ อมเมนตบ์ รรทดั นค้ี รบั ?> <html> <head><meta charset=\"UTF-8\"></head> <body> <?php // กาหนดตวั แปรเซสชน่ั $_SESSION[\"userName\"] = \"ຊາວບ້ານປ່າ \";ບ້ານດອຍ การพัฒนาเว็บไซตท์ างธุรกจิ ชนั้ สงู
บทท่ี 9 คกุ กี้ (Cookie) และ เซสชนั่ (Session) | 187 $_SESSION[\"email\"] = \"chawban@gmail.com\"; // แสดงคา่ ตวั แปรเซสชนั echo \"สวัสดคี ุณ : \".$_SESSION[\"userName\"]; ?> </body> </html> ภาพที่ 9.10 การกาหนดและเรยี กใชง้ านตัวแปรเซสชัน ท่มี า : ผู้เขียน ใหน้ ักศึกษาสร้างไฟล์ sessionTest1.php โดยมโี คด้ ดังน้ี <?php session_start(); echo \"ช่อื ผใู้ ชง้ านระบบ : \".$_SESSION[\"userName\"]; echo \"<br/>email: \". $_SESSION[\"email\"]; ?> แล้วทาการทดลองเปิดไฟล์ sessionTest1.php หลังจากเปิดไฟล์ session1.php แลว้ 9.3.2 การเปล่ยี นแปลงข้อมูลที่บันทึกในตัวแปรเซสชัน การเปล่ียนค่าในตัวแปรเซสชันสามารถดาเนินการได้เช่นเดียวกับการกาหนดตัวแปร เซสชัน ดังตัวอย่าง session2.php การพัฒนาเว็บไซตท์ างธุรกจิ ชนั้ สงู
188 | บทท่ี 9 คกุ กี้ (Cookie) และ เซสชนั่ (Session) ตวั อยา่ ง 9.8 ไฟล์ session2.php <?php // กาหนดใหส้ ามารถใชง้ าน session ได ้ session_start(); // ทดลองใสค่ อมเมนตบ์ รรทดั นค้ี รบั ?> <html> <head><meta charset=\"UTF-8\"></head> <body> <?php // กาหนดตวั แปรเซสชนั่ $_SESSION[\"userName\"] = \"ຊາວບ້ານປ່າ \";ບ້ານດອຍ $_SESSION[\"email\"] = \"chawban@gmail.com\"; $_SESSION[\"userName\"] = \"ชาวบ้านปา่ บ้านดอย\"; // แสดงคา่ ตวั แปรเซสชน่ั echo \"สวัสดคี ณุ : \".$_SESSION[\"userName\"]; ?> </body> </html> ภาพที่ 9.11 การเปลี่ยนแปลงขอ้ มูลท่ีบันทึกในตวั แปรเซสชัน ท่ีมา : ผ้เู ขยี น การพัฒนาเว็บไซต์ทางธุรกจิ ชนั้ สงู
บทท่ี 9 คุกกี้ (Cookie) และ เซสชนั่ (Session) | 189 9.3.3 การยกเลกิ ตวั แปรเซสช่นั เปน็ การคนื ค่าหนว่ ยความจาใหก้ ับเว็บเบราวเซอร์จึงควรยกเลิกหรอื ทาลายตัวแปร เซสชัน ถ้าหากไม่ไดใ้ ช้งานตัวแปรเซสชันแลว้ โดยมีรูปแบบการยกเลกิ ตัวแปรเซสชัน 3 รปู แบบดงั นี้ รปู แบบท่ี 1. unset($_SESSION[\"variable\"]); ยกเลิกตวั แปรเซสชัน variable รปู แบบท่ี 2. session_unset(); ยกเลิกตวั แปรเซสชันท้ังหมด รปู แบบท่ี 3. session_destroy(); ยกเลิกตัวแปรเซสชันทัง้ หมด ตัวอยา่ ง 9.9 ไฟล์ logout.php <?php session_start(); ?> <html> <head><meta charset=\"UTF-8\"></head> <body> <?php session_destroy(); ?> ทา่ นออกจากระบบเป็นทเี่ รียบรอ้ ย </body> </html> การพฒั นาเว็บไซตท์ างธุรกจิ ชนั้ สงู
190 | บทท่ี 9 คกุ กี้ (Cookie) และ เซสชนั่ (Session) 9.4 แบบฝกึ ปฏิบตั ิในหอ้ งเรียน ใหน้ ักศึกษาทาการศึกษาเนือ้ หาแล้วทาการสรา้ งเวบ็ แบบฝกึ ปฏบิ ตั ิท่ี 1. ไฟล์ login.php ทาหนา้ ทสี่ รา้ งตวั แปรเซสชนั ช่อื level โดยรบั ข้อมลู การ Login 2 คา่ คือ user และ password มีเงือ่ นไขดงั นี้ ถา้ user เท่ากบั chawban และ password เท่ากบั 12345 ตัวแปรเซสชัน level เก็บคา่ admin ถา้ user เท่ากบั bannok และ password เท่ากบั 54321 ตัวแปรเซสชัน level เกบ็ ค่า user โดยมไี ฟลท์ อี่ ยใู่ นระบบดังนี้ 1. ไฟล์ manager.php สาหรับผู้มีค่าตัวแปรเซสชัน level เท่ากับ admin ถึง เข้าถึงได้ 2. ไฟล์ user.php สาหรับผู้มีคา่ ตวั แปรเซสชัน level เทา่ กบั user ถึงเขา้ ถงึ ได้ 3. ไฟล์ payment.php สาหรับผู้มีค่าตัวแปรเซสชัน level เท่ากับ admin หรือ user เมื่อมีผูพ้ ยายามเข้าใช้งานไฟล์ manager.php, user.php, payment.php ถา้ หาก ตรวจสอบยงั ไม่มกี ารสร้างตวั แปรเซสชัน level ให้ redirect ไปที่ไฟล์ login.php manager.php payment.php admin admin, user user.php login.php level user ภาพที่ 9.12 ตัวแปรเซสชันในการควบคุมการเข้าถงึ ไฟล์ PHP ทม่ี า : ผู้เขยี น แบบฝึกปฏิบัติท่ี 2. ให้ทาการออกแบบระบบ Shopping Online ด้วย Session ซึง่ ประกอบ 3 ไฟล์ดังน้ี 1. ไฟล์ shop.php สาหรับแสดงรายการสินค้าท่ีต้องการจาหน่ายโดยผู้ที่สนใจ สามารถส่ังซ้ือสินค้าโดยการกรอกจานวนท่ีต้องการสง่ั ซ้ือแล้วกดปุ่มสั่งซ้ือ โดย การพฒั นาเว็บไซตท์ างธุรกิจชนั้ สงู
บทท่ี 9 คกุ กี้ (Cookie) และ เซสชนั่ (Session) | 191 ใหส้ ง่ ข้อมลู รหสั สินคา้ (productID) และขอ้ มูลจานวนส่ังซอ้ื (total) ไปที่ ไฟล์ ไฟล์ addToCart.php ในการนาข้อมูลไปจัดเก็บไว้ใน ตัวแปรเซสชั น ShoppingCart 2. ไรหสั สนิ คา้ รายการ จานวน ฟ1 ครมี มะขาม add ล์3 ปลาสม้ บา้ นไผส่ ที อง add add 4 น้าพรกิ ปลากรอบทรงเครอ่ื งไผส่ ที อง 5 มะขามแปรรปู สามรส add add a6 ผา้ ซน่ิ ยอ้ มครามสวยๆงาม d7 ผา้ ไหมซน่ิ ตนี จกลายโบราณ add d8 ผา้ ฝ้ ายลายพญานาค add ToCartไ.ขpเ่hคp็มไเอมโ่ืออมดนีีผสู้สมั่งนุ ซไ้ือพสริในบคเต้ายจะทาการส่งข้อมูล 1. รหัสสินค้า 2. จานวน ท่ีสั่งซื้อ มายังไฟล์ addToCart.php ซึ่งจะทาการเพิ่มข้อมูลในอาร์เรย์ 2 มิติ ซงึ่ จัดเกบ็ ในตวั แปรอาร์เรย์ ตัวแปรเซสชั่น ShoppingCart ตวั อยา่ งอารเ์ รย์ shopping 5 1 2 3 3 4 4 9 1 10 รหัสสินค้า จานวนส่งั ซอ้ื 3. ไฟล์ cart.php ทาการแสดงข้อมลู รายการสนิ คา้ ที่ส่งั ซอ้ื โดยสบื คน้ ขอ้ มลู ใน ตาราง product โดยสบื คน้ ตาม productID ที่มี ในรหัสสนิ ค้า ในอารเ์ รย์ shopping ของตัวแปรเซสช่นั ShoppingCart ลาดบั รหัส รายการสนิ ค้า หน่วย ราคาตอ่ จานวน รวม นบั หน่วย ซือ้ 1 1 ครมี มะขาม ตลบั 50.00 5 250 2 3 ปลาสม้ บ้านไผส่ ีทอง ห่อ 150.00 2 300 3 4 นา้ พริกปลากรอบทรงเคร่อื งไผ่สีทอง กระปกุ 50.00 3 150 4 9 ไข่เคม็ ไอโอดนี สมนุ ไพรใบเตย กล่อง 50.00 4 200 5 10 หมอนแปรรปู ผ้าพน้ื เมอื ง ใบ 120.00 1 120 รวมทั้งสิน้ 1020.00 การพัฒนาเว็บไซตท์ างธุรกิจชนั้ สงู
192 | บทท่ี 9 คุกกี้ (Cookie) และ เซสชนั่ (Session) 9.5 สรปุ ตัวแปรคุกกี้ (Cookie) เป็นไฟล์ข้อมูลเล็กท่ีเว็บเซอร์ฟเวอร์ทาการสร้างแล้วส่งมาเก็บไว้ใน เครอ่ื งไคล์เอ็น สามารถจดั เก็บข้อมลู บางส่วนเพ่ือใช้ในการเรียกใช้งานได้ง่ายข้นึ เช่น การจัดเกบ็ user และ password ในการเข้าสู่ระบบ เวลาเราเข้ามาเว็บอีกคร้ังจะได้ไม่ต้องกรอกข้อมูลดังกล่าว เนื่องจากดึงมาจากตัวแปรคุกกี้แล้ว ส่วนตัวแปรเซสชัน (Session) เว็บเซิร์ฟเวอร์จะสร้างขึ้นมาแล้ว ขอ้ มูลของเซสชันไว้ที่เวบ็ เซิร์ฟเวอร์ โดยส่วนมากนิยมนามาใช้ในการตรวจสอบสถานะการใช้งาน เช่น ผูใ้ ชง้ านทาการลอ็ กอินเขา้ สู่ระบบแลว้ หรือยัง เป็นต้น ทั้งตัวแปรคุกก้ี (Cookie) และตัวแปรเซสชัน (Session) ผู้พัฒนาสามารถกาหนดอายุให้กับ ตัวแปรท้ัง 2 ได้ หรือยกเลิกตัวแปรได้ถ้าผู้ใช้ต้องการ เช่น การออกจากระบบเป็นการยกเลิกตัวแปร เซสชัน การพฒั นาเว็บไซตท์ างธุรกิจชนั้ สูง
บทท่ี 9 คกุ กี้ (Cookie) และ เซสชนั่ (Session) | 193 คาถามทา้ ยบท 1. ใหอ้ ธิบายหลกั การทางานของ คุกก้ี (Cookie) พรอ้ มวาดภาพประกอบ 2. ใหอ้ ธบิ ายหลักการทางานของ เซสชัน (Session) พรอ้ มวาดภาพประกอบ 3. สร้างไฟล์ search.php หน้าตาเว็บเพจดังต่อไปนี้ เม่ือผู้ใช้งานกรอกข้อมูล ช่ือสินค้า OTOP แลว้ เลอื กจังหวัด เม่อื กดคน้ หาใหส้ ง่ ข้อมูลไปทีไ่ ฟล์ productList.php 4. จากข้อ 2. เม่ือคลิ้กที่ล้ิงค์ช่ือสินค้า OTOP ให้เปิดไฟล์ product.php ท่ีแสดงรายละเอียด ของสินค้า ดงั หน้าตาเว็บเพจต่อไปน้ี 5. สร้างไฟล์ addProductForm.php สาหรับสร้างฟอร์มที่ใช้ในการเพ่ิมข้อมูลสินค้า OTOP เม่ือกดที่ปุ่ม เพิม่ สินคา้ OTOP ใหส้ ง่ ขอ้ มูลไปท่ไี ฟล์ addProduct.php 6. ถ้าเพ่ิมข้อมลู สาเรจ็ ใหแ้ สดงขอ้ ความ “เพ่มิ ข้อมูลสนิ ค้า OTOP เสรจ็ สมบูรณ”์ 7. ถา้ เพม่ิ ขอ้ มลู ไม่สาเรจ็ ใหแ้ สดงขอ้ ความ “ไมส่ ามารถเพม่ิ ขอ้ มลู สินค้า OTOP ได้” 8. จ า ก ข้ อ 2 . เม่ื อ ค ลิ้ ก แ ก้ ไ ข ข อ ง ร า ย ก า ร สิ น ค้ า OTOP ใด ๆ ให้ เปิ ด ไฟ ล์ updateProductForm.php พร้อมทั้งแสดงรายละเอียดของสินค้านั้น ๆ ในฟอร์ม เมื่อ ผู้ใช้งานแก้ไขข้อมูลเสร็จแล้ว กดท่ีปุ่ม แก้ไขสินค้า OTOP ให้ทาการส่งข้อมูลไปท่ีไฟล์ updateProduct.php 9. ถ้าแกไ้ ขขอ้ มลู สาเรจ็ ให้แสดงข้อความ “แกไ้ ขขอ้ มูลสนิ ค้า OTOP เสรจ็ สมบูรณ”์ 10. ถ้าแกไ้ ขข้อมูลไมส่ าเร็จให้แสดงขอ้ ความ “ไมส่ ามารถแกไ้ ขขอ้ มลู สินคา้ OTOP ได”้ 11. จากข้อ 2. เมอื่ คลิก้ ลบ ของรายการสินค้า OTOP ใด ๆ ให้แสดงไดอะลอ็ กบล็อกยนื ยันการ ลบข้อมูล ถ้าตอบ No เป็นการยกเลิกการลบข้อมูลนั้น ถ้าผู้ใช้งานตอบ yes ให้ทาการส่ง รหสั สินคา้ ไปให้กบั ไฟล์ deleteProduct.php เพ่อื ทาการลบขอ้ มลู สนิ ค้าน้นั 12. ถ้าลบขอ้ มูลสาเรจ็ ให้แสดงข้อความ “ลบข้อมูลสนิ ค้ารหสั 1234 เสรจ็ สมบรุ ณ”์ ? 13. ถ้าลบข้อมูลไมส่ าเรจ็ ให้แสดงขอ้ ความ “ไม่สามารถลบขอ้ มลู สินค้า OTOP ได้” หมายเหตุ : รหัส 1234 คือรหัสท่ีส่งมาจาก productList.php การพฒั นาเวบ็ ไซต์ทางธุรกิจชนั้ สูง
บทที่ 10 การเขยี นโปรแกรมเชิงวัตถุ Object-Oriented Programming (OOP) การเขียนโปรแกรมคอมพิวเตอร์สมัยก่อนนิยมเขียนโปรแกรมแบบ โครงสร้าง (Structure Programming) กาหนดข้ันตอนให้เครื่องคอมพิวเตอร์ทางานโดยมีโครงสร้างการควบคุมพื้นฐาน 3 หลักการ ได้แก่ การทางานแบบตามลาดับ (Sequence) การเลือกกระทาตามเง่ือนไข (Decision) และการทาซ้า (Loop) ปัจจุบันน้ี การออกแบบ และพัฒนาโปรแกรม เปลี่ยนจากการเขียนโปรแกรม แบบโครงสร้าง เปน็ การเขียนโปรแกรมเชงิ วัตถุ แทน การเขียนโปรแกรมเชิงวัตถุ มีแนวคิดว่าระบบประกอบไปด้วยวัตถุต่าง ๆ หลากหลายชนิด ที่เป็นอสิ ระต่อกัน สามารถท่ีจะทางานร่วมกันได้ เปรียบเสมอื นการดารงชีวิตจริงที่ ประกอบดว้ ยวัตถุ ต่าง ๆ ท่ีช่วยกันทางาน เช่น วัตถุคน และวัตถุรถ ท่ีเป็นอิสระต่อกัน แต่สามารถอยู่ร่วมกันได้ โดยวตั ถคุ นสามารถส่งขอ้ มูลให้รถว่งิ สง่ ขอ้ มูลใหร้ ถหยดุ เป็นต้น 10.1 หลกั การเขียนโปรแกรมเชิงวัตถุ การเขียนโปรแกรมเชิงวัตถุ (Object Oriented Programming) เป็นวิธีการเขียน โปรแกรมแบบใหม่ โดยมีแนวคิดวา่ ระบบจะประกอบดว้ ยวัตถุตา่ ง ๆ หลากหลายชนิดที่ทางานร่วมกัน เพ่ือให้ระบบงานนั้นสามารถทางานตามท่ีผู้พัฒนาต้องการ จึงเรียกว่าการเขียนโปรแกรมเชิงวัตถุ โดยแนวโนม้ ของการเขียนโปรแกรมเชิงวัตถุ กาลงั เป็นทน่ี ยิ มในการพฒั นาระบบงาน โดยในวัตถุตา่ ง ๆ จะประกอบด้วย 1. คุณลกั ษณะ (Attributes) หมายถึง คุณสมบัติตา่ ง ๆ ของวัตถนุ ้ัน ๆ เชน่ - รถยนต์ ประกอบด้วย รุน่ , สี, นา้ มนั ท่ใี ช้, ประเภทเกยี ร,์ ปที ี่ผลติ - คน ประกอบด้วย หมายเลขบัตรประจาตัวประชาชน, วันเกิด, เพศ, น้าหนกั , ส่วนสูง, ชือ่ , นามสกลุ 2. พฤติกรรม (Operations หรอื Methods) หมายถึง พฤติกรรมหรือการดาเนินงานที วัตถนุ ้ันๆสามารถทาได้ สาหรับภาษา PHP คอื Function เช่น - รถยนต์ ประกอบด้วย วงิ่ , หยุด, เรง่ ความเร็ว, เปิดปิดไฟ, เปิด ปดิ ประต,ู เลี้ยวซ้าย, เลย้ี วขวา, ถอยหลัง - คน ประกอบด้วย วิง่ , ลกุ , นั่ง, นอน, พูด, รอ้ งไห้, หวั เราะ โดยที่วัตถุจะมีคุณสมบัติและมีพฤติกรรมต่าง ๆ เท่ากัน ถ้าเป็นวัตถุที่สร้างมาจากแม่แบบ เดยี วกัน แตอ่ าจจะมีข้อมลู ทีแ่ ตกต่างกนั กไ็ ด้ การพัฒนาเวบ็ ไซต์ทางธุรกจิ ชนั้ สูง นริ นั ดร ผานิจ
196 | บทท่ี 10 การเขียนโปรแกรมเชิงวตั ถุ ภาพท่ี 10.1 แสดงการทางานร่วมกันระหว่าง วตั ถุคน (human) และ วัตถยุ านพาหนะ (vehicle) ท่มี า : ผ้เู ขียน จากภาพที่ 10.1 วัตถุคน สามารถส่งข้อมูลให้กบั วตั ถุยานพาหนะได้ เช่น วัตถคุ น ส่งข้อมูลในการเร่งความเร็วรถ หรอื หยุดรถเปน็ ตน้ 10.2 คลาส (Class) และออบเจค็ (Object) 10.2.1 คลาส (Class) หมายถึง ต้นแบบ , แม่แบบ หรือพิมพ์เขียว (Blue Print) สาหรับกาหนด ส่วนประกอบต่าง ๆ ให้กับออบเจ็ค โดยภายในคลาสจะมีการกาหนด 2 ส่วนประกอบหลักๆ คือ คณุ ลักษณะ (Attributes) และพฤติกรรม (Operations หรอื Methods) ชื่อคลาส Attributes Methods ภาพท่ี 10.2 ตวั อย่างแผนภาพคลาสไดอะแกรม ที่มา : ผ้เู ขียน แผนภาพคลาสไดอะแกรม ประกอบดว้ ย 1. ช่ือคลาส 2. คณุ ลักษณะ (Attributes) 3. พฤตกิ รรม (Operations หรอื Methods) การพัฒนาเวบ็ ไซต์ทางธุรกิจชนั้ สงู
บทท่ี 10 การเขยี นโปรแกรมเชิงวตั ถุ | 197 vehicle - speed : int - color : string - brand : string - oil : string + run() + stop() + turnLeft() + turnRight() ภาพท่ี 10.3 แผนภาพคลาสไดอะแกรม vehicle ท่มี า : ผูเ้ ขยี น 10.2.2 ออบเจค็ (Object) หรอื อินสแตนซ์ (Instance วัตถทุ ส่ี รา้ งขน้ึ จากคลาส โดยออบเจ็คจะถกู สรา้ งข้นึ มาไดจ้ ะตอ้ งแม่คลาสเปน็ ต้นแบบก่อนเสมอ $car1 = new vehicle(); คลาส vehicle $car2 = new vehicle(); $car3 = new vehicle(); ภาพที่ 10.4 สรา้ งออบเจ็คจากคลาส vehicle ท่ีมา : ผู้เขียน การพัฒนาเวบ็ ไซต์ทางธุรกิจชนั้ สงู
198 | บทท่ี 10 การเขียนโปรแกรมเชิงวัตถุ จากภาพท่ี 10.4 แสดงการสร้างออบเจ็ค car1, ออบเจค็ car2, ออบเจค็ car3 ซง่ึ ออบเจ็คท้งั 3 ออบเจ็คสรา้ งมาจากคลาส vehicle 10.3 โครงสรา้ งของคลาส ในภาษา PHP การสร้างคลาสสามารถกาหนดรปู แบบการสรา้ ง ดงั น้ี <?php ❶❷ class ชื่อคลาส{ // ❸ พ้นื ทขี่ องคลาส } ?> ❶ คยี เ์ วิรด์ class สาหรับระบุคลาส ❷ ช่ือคลาส ❸ พน้ื ทีส่ าหรบั กาหนดคุณสมบตั ิและพฤติกรรมของคลาส รูปแบบ <?php class ชือ่ คลาส(){ // แบบไมร่ ะบุคา่ เรมิ่ ตน้ $Properties1; $Properties2 = \"ค่าเริ่มตน้ \"; // แบบระบคุ า่ เริ่มตน้ function methods1(){ // พื้นที่ methods1 } } ?> การพัฒนาเวบ็ ไซตท์ างธุรกจิ ชนั้ สูง
บทท่ี 10 การเขียนโปรแกรมเชิงวัตถุ | 199 ตัวอยา่ ง 10.1 คลาส human <?php class human{ public $name; public $gender= \"หญิง\"; public $occupation; function talk(){ echo \"พฤตกิ รรมการพดู \"; } function run(){ echo \"พฤติกรรมวง่ิ \"; } } ?> 10.4 กฎการกาหนดช่ือคลาส ภาษา PHP มกี ฎในการต้งั ชือ่ คลาส ดังตอ่ ไปนี้ 1. ชื่อของคลาสต้องข้ึนต้นด้วย ตัวอักษร A-Z หรือ a-z หรือเคร่ืองหมาย _ เท่านั้น (ห้าม ขึ้นตน้ ด้วยตัวเลข) 2. ช่ือของคลาสตามด้วย A-Z หรือ a-z หรือ 0-9 หรือ _ เช่น car, human, animal, service 3. ชื่อคลาสเป็นแบบ Case Sensitive ตัวพิมพ์ใหญ่/เล็กถือเป็นคนละตัว เช่น Human, human, HuMan, huMan 4. ช่ือคลาสจะต้องไม่ตั้งช่ือซ้ากับคาสงวนของภาษา PHP เช่น if, and, do, new, class, function เปน็ ตน้ การพัฒนาเวบ็ ไซต์ทางธุรกจิ ชนั้ สูง
200 | บทท่ี 10 การเขียนโปรแกรมเชิงวัตถุ 10.5 คณุ สมบตั ิของคลาส (Properties) คณุ สมบัติของคลาส หมายถึง ตวั แปรที่ใชส้ าหรบั กาหนดค่าคณุ สมบตั ิต่าง ๆ ของคลาส รปู แบบคณุ สมบัติของคลาส [Access Modifiers] ชื่อคณุ สมบัติ [= ค่าเร่มิ ตน้ ]; [Access Modifiers] หมายถึง ระดับสิทธใิ นการเขา้ ถึงคุณสมบตั ขิ องคลาส public คลาสอน่ื ๆ จะสามารถเขา้ ถึงคุณสมบัติได้ protected เฉพาะภายในและคลาสลูกเท่านนั้ ท่สี ามารถเข้าถึงได้ private เฉพาะภายในคลาสนั้น ๆ เม่าน้ัน ช่ือคุณสมบตั ิ หมายถึง ชอ่ื ท่ีเราต้องการกาหนดใหก้ ับคลาส ค่าเริม่ ตน้ หมายถึง คา่ ทต่ี ้องการกาหนดเป็นค่าโดยอตั โนมัติ ตัวอย่าง 10.2 คลาส human() <?php class human(){ public $name; public $gender= \"หญงิ \"; public $occupation; } ?> ได้มกี ารกาหนดคุณสมบัติ $name เกบ็ ขอ้ มลู ชอื่ $gender เกบ็ ข้อมูลเพศ $occupation เกบ็ ข้อมูลอาชีพ กาหนดระดับสิทธกิ ารเข้าถึงของคุณสมบัติ $name, $occupation, $gender เป็น แบบ public และกาหนดระดับสิทธิการเข้าถึงของคุณสมบัติ $birthDate เป็นแบบ private การพฒั นาเว็บไซต์ทางธุรกจิ ชนั้ สูง
บทท่ี 10 การเขยี นโปรแกรมเชิงวตั ถุ | 201 10.6 สร้างออ็ บเจค็ (Object) อ็อบเจ็ค (Object) หรือ อินสแตนซ์ (Instance) หมายถึงวัตถุท่ีสร้างมาจากคลาส ในภาษา PHP มีรูปแบบการสรา้ งอ็อบเจ็ค ดงั นี้ รูปแบบ $Object = new Class(); $Object หมายถงึ วตั ถุ Class() หมายถงึ คลาสต้นแบบ ตวั อย่าง 10.3 <?php class Human{ public $name; public $gender= \"หญิง\"; public $occupation; function sayHi(){ echo \"สวัสดฉี นั ช่ือ : \". $this->name; } function run(){ echo \"พฤติกรรมวิ่ง\"; } } // end class ?> จากตัวอยา่ ง 10.3 คลาส Human ท่เี ป็นตน้ แบบในการสรา้ งอ็อบเจ็ค ดงั ตวั อยา่ งต่อไปน้ีเปน็ การสร้างอ็อบเจ็ค title และอ็อบเจ็ค yam การพัฒนาเวบ็ ไซตท์ างธุรกิจชนั้ สูง
202 | บทท่ี 10 การเขยี นโปรแกรมเชิงวตั ถุ ออ็ บเจ็ค title อ็อบเจ็ค yam <?php <?php class Human{ } // ตัวอยา่ ง 10.3 class Human{ } // ตวั อยา่ ง 10.3 $title = new Human(); $yam = new Human(); //กาหนดคา่ คณุ สมบัติ //กาหนดคา่ คณุ สมบัติ $title -> name = \"สรวชิ ญ\"์ ; $yam -> name = \"เขมมิกา\"; $title -> gender = \"ชาย\"; $yam -> gender = \"หญงิ \"; $title -> occupation = \"นายธนาคาร\"; $yam -> occupation = \"พยาบาล\"; //แสดงขอ้ มลู //แสดงขอ้ มลู echo \"แสดงขอ้ มูล Title <br/>\"; echo \"แสดงขอ้ มูล Yam <br/>\"; echo $title -> name.\"<br/>\"; echo $yam -> name.\"<br/>\"; echo $title -> gender.\"<br/>\"; echo $yam -> gender.\"<br/>\"; echo $title -> occupation. \"<br/>\"; echo $yam -> occupation. \"<br/>\"; ?> ?> จากโคด้ เป็นการสร้างอ็อบเจค็ Title ($title) และสรา้ งออ็ บเจ็ค Yam ($yam) โดยสรา้ ง จากคลาส Human (new Human();) ซง่ึ อ็อบเจ็ค Title และอ็อบเจ็ค Yam มคี ุณสมบัติต่าง ๆ (name, gender, occupation) เช่นกัน แตค่ ่าของขอ้ มูลทีอ่ ยูใ่ นแตล่ ะคุณสมบัติจะแตกต่างกนั เน่อื งจากเป็นคนละอ็อบเจค็ การพฒั นาเว็บไซตท์ างธุรกิจชนั้ สูง
บทท่ี 10 การเขยี นโปรแกรมเชิงวัตถุ | 203 Properties สรวิชญ์ name เขมมิกา ชาย gender หญงิ นายธนาคาร occupation พยาบาล อ็อบเจ็ค Yam อ็อบเจ็ค Title ภาพที่ 10.5 ขอ้ มูลในออ็ บเจ็ค Title และอ็อบเจ็ค Yam ทีม่ า : ผ้เู ขียน จากภาพที่ 10.5 จะพบว่าอ็อบเจ็คท่ีสร้างมาจากคลาสเดียวกันจะมีคุณสมบัติเหมือนกัน คุณสมบัติเท่ากัน แต่ข้อมูลของแต่ละคุณสมบัติของแต่ละอ็อบเจ็คจะแตกต่างกัน เช่น คุณสมบัติ Name ออ็ บเจ็ค Title คือ สรวทิ ย์ สว่ นอ็อบเจค็ Yam คือ เขมกิ า ภาพท่ี 10.6 ผลการแสดงข้อมูลของอ็อบเจค็ Title ท่ีมา : ผเู้ ขียน ภาพที่ 10.7 ผลการแสดงข้อมูลของอ็อบเจค็ Yam ทมี่ า : ผู้เขยี น การพัฒนาเว็บไซตท์ างธุรกิจชนั้ สงู
204 | บทท่ี 10 การเขียนโปรแกรมเชิงวตั ถุ 10.7 ค่าคงท่ี (Constants) ค่าคงท่ี (Constants) เป็นคุณสมบัติชนิดหน่ึงของคลาส ท่ีประกาศค่าขึ้นมาใช้ แต่จะ แตกต่างกับคุณสมบตั ิท่ัวไปตรงท่ี ค่าคงท่ีน้ันจะไม่สามารถเปล่ียนแปลงค่าได้ โดยการประกาศคา่ คงที่ ไม่ต้องใส่ $ หน้าชื่อค่าคงท่ี เหมือนกับคุณสมบัติทั่วไป โดยสิทธิในการเข้าถึงค่าคงที่ เร่ิมต้นจะเป็น แบบ public การเรยี กใช้งานคา่ คงทจ่ี ะใชเ้ ครือ่ งหมาย :: คน่ั ระหวา่ งชื่อคลาสและ คา่ คงท่ี แบบท่ี 1. เรียกผ่านคลาส คลาส :: คา่ คงท่ี แบบที่ 2. เรียกผา่ นอ็อบเจค็ อ็อบเจค็ :: คา่ คงท่ี ตวั อย่าง 10.4 <?php class Area{ public $radius; public const PI = 3.14; function cal(){ echo self::PI*($this->radius* $this->radius); } } echo Area::PI; // การเรยี กใชง้ านผ่านคลาส $circle1 = new Area(); $circle1->radius = 7; การพฒั นาเว็บไซตท์ างธุรกจิ ชนั้ สงู
บทท่ี 10 การเขียนโปรแกรมเชิงวตั ถุ | 205 echo \"<br/>\"; echo $circle1::PI; //การเรยี กใชง้ านผา่ นอ็อบเจ็ค echo \"<br/>\"; echo $circle1->cal(); ?> ผลการรนั โปรแกรม 3.14 3.14 153.86 จากโคด้ เป็นการประกาศค่าคงท่ี และการใช้งานคา่ คงที่ มสี ่วนทีน่ ่าสนใจดังนี้ self คียเ์ วิอรด์ สาหรบั การอา้ งถงึ ตวั เองของคา่ คงที่ ค้ันดว้ ย :: และตามดว้ ยคา่ คงที่ $this สาหรับการอ้างถงึ คณุ สมบัติ (Properties) ในคลาส การเรียกใช้งานค่าคงทผี่ า่ นคลาส การเรียกใช้งานค่าคงที่ผ่านออ็ บเจ็ค ทดลองเปลี่ยน public const PI = 3.14; เปน็ private const PI = 22/7; 10.8 เมธทอด (Method) เมธทอด หรือพฤติกรรมต่าง ๆ ที่วัตถุนั้น ๆ สามารถทาได้ สาหรับภาษา PHP เมธทอด คือ ฟังชันนั้นเอง 10.8.1 การประกาศเมธทอด โดยมีรูปแบบเมธทอด ดงั นี้ รูปแบบ [Access Modifiers] [static] function ชอื่ เมธทอด ([arguments]) { // พ้ืนทเ่ี มธทอด [return ค่าที่ตอ้ งการส่งคืน] } การพัฒนาเวบ็ ไซต์ทางธุรกจิ ชนั้ สงู
206 | บทท่ี 10 การเขยี นโปรแกรมเชิงวัตถุ [Access Modifiers] หมายถึง ระดับสิทธใิ นการเข้าถงึ เมธทอด [static] หมายถึง กาหนดให้สามารถเรยี กใชเ้ มทอดผา่ นคลาสได้ [arguments] หมายถงึ ข้อมูลท่ีต้องการสง่ ให้กบั เมทอด [return คา่ ทตี่ อ้ งการสง่ คนื ] หมายถึง ข้อมลู ทต่ี ้องการส่งค่าคนื กลับออกจากเมทอด ตวั อยา่ ง 10.5 คลาส Sell สาหรบั คานวณภาษีมลู ค่าเพิ่ม (vat) <?php class Sell { // เมธทอดทไ่ี มม่ กี ารสง่ คา่ คนื public function vat1($money) { $total = $money *7/100; echo \"สนิ ค้า \".$money.\" บาทตอ้ งชาระ vat \". $total .\" บาท \"; } // เมธทอดทมี่ กี ารสง่ คา่ คนื public function vat2($money) { $total =$money*7/100; return $total; } } $cal1 = new Sell(); $cal1-> vat1(200); // สนิ คา้ 200 บาทตอ้ งชาระ vat 14 บาท $total = $cal1-> vat2(200); echo $total; // 14 ?> ผลการรันโปรแกรม สินคา้ 200 บาทต้องชาระ vat 14 บาท 14 การพัฒนาเว็บไซต์ทางธุรกจิ ชนั้ สงู
บทท่ี 10 การเขยี นโปรแกรมเชิงวัตถุ | 207 10.8.2 การเรยี กใช้เมธทอด ในการเรียกใชเ้ มธทอดในภาษา PHP มรี ูปแบบการเรียกใช้ ดงั นี้ กรณีเมธทอดท่ีไม่มีการสง่ ค่าคืน Object -> Method_Name(); กรณีเมธทอดมีการส่งคา่ คืน ให้กาหนดตัวแปร ($Variable) มารบั คา่ $Variable = Object -> Method_Name(); ตวั อยา่ งการเรยี กใชง้ านเมธอด 3.เมธทอดท่ีไม่มกี ารส่งคา่ คืน จากตัวอยา่ ง 10.4 สามารถเรยี กใช้ เมธอด vat1() ดงั นี้ $cal1-> vat1(200); 4.เมธทอดที่มกี ารส่งค่าคนื จากตวั อย่าง 10.4 สามารถเรยี กใช้ เมธอด vat2() โดยกาหนด $total รอรับคา่ ดังน้ี $total = $cal1-> vat2(200); 10.9 คอนสตรคั เตอรแ์ ละดีคอนสตรคั เตอร์ (Constructors and Destructors) คอนสตรัคเตอร์ คือ เมธอดพิเศษจะทางานตอนสร้างคลาส โดยจะไม่มีการ Return หรือ สง่ คา่ ใด ๆ กลบั ออกไป โดยมชี ่ือเมธอดคือ __construct() สว่ นดีคอนสตรัคเตอร์ คือ เมธอดพิเศษเช่นกันจะทางานตอนคลาสนั้นถูกยกเลิกการใช้งาน หรือ ออบเจ็คถูกทาลาย โดยมีชื่อเมธอด คือ __destruct() ในการยกเลิกการใช้งาน เช่นการใช้คาส่ัง unset() ตวั อยา่ ง 10.6 คอนสตรัคเตอร์ function __construct() { // คาสั่งต่าง ๆ } ตวั อย่าง 10.7 ดีคอนสตรคั เตอร์ function __destruct(){ // คาส่ังตา่ ง ๆ } การพัฒนาเว็บไซต์ทางธุรกิจชนั้ สงู
208 | บทท่ี 10 การเขยี นโปรแกรมเชิงวัตถุ ตวั อย่าง 10.8 คลาส Test <?php class Test{ private $name; function _construct($name) { $this->name = $name; echo \"<br/>สวสั ดี ฉันคือคอนสตรัคเตอร์ \". $this->name; } function __destruct() { echo \"<br/>สวัสดี ฉันคอื ดีคอนสตรคั เตอร์ \". $this->name; } } $obj1 = new Test(\"วตั ถุท่ี 1\"); unset($obj1); $obj2 = new Test(\"วตั ถุที่ 2\"); unset($obj2); ?> ผลการรนั โปรแกรม สวสั ดีฉันคอื คอนสตรัคเตอร์ วตั ถุที่ 1 สวัสดฉี นั คอื ดคี อนสตรัคเตอร์ วตั ถทุ ่ี 1 สวสั ดีฉันคือคอนสตรคั เตอร์ วตั ถุท่ี 2 สวัสดีฉนั คอื ดคี อนสตรคั เตอร์ วัตถุที่ 2 การพฒั นาเวบ็ ไซต์ทางธุรกจิ ชนั้ สูง
บทท่ี 10 การเขยี นโปรแกรมเชิงวัตถุ | 209 10.10 การสืบทอดคุณสมบตั ิ (Inheritance) การสืบทอดคุณสมบัติ เป็นคุณสมบัติในการเขียนโปรแกรมเชิงวัตถุ โดยคลาสหลัก เรียกว่า คลาสแม่ และคลาสที่สืบทอดคุณสมบัติ เรียกว่าคลาสลูก โดยคุณสมบัติท่ีคลาสแม่ สามารถสืบทอดให้กับคลาสลูกได้ คือ ระดับสิทธิการเข้าถึงแบบ public และ protected เทา่ นนั้ การสบื ทอดคุณสมบัติจะระบทุ ีค่ ลาสลูก โดยใชค้ าว่า extends รปู แบบ การสบื ทอดคุณสมบัติ class คลาสลูก extends คลาสแม่{ //พนื้ ทคี่ ลาสลกู } ประโยชน์ของการสืบทอดคุณสมบัตคิ ือคลาสลูกสามารถเรียกใชง้ านคาสงั่ ต่าง ๆ ท่ีคลาส แม่ถ่ายทอดมาให้ได้ โดยไม่ต้องเขียนโค้ดใหม่ เม่ือมีการปรับปรุงเปล่ียนแปลงการทางาน ของโปรแกรมง่ายขึ้น เช่น การแก้ไขคุณสมบัติทค่ี ลาสแม่ทีเ่ ดียว ก็จะมผี ลต่อคุณสมบัติคลาสลูก ทส่ี บื ทอดคุณสมบตั ดิ ว้ ย ตวั อยา่ ง 10.9 คลาสเก่ยี วกบั บญั ชธี นาคาร 1. Checking Account คือ บัญชีเงินฝากที่รองรับการจา่ ยเช็คเงนิ สดหรือการรูดบัตรเด บิต ธนาคารส่วนใหญ่นอกจากจะไม่ให้ดอกเบี้ยเงินฝากในบัญชีนี้แล้ว ยังจะคิด ค่าธรรมเนยี มการใชเ้ ชค็ ทกุ เดอื น 2. Saving Account คือ บัญชีเงินฝากออมทรัพย์ ซ่ึงสามารถฝากถอน และมี ดอกเบี้ยให้ ภาพที่ 10.8 แผนภาพคลาสไดอะแกรมแสดงการสืบทอดคุณสมบัติ ที่มา : ผู้เขยี น การพฒั นาเว็บไซต์ทางธุรกิจชนั้ สงู
210 | บทท่ี 10 การเขียนโปรแกรมเชิงวัตถุ จากภาพท่ี 10.8 คลาส BankAccount เป็นคลาสแม่ ส่วนคลาส CheckingAccount และ ค ล าส SavingAccount ค ล าส ลู ก ที่ ถ่ าย ท อ ด ม าจ าก ค ล าส BankAccount โด ย ที่ ค ล าส CheckingAccount และคลาส SavingAccount สามารถ ฝาก, ถอน และเช็คยอดเงินได้ เน่ืองจาก เป็นคุณสมบัติท่ีถ่ายทอดมาจากคลาสแม่ซึ่งก็คือคลาส BankAccount และมีส่วนท่ีแตกต่างกัน ระหวา่ งบัญชี 2 บญั ชี เนื่องจากเปน็ คณุ สมบัติเฉพาะของแต่ละคลาสคือ คลาส CheckingAccount สามารถกาหนดคา่ ธรรมเนียมการใช้วงเงนิ ได้ และมีคา่ ธรรมเนยี ม การใชว้ งเงนิ ส่วน คลาส SavingAccount สามารถเพ่มิ ดอกเบย้ี ได้ 10.11 ระดบั สทิ ธใิ นการเขา้ ถงึ (Visibility) ระดับสิทธิในการเข้าถึงการเข้าใช้งาน คุณสมบัติ หรือ เมธอดของคลาส หรือค่าคงที่ (PHP 7.1.0 ขน้ึ ไป) โดยกาหนดระบสุ ิทธกิ ารเข้าถงึ ด้านหนา้ ในภาษา PHP มี 3 แบบคือ 1. Public สามารถเรียกได้ทกุ ที่ ทั้งภายในและภายนอกคลาส 2. Protected สามารถเรยี กได้เฉพาะภายในคลาสตนเอง และคลาสที่คลาสที่ สบื ทอดคุณสมบตั ิ (Inheritance) ไปเท่าน้ัน 3. Private สามารถเรียกได้เฉพาะภายในคลาสตนเองเท่านั้น เป็นการป้องกัน คลาสอื่น ๆ เข้าถึงขอ้ มูลของคลาสนั้น ๆ เพื่อให้เขา้ ใจงา่ ยข้นึ จงึ ขอยกภาพการต์ นู มาอธบิ ายดังนี้ Private หมายถงึ คนที่กาลังอยู่ในบ้าน เฉพาะตนเองเทา่ นนั้ Protected หมายถึง เครือญาติ (พ่อ-ลูก) เท่าน้ันทส่ี ามารถเขา้ ถงึ ข้อมูล Protected ได้ Public หมายถงึ พืน้ ทีส่ าธารณะทุก ๆ คนก็สามารถเข้าถึงข้อมูล Public ได้ ภาพที่ 10.9 การ์ตนู อธิบายการกาหนดการเขา้ ถึงข้อมลู แบบตา่ งๆ ทมี่ า : http://w3programmers.com/bangla/ การพัฒนาเวบ็ ไซตท์ างธุรกจิ ชนั้ สงู
บทท่ี 10 การเขียนโปรแกรมเชิงวัตถุ | 211 10.12 การหอ่ หุ้ม (Encapsulation) เป็นการห่อหุ้มหรอื ปกปิดการเข้าถึงส่วนที่ไม่ต้องการให้ภายนอกเข้าถึงโดยตรง เสมือน เม็ดยาทเี่ ปน็ แคบซลู ที่หอ่ หมุ้ เม็ดยาเอาไว้ ในการเขียนโปรแกรมเชิงวัตถุ มีคุณสมบัติการห่อหุ้มเช่นกัน โดยส่วนท่ีถูกห่อหุ้มจะไม่ สามารถเข้าถึงได้โดยตรง โดยส่วนที่ต้องการปกปิดเอาไว้จะกาหนดระดับสิทธิในการเข้าถึง เป็นแบบ Private ภาพที่ 10.10 โครงสร้างการ Encapsulation ทม่ี า : https://www.softwaretestingmaterial.com/encapsulation-in-java/ จากภาพที่ 10.10 แสดงโครงสร้างการ Encapsulation จะพบว่าส่วนที่สามารถถูกปกปิด เอาไว้ได้ คือ Properties และ Methods โดยถูกห่อหุ้มด้วย Class เพ่ือให้เห็นภาพขอยกตัวอย่าง คลาส User ดังน้ี ตัวอยา่ ง 10.10 <?php class User{ private $age; public $name; public function getAge() { return $this->age; } public function setAge($age) { if ($age < 60) { การพัฒนาเว็บไซต์ทางธุรกิจชนั้ สงู
212 | บทท่ี 10 การเขียนโปรแกรมเชิงวตั ถุ return; echo \"เฉพาะผู้ที่มอี ายุ 60 ปขี ึ้นไปเท่าน้นั \"; } $this->age = $age; } }// end class $nirun = new User(); $nirun -> $age = 24; $nirun -> name =\"นิรนั ดร ผานจิ \"; ?> อธบิ ายโค้ด กาหนด properties ของคลาส $age ข้อมลู อายุ การเขา้ ถึงเปน็ แบบ private $name ขอ้ มูลช่อื การเข้าถงึ เป็นแบบ public เมธอด getAge() สาหรับดึงข้อมูลอายุ การเข้าถึงเป็นแบบ public เมธอด setAge($age) กาหนดอายุ เทา่ กบั $age การเขา้ ถงึ เป็นแบบ public สร้างออ็ บเจค็ $nirun กาหนดอายุ เท่ากบั 42 ( $nirun -> age = 42; ) จะทาให้เกดิ ข้อผิดพลาด ภาพที่ 10.11 แสดงข้อมผดิ พลาดเนือ่ งจากขอ้ มลู $age ถูกห่อห้มุ ปกปิดเอาไว้ ทีม่ า : ผเู้ ขียน เนอ่ื งจากข้อมลู $age ถูกห่อหมุ้ ปกปิดเอาไว้ สงั เกตว่าด้านหนา้ เปน็ private การพฒั นาเว็บไซต์ทางธุรกจิ ชนั้ สงู
บทท่ี 10 การเขียนโปรแกรมเชิงวตั ถุ | 213 กาหนดชื่อเป็น นิรันดร ผานิจ ( $nirun -> name =\"นิรันดร ผานิจ\"; ) ในส่วนน้ี จะไมพ่ บขอ้ ผดิ พลาดเนอ่ื งจากไมถ่ ูกหอ่ หุ้มเอาไว้ การเรียกใช้งานส่วนที่หอหุ้มเอาไว้จะไม่สามารถเรียกใช้งานได้โดยตรง จะต้องเรียกใช้ งาน โดยการสรา้ งเมธอด ดังตัวอย่าง <?php class User{ /*Code ตัวอยา่ ง 10.9*/ } $nirun = new User(); //$nirun -> age = 42; ไมส่ ามารถเรยี กใชง้ านไดโ้ ดยตรง $nirun-> setAge(25); // กาหนดอายเุ ทา่ กับ 25 // การนาขอ้ มูลมาใช้ echo $nirun-> Names; echo $nirun-> getAge(); ?> ภาพที่ 10.12 กาหนดอายเุ ท่ากบั 25 ทีม่ า : ผเู้ ขียน ทดลองเปลย่ี นเป็น $nirun-> setAge(65); // กาหนดอายเุ ทา่ กบั 65 การพัฒนาเว็บไซตท์ างธุรกจิ ชนั้ สูง
214 | บทท่ี 10 การเขียนโปรแกรมเชิงวตั ถุ ภาพที่ 10.13 กาหนดอายเุ ท่ากบั 65 ที่มา : ผู้เขียน 10.13 สรุป การเขียนโปรแกรมเชิงวัตถุ (Object Oriented Programming) เป็นวิธีการเขียน โปรแกรมแบบใหม่ โดยมีแนวคิดว่าระบบจะประกอบด้วยวัตถุต่าง ๆ หลากหลายชนิดท่ีทางาน ร่วมกนั เพื่อให้ระบบงานน้ันสามารถทางานตามทผี่ ู้พัฒนาต้องการ จงึ เรียกว่าการเขยี นโปรแกรม เชิงวัตถุ โดยแนวโนม้ ของการเขียนโปรแกรมเชิงวัตถกุ าลงั เป็นทน่ี ิยมในการพฒั นาระบบงาน โดยวัตถุประกอบดว้ ย 1. คณุ ลักษณะ (Properties) หมายถึง คุณสมบัติต่าง ๆ ของวัตถุ นั้น ๆ 2. พฤติกรรม (Operations หรือ Methods) หมายถึง พฤติกรรมหรือการดาเนินงานท่ี วตั ถนุ ้ันๆสามารถทาได้ สาหรบั ภาษา PHP คือฟงั ก์ชัน่ น้ันเอง ในการเขียนโปรแกรมเชิงวัตถุจะมีการออกแบบคลาส (Class) ต้นแบบ, แม่แบบ หรือพิมพ์เขียว (Blue Print) สาหรับกาหนดส่วนประกอบต่าง ๆ ให้กบั ออบเจ็ค ในการนาไปใชง้ านจะต้องมีการ สร้างให้เปน็ ออบเจ็ค (Object) ในการใชง้ าน คณุ ลักษณะ และพฤตกิ รรม สามารถกาหนดสทิ ธิการเข้าถึงได้ ดงั นี้ public หมายถึง คลาสอืน่ ๆ จะสามารถเขา้ ถงึ คณุ สมบัติได้ protected หมายถงึ เฉพาะภายในและคลาสลูกเทา่ น้นั ทีส่ ามารถเข้าถงึ ได้ private หมายถึง เฉพาะภายในคลาสนนั้ ๆเทา่ นัน้ การสืบทอดคุณสมบัติ เป็นคุณสมบัติในการเขียนโปรแกรมเชิงวัตถุ โดยคลาสหลัก เรียกว่า คลาสแม่ และคลาสที่สืบทอดคุณสมบัติ เรียกว่าคลาสลูก โดยคุณสมบัติท่ีคลาสแม่ สามารถสืบทอดให้กับคลาสลูกได้ คือ ระดับสิทธิการเข้าถึงแบบ public และ protected เทา่ นนั้ ตัวอย่างการเขียนโปรแกรมเชิงวัตถุด้วยภาษา PHP ในตาราเล่มนี้จะเห็นได้ เช่น การ เชื่อมตอ่ ฐานข้อมลู ในบทท่ี บทที่ 8 ภาษา PHP และฐานขอ้ มลู MySQL การพัฒนาเว็บไซต์ทางธุรกจิ ชนั้ สูง
บทท่ี 10 การเขียนโปรแกรมเชิงวตั ถุ | 215 // สรา้ งการเชอื่ มตอ่ $conn = new mysqli($servername, $username, $password); // ตรวจสอบการเชอื่ มตอ่ if ($conn->connect_error) { } การพัฒนาเว็บไซต์ทางธุรกิจชนั้ สงู
216 | บทท่ี 10 การเขยี นโปรแกรมเชิงวัตถุ คาถามท้ายบท 1. ใหอ้ ธิบายความหมายของการเขยี นโปรแกรมเชิงวตั ถุ 2. ภายในคลาส คณุ ลกั ษณะ (Attributes) และพฤติกรรม (Methods) แตกตา่ งกันอย่างไร 3. คลาสและออบเจ็คแตกตา่ งกันอยา่ งไร 4. ใหอ้ ธบิ ายความหมายของคาสั่ง $udru = new University(\"เรารัก\"); 5. ให้ออกแบบคลาส Student โดยกาหนดคุณลักษณะและพฤติกรรมของคลาสข้นึ มาเอง 6. ใหอ้ ธบิ ายการสืบทอดคณุ สมบตั ขิ องคลาสมาพอสงั เขป 7. ในอธบิ ายแนวโนม้ ของการเขียนโปรแกรมเชงิ วตั ถุ การพฒั นาเว็บไซต์ทางธุรกิจชนั้ สูง
บรรณานกุ รม กติ ตศิ ักด์ิ สิงหส์ งู เนิน. (2555). การเขียนโปรแกรมภาษาคอมพิวเตอร์ด้วยภาษา PHP และภาษา MySQL. กรงุ เทพฯ: มหาวิทยาลัยราชภฏั วไลยอลงกรณ์ ในพระบรมราชปู ถัมภ์ . กติ ศิ ักด์ิ เจริญโภคานนท์. (2550). ค่มู ือเรียนเขียนเว็บอีคอมเมริ ์ชด้วย PHP 5 ใหมล่ ่าสุด. กรงุ เทพฯ: ซัคเซส มเี ดยี . ชาญชัย ศภุ อรรถกร. (2561). สรา้ งเว็บแอพพลิเคชัน PHP MySQL. กรงุ เทพฯ: ซิมพลิฟาย. บุญสืบ โพธิ์ศรี. (2549). การสร้างเว็บเพจ.กรงุ เทพฯ: ศนู ยส์ ง่ เสรมิ อาชวี ะ. ปยิ วัฒน์ ถงึ เพ็งพนั ธ์, เสฎฐวฒุ ิ หอมสมบตั ิ. (2551). ระบบพาณชิ ย์อิเล็กทรอนิกส์ OTOP 5 ดาว. อุดรธาน:ี สาขาวิชาเทคโนโลยีสารสนเทศ คณะวทิ ยาศาสตร์ มหาวิทยาลัยราชภัฏอดุ รธาน.ี ฤษาย์ ร่มสายหยดุ . (2556). พฒั นาเว็บไซตด์ ้วย HTML5 ฉบับมืออาชีพ.กรุงเทพฯ: ซีเอ็ดยเู คช่ัน. วิชา ศิรธิ รรมจกั ร์. (2551). Web programming ดว้ ย AJAX และ PHP. กรุงเทพฯ: เคทีพี คอมพ์ แอนด์ คอนซลั ท์. วิชยั พวั รุ่งโรจน.์ (2558). การเขียนโปรแกรมเชงิ วตั ถุ. เลย: มหาวิทยาลยั รชภัฏเลย. วทิ ยา สุคตบวร. (2548). เรยี นลดั การเขยี นโปรแกรมเชิงวัตถแุ บบ OOP. กรงุ เทพฯ: ซเี อด็ ยูเคชัน่ . สมพงษ์ อริสริยวงศ.์ (2554). เขยี นโปรแกรมบนฐานขอ้ มูล MySQL. กรงุ เทพฯ: ซีเอ็ดยูเคชั่น. สมศักดิ์ โชคชยั ชุตกิ ุล. (2552). insign PHP ฉบับสมบูรณ์. กรุงเทพฯ: โปรวิชน่ั . อนรรฆนงค์ คณุ มณ.ี (2549). Basic of PHP. นนทบรุ :ี ไอดซี ี อนิ โฟ ดิสทริบวิ เตอร์ เซน็ เตอร.์ อษั ฎาพร ทรัพยส์ มบรู ณ.์ (2554). การวิเคราะห์และออกแบบเชิงวัตถุ. กรงุ เทพฯ: เคทีพี คอมพ์ แอนด์ คอนซัลท.์ อษั ฏาพร นชุ ประยูร. (2543). การพฒั นาซอฟตแ์ วร์ : วิธีการเชงิ วตั ถุ. กรุงเทพฯ: วบิ ลู ยก์ จิ การพมิ พ.์ David Powers. (2013). PHP Object-Oriented Solutions. New York:Apress. Mikael Olsson. (2016). PHP 7 Quick Scripting Reference. New York:Apress. Obert W. Sebesta. (2005). Programming the world wide web. Boston: Addison- Wisliey The PHP Group. (2017). Documentation : The PHP Manual. Retrieved December 10, 2017. Web site: http://php.net/manual/en/.
Search
Read the Text Version
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 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
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
- 124
- 125
- 126
- 127
- 128
- 129
- 130
- 131
- 132
- 133
- 134
- 135
- 136
- 137
- 138
- 139
- 140
- 141
- 142
- 143
- 144
- 145
- 146
- 147
- 148
- 149
- 150
- 151
- 152
- 153
- 154
- 155
- 156
- 157
- 158
- 159
- 160
- 161
- 162
- 163
- 164
- 165
- 166
- 167
- 168
- 169
- 170
- 171
- 172
- 173
- 174
- 175
- 176
- 177
- 178
- 179
- 180
- 181
- 182
- 183
- 184
- 185
- 186
- 187
- 188
- 189
- 190
- 191
- 192
- 193
- 194
- 195
- 196
- 197
- 198
- 199
- 200
- 201
- 202
- 203
- 204
- 205
- 206
- 207
- 208
- 209
- 210
- 211
- 212
- 213
- 214
- 215
- 216
- 217
- 218
- 219
- 220
- 221
- 222
- 223
- 224
- 225
- 226
- 227
- 228
- 229
- 230
- 231
- 232
- 233
- 234