Object Oriented PHP Step 6-11

Object Oriented PHP Step 6-11

บทความที่แล้ว ตอนแรกเริ่มเขียน OOPHP

STEP 6:

'$this' variable

ลองพิจารณาดู code ชุดนี้

$this->name = $new_name;

โดย $this variable ถูกสร้างขึ้นมาโดยอัตโนมัติในทุกๆ object โดยมีความหมายถึง Object  ที่กำลังเรียกใช้งานอยู่ (ตัวเอง) หรืออีกความหมายก็คือ $this เป็น variable ที่อ้างอิงถึง object ตัวเอง คุณสามารถใช้ $this เพื่อเรียก Property หรือเรียก method อื่นที่อยู่ในclass ที่กำลังใช้งานอยู่

function get_name() {  return $this->name; }

นี่อาจจะเป็นเรื่องที่สร้างความสับสนได้ สำหรับคนที่พึ่งเคยเจอครั้งแรก แต่นี้เป็นสิ่งที่เราจะพบอยู่ใน OO PHP (ใน PHP5)

เราแค่ศึกษาให้รู้ว่า $this คือ OO PHP keyword อันนึง และเมื่อเรียกใช้จะทำงานอย่างไรก็พอแล้ว

STEP 7:

เรียกใช้ PHP class ของคุณในหน้า PHP (index.php)

คุณไม่จำเป็นต้องสร้าง class ใส่ในหน้าเว็บที่คุณกำลังใช้งานอยู่ ถ้าทำ นั่นคือสิ่งแรก ที่จะลดทอนประโยชน์ของ Object Oriented PHP

อย่างตัวอย่างนี้จะเป็นตัวอย่างที่ดี ที่เราได้แยกไฟล์ PHP ออกจากกัน โดยไฟล์นึงมีแต่ PHP class  จากนั้นที่หน้าเว็บที่กำลังทำงานอยู่ เราก็สามารถเรียก function/method ที่อยู่ใน class ได้ด้วยการ include class นั้นๆเข้ามาในหน้าที่เรากำลังใช้งานอยู่ โดยใช้ function 'include' หรือ 'require'

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml">  <head>  <meta http-equiv="Content-Type" content="text/html;  charset=iso-8859-1" />  <title>OOP in PHP</title>  <?php include("class_lib.php"); ?>  </head>  <body>  </body> </html>

ตอนนี้เราจะยังไม่เจาะลึกอย่างครบถ้วน ในส่วนของ class ซึ่งเราจะพูดกันต่อไป

STEP 8:

การประกาศ / สร้าง object

อย่างที่เรารู้แล้วว่า Class คือต้นแบบของ php object  โดย class ไม่ได้เป็น object โดยตรง ดังนั้นคุณต้องทำบางอย่าง ก็คือ การประกาศ (instantiation)

เมื่อมีการประกาศ class แล้ว ก็คือการสร้าง  instance ของ class นั้นๆ  หรือนั่นคือการสร้าง object 

อีกนัยหนึ่ง instantiation ก็คือกระบวนการสร้าง instance  ของ object ใน memory  ซึ่งแน่นอนคือ memory ของ server

<?php include("class_lib.php"); ?> </head>  <body>  <?php  $stefan = new person();  ?>  </body> </html>

variable $stefan ก็คือตัวที่ถูกสร้างมาจาก person object  เราจะเรียก $stefan ว่า 'handle' เพราะว่าเราจะใช้ $stefan เพื่อควบคุม person object

ถ้าคุณรัน PHP code ในตอนนี้ คุณจะยังมองไม่เห็นอะไรที่แสดงออกมาบนหน้าจอ เป็นเพราะว่าเรายังไมได้สั่งให้ PHP ทำอะไร นอกจากแค่ให้สร้าง Object เท่านั้นเอง

STEP 9:

ว่าด้วยเรื่อง 'new'

การที่เราจะสร้าง object ขึ้นมาใหม่จาก class เราจะใช้คำว่า new

