OOP áÅÐ PHP: µÑÇÍÂèÒ§¨Ò¡ÃÙ»ÊÕèàËÅÕèÂÁ
â´Â Í.·Í§¨ØÅ ¢Ñ¹¢ÒÇ
¤ÇÒÁÃÙé¾×é¹°Ò¹ HTML áÅÐ PHP
àº×éͧµé¹
OOP
à»ç¹¡ÒÃà¢Õ¹ â»Ãá¡ÃÁàªÔ§Çѵ¶Ø ·Õè¡ÓÅѧà»ç¹·Õè¹ÔÂÁÍÂèÒ§á¾ÃèËÅÒÂ
â»Ãá¡ÃÁ ASP 㹻Ѩ¨ØºÑ¹ä´éà»ÅÕè¹â©Á¨Ò¡ ÀÒÉÒ script à»ç¹ ASP.NET «Öè§à»ç¹â»Ãá¡ÃÁàªÔ§Çѵ¶ØÍÂèÒ§ÊÁºÙóì PHP
¡çàªè¹à´ÕÂǡѹ à¾ÃÒÐ OOP ªèÇÂãËéà¢Õ¹â»Ãá¡ÃÁä´éÍÂèҧʧèÒ§ÒÁ
µÃǨÊͺä´é§èÒ ÊÒÁÒö¹Óâ¤é´·Õèà¢Õ¹äÇé ¡ÅѺÁÒãªéãËÁèä´éÍÂèÒ§»ÃÐËÂÑ´
¨Ö§ÊÁ¤ÇÃÍÂèÒ§ÂÔè§·Õè¨Ðµéͧ·Ó¤ÇÒÁà¢éÒã¨àÃ×èͧ¢Í§ OOP
à¾×èÍà»ç¹¾×鹰ҹ㹡ÒÃà¢Õ¹â»Ãá¡ÃÁ¢Ñé¹ÊÙ§µèÍä»
㹺·¤ÇÒÁ¹Õé ¨Ð¾Ù´¶Ö§ËÅÑ¡¡Òâͧ OOP ·Õèãªéã¹ â»Ãá¡ÃÁ PHP
·Ø¡¤¹¤§à¤ÂàÃÕ¹àÃ×èͧ¡ÒÃËÒ¾×é¹·ÕèÊÕèàËÅÕèÂÁÁÒáÅéÇ ÊٵáÒÃËÒ¾×é¹·Õè ¤×Í
¤ÇÒÁÂÒÇ X ¤ÇÒÁÊÙ§ ¶éҨФӹdzËÒàÊé¹ÃͺÃÙ»¡çàÍÒ¤ÇÒÁÂÒǡѺ¤ÇÒÁÊÙ§¤Ù³´éÇ 2
áÅéÇàÍÒÁҺǡ¡Ñ¹ ·Õ¹ÕéÊÁÁµÔÇèÒ µéͧ¡ÒÃà¢Õ¹â»Ãá¡ÃÁº¹àÇçº
ãËé¤Ó¹Ç³¾×é¹·ÕèÊÕèàËÅÕèÂÁ â´Âãªé PHP ÇÔ¸Õ·Õè§èÒ·ÕèÊØ´ ¤×Í
¡ÒÃÊÃéÒ§¿ÍÃìÁà¾×èÍÃѺ¤èÒ¤ÇÒÁÂÒÇ áÅÐ ¤ÇÒÁÊÙ§ áÅéÇãªé PHP ãËé¤Ó¹Ç³ËÒ¾×é¹·Õè
«Ö觨Ðä´éâ¤é´ ´Ñ§¹Õé
ãªé HTML
ÊÃéÒ§¿ÍÃìÁà¾×èÍÃѺ¤èÒ¤ÇÒÁÂÒÇáÅФÇÒÁÊÙ§ ºÑ¹·Ö¡áÅеÑ駪×èÍä¿ÅìÇèÒ rectangle.html
<HTML>
<BODY>
<form action="rectangle.php"
method="POST">
¤ÇÒÁÂÒÇ: <input
type="text" name="width"><br>
¤ÇÒÁÊÙ§: <input
type="text" name="height"><br>
<input
type="submit" value=" Êè§¢éÍÁÙÅ
">
</form>
</BODY>
</HTML>
¨Ò¡¹Ñ鹡ç¨ÐÊÃéÒ§ä¿Åì PHP à¾×èÍÃѺ¢éÍÁÙŨҡ rectangle.html â´Âãªéª×èÍÇèÒ rectangle.php ´Ñ§¹Õé
<?php
$w=$_POST["width"]; //ÃѺ¤èÒ¨Ò¡ä¿Åì
html
$h=$_POST["height"];
$area
= $w * $h; // ¤Ó¹Ç¹¾×é¹·Õè
$perimeter
= ($w + $h) * 2; // ¤Ó¹Ç¹àÊé¹ÃͺÃÙ»
?>
<html>
<body>
<p>¤ÇÒÁÂÒÇ:
<?=$w?><br />
¤ÇÒÁÊÙ§:
<?=$h?></p>
<p>¾×é¹·Õè:
<?=$area?> µÒÃҧ˹èÇÂ<br
/>
àÊé¹ÃͺÃÙ»:
<?=$perimeter?></p>
</body>
</head>
¨Ò¡µÑÇÍÂèÒ§¢éÒ§µé¹á·¹·Õè¨Ðà¢Õ¹â»Ãá¡ÃÁãËé¤Ó¹Ç³·Ø¡¤ÃÑé§
ÍÒ¨¨Ðà¢Õ¹à»ç¹¿Ñ§ªÑè¹ ãËé¤Ó¹Ç³ËÒ¾×é¹·ÕèáÅÐàÊé¹ÃͺÃͺ áÅéÇàÃÕ¡ãªéàÁ×è͵éͧ¡ÒÃ
µÑÇÍÂèÒ§µèÍ仹Õé
àÃÒ¨ÐÊÃéÒ§¿Ñ§ªÑè¹à¾×èÍãËé¤Ó¹Ç³¾×é¹·ÕèáÅÐàÊé¹ÃͺÃÙ»ÊÕèàËÅÕèÂÁ
â´Â¨ÐÊÃéÒ§ä¿ÅìãËÁèãªéª×èÍÇèÒ rect.php ã¹ä¿Åì¹Õé àÃÒ¨Ðà¢Õ¹¿Ñ§ªÑ蹴ѧ¡ÅèÒÇ
´Ñ§¹Õé
<?php
function rect_area($width,$height)
return
$width * $height;
}
function rect_perim($width,$height)
{
return
($width + $height) * 2;
}
?>
ºÑ¹·Ö¡äÇé ã¹ä¿Åìª×èÍ rect.php
àÃÒ¨ÐàÃÕ¡ãªé¿Ñ§ªÑè¹¹Õé¨Ò¡ä¿Åì rectangle.php áµè¨Ðá¡éä¢ãËÁè
äÁèµéͧÁÕ¡Òäӹdz áµè¨ÐàÃÕ¡ãªé¿Ñ§ªÑ蹨ҡ rect.php ´Ñ§¹Õé
<?php
require('rect.php'); // âËÅ´ä¿Åì·ÕèÁտѧªÑè¹·ÕèàÃÒÊÃéÒ§áÅéÇ
$w=$_POST["width"];
$h=$_POST["height"];
$area = rect_area($w,$h); //àÃÕ¡ãªé¿Ñ§ªÑè¹
¤Ó¹Ç³¾×é¹·Õè
$perimeter = rect_perim($w,$h); // àÃÕ¡ãªé¿Ñ§ªÑ蹤ӹdzàÊé¹ÃͺÃÙ»
<html> <!—áÊ´§¼Å -->
<body>
<p>¤ÇÒÁÂÒÇ: <?=$w?><br
/>
¤ÇÒÁÊÙ§:
<?=$h?></p>
<p>¾×é¹·Õè: <?=$area?><br
/>
àÊé¹ÃͺÃÙ»:
<?=$perimeter?></p>
</body>
</head>
¡ÒÃà¢Õ¹â»Ãá¡ÃÁàªÔ§Çѵ¶Ø ËÃ×Í OOP ¤ÅéÒ¡Ѻ¿Ñ§ªÑè¹
à¾Õ§áµèàÃÒ¨ÐÊÃéÒ§Çѵ¶Øµé¹áºº ËÃ×ÍÀÒÉҢͧ PHP àÃÕ¡ÇèÒ CLASS
àªè¹ àÃÒÍÒ¨¨ÐÊÃéÒ§ Çѵ¶Ø·ÕèàÃÕ¡ÇèÒ Rectangle â´ÂãËéÁѹÁÕ¡ÒäӹdzËÒ¾×é¹·Õè áÅФӹdzËÒàÊé¹ÃͺÃÙ» ´Ñ§¹Ñé¹
¶éÒàÃÒàÃÕ¡ãªé Rectangle áÅÐÊ觤èÒ ¤ÇÒÁÂÒÇáÅФÇÒÁÊÙ§ãËé
àÃÒÊÒÁÒöàÃÕ¡¤èÒ¾×é¹·Õè áÅФèÒ¤ÇÒÁÂÒÇàÊé¹ÃͺÃÙ»ä´éàÅÂ
àÃҨлÃѺä¿Åì rect.php àÊÕÂãËÁè à¾×èÍãËéä¿Åì¹Õé ÊÃéÒ§ CLASS ·Õèª×èÍÇèÒ Rectangle ´Ñ§¹Õé
<?php
class
Rectangle
{
var
$width;
var
$height;
function
Rectangle($width, $height)
{
$this->width = $width;
$this->height = $height;
}
function
area()
{
return $this->width * $this->height;
}
function
perimeter()
{
return ($this->width + $this->height) * 2;
}
}
?>
àÃÒÁÒ´ÙÃÒÂÅÐàÍÕ´·ÕÅкÃ÷Ѵ
àÃÒàÃÔèÁ¨Ò¡¡Òú͡ÇèÒ µèÍ仹ÕéàÃÒ¨ÐÊÃéÒ§áÁèẺ ËÃ×Í CLASS ·Õèª×èÍÇèÒ
Rectangle
class
Rectangle
{
ª×èͧ͢ CLASS
àÃÒÁÑ¡¨Ð¢Ö鹵鹴éÇÂÍÑ¡ÉõÑÇãËè PHP äÁèºÑ§¤ÑºÇèҨеéͧà»ç¹µÑÇãËè
áµè·ÓãËéàËÁ×͹ æ ¡ÑºªÒǺéÒ¹¡ç¨Ð´Õ à¾ÃÒШÐà¢éÒ㨡ѹä´é§èÒ¢Öé¹
µèÍÁÒàÃÒ »ÃСÒȪ×è͵ÑÇá»Ã ¤×Í $width áÅÐ $height
var $width;
var
$height;
¹Õèà»ç¹¡ÒûÃСÒȵÑÇá»Ã·ÕèÍÂÙèã¹Çѵ¶Ø·ÕèàÃÒ¡ÓÅѧÊÃéÒ§
à·èҡѺà»ç¹¡ÒþٴÇèÒ à¨éÒÊÕèàËÅÕèÂÁ·Õè¨ÐÊÃéÒ§¢Ö鹨ҡáÁèẺ (CLASS) Íѹ¹Õé·Ø¡ÃÙ»
¨ÐÁÕ¤ÇÒÁÂÒÇ áÅФÇÒÁÊÙ§ ÅѡɳзÕè¡Ó˹´ãËéÇѵ¶ØÍÂèÒ§¹Õé ÈѾ·ì·Ò§ PHP àÃÕ¡ÇèÒà»ç¹ Properties ¤×ÍËÁÒ¶֧
¤Ø³ÊÁºÑµÔ¢Í§Çѵ¶ØËÃ×Í Object «Öè§ã¹·Õè¹Õé¡ç¤×ÍÃÙ»ÊÕèàËÅÕèÂÁ·Õèà¡Ô´¨Ò¡áÁèẺ·ÕèàÃÒ¡ÓÅѧÊÃéÒ§¹Õé·Ø¡ÃÙ»
·Õè¨ÐµéͧÁÕ ¹Ñ蹤×Í
ÃÙ»ÊÕèàËÅÕèÂÁ·Õèà¡Ô´¨Ò¡áÁèẺ ËÃ×Í CLASS ¹Õé·Ø¡ÃÙ»
¨ÐÁÕ¤ÇÒÁ¡ÇéÒ§áÅФÇÒÁÂÒÇ
µèͨҡ¹Ñ鹡çà»ç¹¡ÒÃÊÃéÒ§¿Ñ§ªÑè¹ ãËé¤Ó¹Ç³ ËÒ¾×é¹·Õè
function Rectangle($width, $height)
{
¢ÍãËéÊѧࡵÇèÒ ª×èͿѧªÑè¹ Rectangle à»ç¹ª×èÍà´ÕÂǡѺª×èͧ͢áÁèẺ ËÃ×Í CLASS
¾ÃéÍÁ·Ñé§¡Ó˹´µÑÇá»ÃàÍÒäÇé´éÇ 2 µÑÇ ¤×Í $width áÅÐ $height ¿Ñ§ªÑè¹·ÕèÁÕª×èÍà´ÕÂǡѺª×èÍ CLASS ¹Õé
àÃÒàÃÕ¡ÇèÒà»ç¹ µÑÇÊÃéÒ§ ËÃ×Í constructor
˹éÒ·ÕèËÅÑ¡¢Í§ constructor ¤×Í¡ÒáÓ˹´¤èÒµèÒ§ æ ãËéÇѵ¶Ø
áÅоÃéÍÁ·Õè¨ÐàÃÕ¡ãªé§Ò¹ 㹡óբͧàÃÒ àÃҨСÓ˹´¤èÒ ¤ÇÒÁÂÒÇáÅФÇÒÁÊÙ§ãËéá¡è constructor
¢Í§àÃÒ ´Ñ§¹Õé
$this->width = $width;
$this->height
= $height;
µÑÇá»Ã $this ã¹·Õè¹ÕéËÁÒ¶֧ Çѵ¶Ø·ÕèàÃÒ¡ÓÅѧÊÃéÒ§¢Öé¹ ´Ñ§¹Ñé¹ $this->width
= $width;
¨Ö§ËÁÒ¶֧ ¤ÇÒÁ¡ÇéÒ§¢Í§Çѵ¶Ø·ÕèàÃÒ¡ÓÅѧÊÃéÒ§¢Öé¹¹Õé
à·èҡѺ µÑÇá»Ã¤ÇÒÁ¡ÇéÒ§(·Õè¡Ó˹´äÇé¢éÒ§µé¹ «Öè§à»ç¹µÑÇá»Ã·ÕèÃѺ¤èÒ·ÕèÊè§à¢éÒÁÒ)
à¤Ã×èͧËÁÒ -> áÊ´§¤ÇÒÁà»ç¹à¨éҢͧ àªè¹ $this->width ËÁÒ¶֧ ¤ÇÒÁ¡ÇéÒ§¢Í§Çѵ¶Ø·ÕèàÃÒ¡ÓÅѧÊÃéÒ§¢Öé¹¹Õé
µèͨҡ¹Ñ鹡çà»ç¹¿Ñ§ªÑ蹡ÒÃËÒ¾×é¹·ÕèáÅФӹdzàÊé¹ÃͺÃÙ»
function
area()
{
return
$this->width * $this->height;
}
function
perimeter()
{
return
($this->width + $this->height) * 2;
}
´Ùà¼Ô¹ æ ¿Ñ§ªÑè¹¹Õé¤ÅéÒ¡Ѻ¿Ñ§¢Ñè¹ rect_area
áÅÐ rect_perim à¾Õ§áµèàÃÒäÁèä´éÊ觤èÒÍÐäÃä»ãËéà·èÒ¹Ñé¹
à¾ÃÒФèÒ¤ÇÒÁÂÒÇáÅФÇÒÁÊÙ§¢Í§Çѵ¶Ø·ÕèàÃÒ¡ÓÅѧÊÃéÒ§ÁÕÍÂÙèáÅéÇ àÃÕ¡ãªéä´é·Ñ¹·Õ
¿Ñ§ªÑ蹢ͧÇѵ¶Ø·ÕèÁÕÍÂÙè»ÃШӵÑÇã¹ÅѡɳйÕé àÃÒàÃÕ¡ÇèÒà»ç¹ methods ËÃ×ÍÇÔ¸Õ¡ÒÃ
«Öè§à»ç¹¡ÒäӹdzËÒ¤èÒµèÒ§ æ â´Âãªé¤Ø³ÊÁºÑµÔËÃ×Í properties ¢Í§Çѵ¶Ø·ÕèÁÕÍÂÙè
·Ñé§ËÁ´·Õè¡ÅèÒÇÁÒ à»ç¹¡ÒÃÇÒ§áÁèẺÇèÒ
¨ÐãªéÊÃéÒ§ÃÙ»ÊÕèàËÅÕèÂÁ·ÕèÁդسÊÁºÑµÔ (properties) 2 »ÃСÒä×Í
¤ÇÒÁ¡ÇéÒ§áÅФÇÒÁÊÙ§ áÅÐÊÕèàËÅÕèÂÁ·ÕèÊÃéÒ§¹Õé ¨ÐÁÕÇÔ¸Õ¡Òà (methods) ãËé¤Ó¹Ç³ËÒ¤èÒ¾×é¹·Õè áÅФèÒ¤ÇÒÁÂÒÇÃͺÃÙ»
áµè¹Ñè¹à»ç¹à¾Õ§á¤èáÁèẺ ÂѧäÁèãªèµÑǨÃÔ§ ¡ÒÃàÃÕ¡ãªéáÁèẺ
àÃÕ¡ä´é´Ñ§¹Õé
new
Rectangle(20,
5)
àÃÒãªé¤ÓÇèÒ new à¾×èͺ͡ PHP ÇèÒ
ãËéÊÃéÒ§Çѵ¶ØãËÁè(new object) ¨Ò¡áÁèẺ (class) ·Õèª×èÍÇèÒ Rectangle ¾ÃéÍÁ¡Ñ¹¹Ñé¹àÃÒ¡çÊ觤èÒ
¤ÇÒÁÂÒÇ áÅÐ ¤ÇÒÁÊÙ§ ä»ãËé´éÇÂ
à¾ÃÒÐà»ç¹¤Ø³ÊÁºÑµÔ·ÕèÊÕèàËÅÕèÂÁ·ÕèàÃÒ¡Ó˹´ÇèҨеéͧÁդسÊÁºÑµÔ¹Õé
¤èÒ·ÕèÊè§ä»¤×Í ¤ÇÒÁ¡ÇéÒ§ 20 áÅФÇÒÁÊÙ§ = 5
Çѵ¶Ø·ÕèàÃÒÊÃéÒ§¨Ò¡áÁèẺ Rectangle µéͧÁÕª×èÍ
àÃÒ¨ÐàÍÒÇѵ¶ØãËÁè·ÕèÊÃéÒ§ÁÒäÇéã¹µÑÇá»ÃÇѵ¶Ø¢ÍºàÃÒ «Ö觨Ðãªéª×èÍÇèÒ $myRectangle
´Ñ§¹Õé
$myRectangle = new Rectangle(20, 5);
¶éÒµéͧ¡ÒÃà»ÅÕ蹤èÒ¤ÇÒÁ¡ÇéÒ§
¡çÊÒÁÒö·Óä´éàÅ àªè¹ µéͧ¡ÒÃà»ÅÕ蹤èÒ¤ÇÒÁ¡ÇéÒ§à»ç¹ 50 ·Ó´Ñ§¹Õé
$myRectangle -> width = 50;
¶éÒµéͧ¡ÒÃËÒ¾×é¹·Õè ¡çÊÑè§ä´éâ´ÂµÃ§ à¾ÃÒÐÃÙ»ÊÕèàËÅÕèÂÁãËÁè¢Í§àÃÒ
¤×Í myRectangle ÁÕÇÔ¸Õ¡ÒÃËÒ¾×é¹·ÕèÍÂÙèáÅéÇ
à¾ÃÒÐÊÃéÒ§ÁÒ¨Ò¡áÁèẺ·ÕèàÃÒ¡Ó˹´äÇéµÍ¹áá
echo $myRectangle ->
area(); // ã¹·Õè¹Õé¨Ð¾ÔÁ¾ì 250 ¤×Í
¡ÇéÒ§ 50 áÅÐÊÙ§ = 5
àÃÒÊÒÁÒöÊÃéÒ§ÊÕèàËÅÕèÂÁáÅÐËÒ¾×é¹·Õèä´éÍÕ¡ËÅÒ ÃÙ» àªè¹
$rectangle1
= new Rectangle(10,20);
$rectangle2
= new Rectangle(30,40);
echo $rectangle1
->area(); // ä´é¤èÒ
'200'
echo $rectangle2->perimeter();
// ä´é¤èÒ '140'
à¾×èÍãËéàËç¹ÀÒ¾ÃÇÁ·Ñé§ËÁ´ ¨Ðà»ÅÕè¹ä¿Åìà´ÔÁ¤×Í rectangle.php ãËéÊÃéÒ§ÃÙ»ÊÕèàËÅÕèÂÁ¨Ò¡áÁèẺ áÅÐãËé¾ÔÁ¾ì¤èÒ¾×é¹·Õè
¾ÃéÍÁ·Ñé§àÊé¹ÃͺÃÙ» ´Ñ§¹Õé
<?php
require('rect.php');
$w = $_POST["width"];
$h = $_POST["height"];
$myRectangle = new Rectangle($w,$h);
<html>
<body>
<p>¤ÇÒÁÂÒÇ:
<?=$myRectangle->width?><br />
¤ÇÒÁÊÙ§: <?=$myRectangle->height?></p>
<p>¾×é¹·Õè: <?=$myRectangle->area()?><br
/>
àÊé¹ÃͺÃÙ»:
<?=$myRectangle->perimeter()?></p>
</body>
</html>
¨ÐàËç¹ÇèÒ OOP ªèÇÂãËéàÃÒÊÒÁÒöãªéáÁèẺ ËÃ×Í CLASS ÊÃéÒ§ Çѵ¶Ø (objects) ä´éÍÕ¡¨Ó¹Ç¹ÁÒ¡ â´Âãªéâ¤é´¢Í§à´ÔÁ
·ÓãËé´Ù§èÒÂäÁèÂØè§ÂÒ¡ áµè·Ñé§ËÁ´¹Õéà»ç¹à¾Õ§¾×é¹°Ò¹àº×éͧµé¹à·èÒ¹Ñé¹
áµèà¾Õ§¾Í·Õè¨Ðà»ç¹¾×鹰ҹ㹡ÒÃÈÖ¡ÉÒµèÍä»
¡ÅѺ˹éÒáá