public, private, และ protected ใน PHP OOP

เวลาที่เราเขียนคลาสในภาษา PHP เราสามารถกำหนดให้ตัวแปรและฟังก์ชั่นภายในคลาสได้ (รู้สึกว่าเค้าจะเรียกกันว่า method) ว่าจะให้สามารถเรียกใช้ได้จากที่ไหนได้บ้าง  ซึ่งเราเรียกมันว่า Visibility ครับ  โดยเราสามารถกำหนดได้อยู่ 3 แบบคือ

  1. public สามารถเรียกได้ทุกที่  ทั้งภายในและภายนอกคลาส
  2. private สามารถเรียกได้เฉพาะในคลาส
  3. protected สามารถเรียกได้เฉพาะในคลาส และคลาสที่ขยายคลาสนี้

เราสามารถสรุปเรื่อง visibility ได้สั้นๆดัง 3 ข้อด้านบนครับ  ถ้าเข้าใจก็เรียกได้ว่าจบเนื้อหาตอนนี้  แต่ถ้ายังไม่เข้าใจ  ลองไปดูตัวอย่างยาวๆ กันครับ

ตัวอย่างนี้จะเป็นโค๊ดของคลาสสองตัว  โดยตัวที่หนึ่งจะมีการสร้างฟังก์ชั่นภายในเอาไว้สามตัว  เป็นทั้ง public, private, และ protected ส่วนคลาสที่สองจะมาขยาย (extends) คลาสแรก  เพื่อทดสอบการเรียกใช้ฟังก์ชั่นแบบ protected ครับ

Read More

$(document).ready กับ $(window).load จะใช้อะไรดี?

ใน jQuery มีวิธีสั่งให้สคริปท์ทำงานเมื่อหน้าเว็บโหลดเสร็จอยู่สองวิธี คือ

$(document).ready();

และ

$(window).load();

ซึ่งสองวิธีนี้มันมีจุดต่างกันเล็กน้อยครับ

$(document).ready();

สำหรับ $(document).ready(); นั้น จะเป็นการสั่งให้โค๊ดทำงานเมื่อเบราเซอร์โหลด HTML Document ทั้งเว็บเสร็จเรียบร้อย และ DOM อยู่ในสถานะพร้อมใช้งาน จึงจะสั่งให้ JavaScript ทำงานครับ (คือมันไม่รอให้อะไรอย่างอื่น เช่นไฟล์ภาพบนหน้าเว็บโหลดเสร็จ ก็จะสั่งให้สคริปท์ทำงานเลย)

วิธีนี้จะมีปัญหากับเบราเซอร์บางตัว ไม่สิ ตัวเดียวเลย ก็คือ Google Chrome ครับ อย่างล่าสุดที่ผมเจอนี่คือสคริปท์จะทำงานก่อนที่ CSS จะประมวลผลหมด

$(window).load();

เมื่อวิธีแรกมีปัญหา เราก็เปลี่ยนมาใช้วิธีนี้ครับ $(window).load(); จะเป็นการสั่งให้สคริปท์ทำงานเมื่อหน้าเว็บทั้งหน้าโหลดเสร็จเรียบร้อยครับ คือสคริปท์จะรอให้ทุกอย่างบนหน้าเว็บโหลดเสร็จเรียบร้อย ทั้งภาพ วัตถุ หรือเฟรมต่างๆ แล้วจึงค่อยให้สคริปท์ทำงานครับ

Read More

จัดหน้าเนื้อหา HTML ตอนที่ 2

เมื่อวานเขียนเรื่องการจัดหน้าเนื้อหา HTML ตอนแรกไป และมีการตอบรับอย่างล้นหลามมากๆ เรียกได้ว่าคอมเมนต์ถล่มทลาย (ที่ถล่มจริงๆแล้วคือสแปมครับ Akismet จัดการ discard ทิ้งไปเรียบร้อย จากคนนีั่ไม่มีเลย Orz)

แต่เอาเถอะ ไหนๆก็เขียนแล้ว ก็จะสานต่อให้เสร็จในช่วงที่ยังมีไฟอยู่