เมื่อเราสร้าง/ประกาศ class เราสามารถใส่เครื่องหมายวงเล็บหรือไม่ก็ได้ แล้วแต่เรา ซึ่งเดี๋ยวจะได้เห็นในตัวอย่างด้านล่าง เพื่อให้เห็นภาพได้ชัด ในโค้ดจะแสดงให้ดูถึงการสร้าง object หลายๆตัวขึ้นมาจาก class เดียวกัน

ในมุมมองของ PHP จะเห็นว่า object แต่ละตัว ต่างก็จะมี entity เป็นของตัวเอง ซึ่งไม่น่าจะเป็นเรื่องที่แปลกเกินไปใช่ไหมครับ

<?php include("class_lib.php"); ?>  </head>  <body>  <?php  $stefan = new person();  $jimmy = new person;  ?>  </body> </html>

ขั้นตอนการสร้าง object จะต้องมั่นใจว่า ไม่ใส่เครื่องหมาย ' ครอบชื่อ class ไว้ เช่น

$stefan = new 'person';

ถ้าทำแบบนี้ก็จะ error ทันที

Step 10:

ตั้งค่าให้ object property

ตอนนี้เราได้สร้าง object สองตัวที่แตกต่างกันจาก person class ขึ้นมาแล้ว เราก็จะสามารถตั้งค่าให้ property ของ object แต่ละตัวได้

มีเรื่องต้องจำอย่างหนึ่งก็คือ person object ที่เราสร้างขึ้นมา (ก็คือ $stefan และ $jimmy) ซึ่ง PHP ถือว่าเป็น object คนละตัว และมีค่าที่แตกต่างกันได้ ซึ่งเราจะ set ค่าโดยใช้ set_name ที่เราได้เตรียมเอาไว้ก่อนแล้ว

<?php include("class_lib.php"); ?>  </head>  <body>  <?php  $stefan = new person();  $jimmy = new person;  $stefan->set_name("Stefan Mischook");  $jimmy->set_name("Nick Waddles");  ?>  </body> </html>

Step 11:

การเข้าถึงข้อมูลใน object 

ตอนนี้เราจะใช้ getter method เพื่อเข้าถึงค่าที่อยู่ใน object ซึ่งมันก็คือค่าที่เราได้ใส่ไปก่อนแล้วใน step 10 นั่นเอง โดยใช้ setter method

เมื่อเราเข้าถึงข้อมูลใน method ,property และ class เราจะใช้เครื่องหมาย -> 

<?php include("class_lib.php"); ?>  </head>  <body>  <?php   $stefan = new person();   $jimmy = new person;   $stefan->set_name("Stefan Mischook");   $jimmy->set_name("Nick Waddles");  echo "Stefan's full name: " . $stefan->get_name();  echo "Nick's full name: " . $jimmy->get_name();   ?>  </body> </html> 

เครื่องหมายลูกศร -> ไม่เหมือนกับ เครื่องหมายที่แสดงค่าของ array => ดังนั้นอย่าใช้ปนกัน

ยินดีด้วยครับ  ถ้าอ่านมาจนถึงตอนนี้ แล้วเข้าใจได้อย่างไม่ตกหล่น ตอนนี้ก็มาถึงครึ่งทางแล้ว เพราะว่าคุณจะสามารถ

  • ออกแบบ PHP Class
  • สร้าง object หลายตัวจาก class เดียวกัน
  • ใส่ค่าให้กับ object
  • เรียกค่าจาก object

ซึ่งถือว่าไปได้สวยสำหรับการศึกษา OO PHP

แต่ถ้าตอนนี้รู้สึกยังแน่นในเนื้อหา แนะนำว่าให้ลองสร้าง class และเรียกใช้งานด้วยตัวเอง ลองดู แล้วจะได้ประสบการณ์อีกเยอะมาก

บทความทั้งหมดนี้ แปล และเรียบเรียงมาจาก  http://www.killerphp.com/tutorials/object-oriented-php/php-objects-page-2.php
This article translate and remade from http://www.killerphp.com/tutorials/object-oriented-php/php-objects-page-2.php

Create: Modify : 2010-07-12 09:09:24 Read : 12942 URL :