ในตอนที่สองนี้จะว่าด้วยเรื่องของการตกแต่งข้อความด้วยแท็กต่างๆในเบื้องต้นนะครับ และถ้ามีเวลา ผมจะต่อเรื่องการใช้ CSS มาตกแต่งเพิ่มเติมให้ด้วย (หรือไม่ก็ยกไปในตอนหน้าเลย เพราะพวกนี้น่าจะยาวครับ)

ก่อนอื่น ให้เปิดดูเนื้อหาที่มีการใส่แท็กต่างๆเพื่อจัดเนื้อหาเอาไว้แล้ว ได้ที่ example02.html ครับ

Read More

จัดหน้าเนื้อหา HTML ตอนที่ 1

ห่างหายจากการเขียนบล็อกไปยาวนานมาก (เกือบๆจะสองเดือนได้) อันเนื่องมาจากชีวิตที่ยุ่งๆวุ่นๆ และมีเรื่องให้ใช้หัวเยอะมากไปหน่อย จนไม่มีเวลามาเขียนบล็อกแห่งนี้เลย รวมทั้งหาเรื่องที่น่าสนใจมาเขียนลงบล็อกไม่ได้ด้วย (หรือผมหมดกิเลสไปเยอะก็ไม่ทราบเหมือนกัน)

เอาเถอะ วันนี้ผมจะเริ่มซีรี่ย์ของบทความบนบล็อก (ซึ่งได้ข่าวว่าซีรี่ย์เก่าที่เริ่มไว้ก็ยังไม่ได้ทำต่อ) ว่าด้วยการจัดหน้าและตกแต่งเนื้อหาบนหน้าเว็บด้วย HTML

หลายคนอาจจะคิดว่าการทำเรื่องพวกนี้อาจจะไม่จำเป็น เพราะปัจจุบันเราใช้ CMS สำเร็จรูป (เช่น WordPress) กันแทบทั้งนั้น การจัดหน้าและตกแต่งเนื้อหาก็ใช้ RTE ที่มากับ CMS เอา (หรืออย่าง Drupal ก็อาจจะใช้ markdown ได้) แล้วการจัดหน้าเองนั้นจำเป็นอย่างไร?

ผมคงตอบคำถามนี้ด้วยคำตอบสวยหรูที่อ้างอิงเหตุการณ์สมมติไม่ได้ ซึ่งผมจะตอบว่าเพราะ RTE มันจัดหน้าได้ไม่ได้ดั่งใจของผม ก็แค่นั้นแหละ (อ้อ แล้วผมยังใช้มันเวลาทำ static page เ้องด้วยนะ)

ก่อนจะเริ่มบทความชุดนี้ ผมขอบอกเอาไว้ก่อนว่าเนื้อหามันไม่ได้อ้างอิงจากตำรามหาเทพที่ไหนทั้งสิ้น ทั้งหมดผมถ่ายทอดมาจากที่ผมทำและเคยชิน ความเป็นระเบียบของโค๊ด ไม่มีบรรทัดฐานใดๆมากำหนด นอกจากผมบอกว่ามันเป็นระเบียบ โอเค? ถ้าทำใจยอมรับข้อนี้ได้ ก็เริ่มอ่านกันได้เลยครับ

Read More

CSS Gradient แห่งสี่โลก

เรื่องแอบน่าเบื่อเล็กๆอย่างหนึ่งเวลาทำเว็บก็คืออารมณ์ที่อยากจะใช้พื้นหลังแบบไล่สี (หรือ gradient) ซึ่งหลายคน (ผมก็เคยเป็น) คงเลี่ยงไปใช้โปรแกรมอย่าง Photoshop ในการทำพื้นหลังแบบไล่สี แล้วค่อยเอามาใส่ลงในหน้าเว็บ ซึ่งวิธีนี้ ผลลัพท์คือหน้าเว็บหนักขึ้นจากภาพที่เอามาทำพื้นหลัง แน่นอน

วิธีแก้ปัญหานี้ง่ายมากครับ หันไปใช้ CSS ซะ ซึ่งเบราเซอร์หลักทั้ง 4 ค่าย (Opera, IE, Firefox, Chrome) ต่างรองรับการไล่สีด้วย CSS กันทั้งสิ้น

แต่เรื่องน่าปวดตับมันอยู่ที่ทั้งสี่ค่าย ใช้ CSS ต่างกันหมดเลย…

Read More