SlideShare a Scribd company logo
1 of 24
1
Object-Oriented PHPObject-Oriented PHP
กนกวรรธน์ เซี่ยงเจ็นกนกวรรธน์ เซี่ยงเจ็น
สำำนักวิชำเทคโนโลยีสำำนักวิชำเทคโนโลยี
สำรสนเทศและกำรสื่อสำรสำรสนเทศและกำรสื่อสำร
มหำวิทยำลัยนเรศวร พะเยำมหำวิทยำลัยนเรศวร พะเยำ
2
เนื้อหำเนื้อหำ
หลักกำรของหลักกำรของ Object-OrientedObject-Oriented
กำรสร้ำงกำรสร้ำง Class, AttributeClass, Attribute และและ
OperationOperation ในใน PHPPHP
กำรเรียกใช้กำรเรียกใช้ ClassClass AttributeAttribute
กำรเรียกใช้กำรเรียกใช้ ClassClass OperationOperation
กำรถ่ำยทอดคุณสมบัติกำรถ่ำยทอดคุณสมบัติ InheritanceInheritance
กำรออกแบบกำรออกแบบ ClassClass
3
หลักกำรของหลักกำรของ Object-Object-
OrientedOriented
ภำษำในกำรเขียนโปรแกรมสมัยภำษำในกำรเขียนโปรแกรมสมัย
จะอยู่ในรูปแบบของวิธีกำรเชิงจะอยู่ในรูปแบบของวิธีกำรเชิง
วัตถุวัตถุ Object-OrientedObject-Oriented กำรพัฒนำเชิงกำรพัฒนำเชิง
วัตถุ เป็นกำรสร้ำงควำมสัมพันธ์วัตถุ เป็นกำรสร้ำงควำมสัมพันธ์
แยกกำรกระทำำ และสร้ำงแยกกำรกระทำำ และสร้ำง
คุณสมบัติเฉพำะของวัตถุ เพื่อคุณสมบัติเฉพำะของวัตถุ เพื่อ
ช่วยให้สะดวกในกำรพัฒนำรวมช่วยให้สะดวกในกำรพัฒนำรวม
กัน รวมไปถึงกำรนำำกลับมำใช้กัน รวมไปถึงกำรนำำกลับมำใช้
ใหม่ ประกอบด้วยใหม่ ประกอบด้วย
4
Class and ObjectClass and Object
 ClassClass คือแม่แบบของคือแม่แบบของ ObjectObject ที่ที่
ประกอบด้วยประกอบด้วย
 คุณสมบัติคุณสมบัติ (Attribute)(Attribute):: เช่นตัวแปรเช่นตัวแปร
ต่ำงๆ ที่ประกำศขึ้นใช้งำนต่ำงๆ ที่ประกำศขึ้นใช้งำน
 วิธีกำรดำำเนินกำรวิธีกำรดำำเนินกำร (Operation)(Operation):: เช่นเช่น
ฟังก์ชันกำรทำำงำนต่ำงๆ ที่กระทำำฟังก์ชันกำรทำำงำนต่ำงๆ ที่กระทำำ
กับ คุณสมบัติที่นิสิตกำำหนดขึ้นมำกับ คุณสมบัติที่นิสิตกำำหนดขึ้นมำ
5
InheritanceInheritance
InheritanceInheritance คือ คุณสมบัติในกำรคือ คุณสมบัติในกำร
ถ่ำยทอดลักษณะ และถ่ำยทอดลักษณะ และ MemberMember จำกจำก
ClassClass หนึ่งที่อยู่เหนือกว่ำหนึ่งที่อยู่เหนือกว่ำ (Super class)(Super class) ไปไป
ยังอีกยังอีก ClassClass หนึ่งที่อยู่ระดับล่ำงหนึ่งที่อยู่ระดับล่ำง (Sub(Sub
class)class) โดยโดย ClassClass ที่รับกำรถ่ำยทอด จะมีที่รับกำรถ่ำยทอด จะมี
ลักษณะเช่นเดียวกันลักษณะเช่นเดียวกัน ClassClass ต้นแบบทุกต้นแบบทุก
ประกำรประกำร
โดยที่เรำสำมำรถปรับปรุงโดยที่เรำสำมำรถปรับปรุง
เปลี่ยนแปลงลักษณะและเปลี่ยนแปลงลักษณะและ MemberMember จำกจำก
ClassClass ต้นแบบ ให้มีควำมสำมำรถใหม่ๆต้นแบบ ให้มีควำมสำมำรถใหม่ๆ
6

ClassClass ต้นแบบต้นแบบ เรียกว่ำเรียกว่ำ ""Base ClassBase Class""
หรือหรือ ""ParentParent ClassClass""

ClassClass ที่รับกำรถ่ำยทอดที่รับกำรถ่ำยทอด เรียกว่ำเรียกว่ำ ""DerivedDerived
ClassClass""
หรือหรือ ""ChildChild ClassClass""
Parent ClassParent Class
Child ClassChild Class Child ClassChild ClassChild ClassChild Class
7

ClassClass ต้นแบบต้นแบบ คือคือ PersonPerson

ClassClass ที่รับการถ่ายทอดที่รับการถ่ายทอด คือคือ StudentStudent,,
NurseNurse,, DoctorDoctor ซึ่งจะมีคุณลักษณะซึ่งจะมีคุณลักษณะ
เหมือนเหมือน PersonPerson
PersonPerson
NurseNurse DoctorDoctorStudentStudent
8
InheritanceInheritance
ข้อดีข้อดี
 สามารถนำาสามารถนำา codecode กลับมาใช้ใหม่ได้กลับมาใช้ใหม่ได้
โดยไม่ต้องเขียนใหม่โดยไม่ต้องเขียนใหม่
 สามารถแก้ไขที่สามารถแก้ไขที่ supersuper classclass ที่เดียวที่เดียว
โดยไม่ต้องแก้ไขทุกๆโดยไม่ต้องแก้ไขทุกๆ subsub classclass ที่ได้ที่ได้
รับการรับการ extendextend มามา
 ลดความซับซ้อนของโปรแกรมลดความซับซ้อนของโปรแกรม
ข้อเสียข้อเสีย
9
การสร้างการสร้าง Class, AttributeClass, Attribute และและ
OperationOperation ในใน PHPPHP
class classname {
var $attribute_name;
function func_name(){
} // end function
} // end class
class classname {
var $attribute_name;
function func_name(){
} // end function
} // end class
การประกาศเพื่อสร้าง clasการประกาศเพื่อสร้าง clas
สร้าง attribute ต้องมี varสร้าง attribute ต้องมี var
สร้าง
operation
สร้าง
operation
10
ตัวอย่างตัวอย่าง
class student {
var $student_id;
function show_student_id(){
} // end function
} // end class
class student {
var $student_id;
function show_student_id(){
} // end function
} // end class
การประกาศเพื่อสร้าง clasการประกาศเพื่อสร้าง clas
สร้าง attribute ต้องมี varสร้าง attribute ต้องมี var
สร้าง
operation
สร้าง
operation
11
ConstructorConstructor
 เป็นฟังก์ชันที่จะถูกเรียกใช้งานโดยเป็นฟังก์ชันที่จะถูกเรียกใช้งานโดย
อัตโนมัติอัตโนมัติ เมื่อมีการเมื่อมีการสร้างสร้าง ObjectObject ใหม่ใหม่
โดยที่โดยที่ ConstructorConstructor มีรูปแบบคือมีรูปแบบคือ
หรือหรืออาจกำาหนดชื่อของฟังก์ชัน ให้อาจกำาหนดชื่อของฟังก์ชัน ให้
ตรงกับชื่อตรงกับชื่อ ClassClass ก็ได้ก็ได้ เรานิยมใช้เรานิยมใช้
function __construct(){
}
function __construct(){
}
รูปแบบ
12
Example: __construct()Example: __construct()
class student {
var $student_id;
function __construct($param){
echo "Constructor with parameter $param";
} // end function
} // end class
class student {
var $student_id;
function __construct($param){
echo "Constructor with parameter $param";
} // end function
} // end class
การประกาศเพื่อสร้าง clasการประกาศเพื่อสร้าง clas
สร้าง attributeสร้าง attribute
สร้าง
constructor
สร้าง
constructor
13
DestructorDestructor
 เป็นฟังก์ชันที่จะถูกเรียกใช้งานโดยเป็นฟังก์ชันที่จะถูกเรียกใช้งานโดย
อัตโนมัติอัตโนมัติ ก่อนการทำาลายก่อนการทำาลาย ClassClass ที่ใช้ที่ใช้
งานอยู่ โดยที่งานอยู่ โดยที่ DestructorDestructor มีรูปแบบคือมีรูปแบบคือ
จะถูกเรียกใช้เมื่อมีการจะถูกเรียกใช้เมื่อมีการ unsetunset ตัวแปรตัวแปร
function __destruct(){
}
function __destruct(){
}
รูปแบบ
14
Example: __destruct()Example: __destruct()
class student {
var $student_id;
function __destruct($param){
echo "You are Destroy Class";
} // end function
} // end class
class student {
var $student_id;
function __destruct($param){
echo "You are Destroy Class";
} // end function
} // end class
การประกาศเพื่อสร้าง clasการประกาศเพื่อสร้าง clas
สร้าง attributeสร้าง attribute
สร้าง
destructor
สร้าง
destructor
15
Example: construct & destructExample: construct & destruct
classclass studentstudent{{
functionfunction __construct__construct(($param$param){){
echoecho "Construct Class for"Construct Class for $param$param <br/>";<br/>";
}} // end constructor// end constructor
functionfunction __destruct__destruct(){(){
echoecho "Destroy Class!!";"Destroy Class!!";
}} // end destructor// end destructor
}} // end class// end class
$stu$stu == newnew studentstudent('uthai');('uthai'); // create instance// create instance
unsetunset(($stu$stu);); // destroy class// destroy class
Construct Class for uthai
Destroy Class!!
Construct Class for uthai
Destroy Class!!
16
การเรียกใช้การเรียกใช้ ClassClass AttributeAttribute
ในการใช้งานในการใช้งาน ClassClass เมื่อเราเมื่อเรา
ต้องการที่จะอ้างอิงต้องการที่จะอ้างอิง AttributeAttribute ที่อยู่ที่อยู่
ภายในภายใน ClassClass สามารถทำาได้ โดยสามารถทำาได้ โดย
ใช้ใช้ PointerPointer พิเศษที่ชื่อว่าพิเศษที่ชื่อว่า $this$this ชี้ไปที่ชี้ไปที่
ชื่อของชื่อของ AttributeAttribute ที่เราต้องการที่เราต้องการ
var $attribute_name;
. . .
$this -> attribute_name;
var $attribute_name;
. . .
$this -> attribute_name;
รูปแบบ
17
การเรียกใช้การเรียกใช้ ClassClass OperationOperation
การเรียกใช้งานการเรียกใช้งาน Class OperationClass Operation จะจะ
ทำาได้ก็ต่อมีการเรียกใช้งานผ่านทำาได้ก็ต่อมีการเรียกใช้งานผ่าน
instanceinstance ที่เราสร้างขึ้นมาจากที่เราสร้างขึ้นมาจาก ClassClass
18
Example: Class Attribute &Example: Class Attribute &
OperationOperation
classclass studentstudent{{
varvar $student_id$student_id;;
functionfunction __construct__construct(($param$param){){
$this ->$this -> student_idstudent_id == $param$param;;
}} // end constructor// end constructor
functionfunction show_idshow_id(){(){
echoecho "student id = " ."student id = " . $this$this ->-> student_idstudent_id;;
}} // end function// end function
}} // end class// end class
$stu$stu == newnew studentstudent((4633000146330001);); // create instance// create instance
$stu$stu ->-> show_idshow_id();(); // show student id// show student id
student id = 46330001student id = 46330001
Class AttributeClass Attribute
Class OperationClass Operation
19
การถ่ายทอดคุณสมบัติการถ่ายทอดคุณสมบัติ
InheritanceInheritance
 เป็นการถ่ายทอดเป็นการถ่ายทอด AttributeAttribute และและ OperationOperation
จากจาก ClassClass แม่แบบ โดยเราต้องใช้คำาแม่แบบ โดยเราต้องใช้คำา
สั่งสั่ง extendsextends ตามหลังชื่อตามหลังชื่อ ClassClass แล้วปิดแล้วปิด
ท้ายด้วยชื่อท้ายด้วยชื่อ ClassClass ต้นแบบต้นแบบ
สร้างสร้าง ClassClass studentstudent โดยถ่ายทอดโดยถ่ายทอด AttributeAttribute
และและ OperationOperation จากจาก ClassClass personperson
class student extends person {
}
class student extends person {
}
รูปแบบ
20
Example: InheritanceExample: Inheritance
classclass personperson{{
varvar $$firstnamefirstname;;
varvar $$lastnamelastname;;
functionfunction __construct__construct(($$fnamefname, $, $lnamelname)){{
$$thisthis -->> firstnamefirstname == $$fnamefname;; //// assign value to firstnameassign value to firstname
$$thisthis -->> lastnamelastname == $$lnamelname;; //// assign value to lastnameassign value to lastname
}} //// end functionend function
functionfunction show_detailshow_detail()(){{
echoecho ""Hello,Hello, "" ;;
echoecho $$thisthis -->> firstnamefirstname . " " .. " " . $$thisthis -->> lastnamelastname;;
}} //// end functionend function
}} //// end classend class
$$detaildetail == newnew personperson("("UthaiUthai", "", "ShiangJanShiangJan");");
$$detaildetail ->-> show_detailshow_detail();();
Hello, Uthai ShiangJanHello, Uthai ShiangJan
21
Example: InheritanceExample: Inheritance
classclass personperson{{
varvar $$firstnamefirstname;;
varvar $$lastnamelastname;;
functionfunction __construct__construct(($$fnamefname, $, $lnamelname)){{
$$thisthis -->> firstnamefirstname == $$fnamefname;; //// assign value to firstnameassign value to firstname
$$thisthis -->> lastnamelastname == $$lnamelname;; //// assign value to lastnameassign value to lastname
}} //// end functionend function
functionfunction show_detailshow_detail()(){{
echoecho ""Hello,Hello, "" ;;
echoecho $$thisthis -->> firstnamefirstname . " " .. " " . $$thisthis -->> lastnamelastname;;
}} //// end functionend function
}} //// end classend class
classclass studentstudent extendsextends personperson{{ //// inheritanceinheritance
}} //// end classend class
$$detaildetail == newnew studentstudent("("UthaiUthai", "", "ShiangJanShiangJan");");
$$detaildetail ->-> show_detailshow_detail();();
Hello, Uthai ShiangJanHello, Uthai ShiangJan
Person
Student
22
OverridingOverriding
ในการในการ InheritanceInheritance ClassClass มาเพื่อมาเพื่อ
ใช้งานบางครั้งเราจำาเป็นต้องมีใช้งานบางครั้งเราจำาเป็นต้องมี
การเปลี่ยนแปลงการเปลี่ยนแปลง ((ModifyModify)) functionfunction
การทำาให้ให้สอดคล้องกับการทำาให้ให้สอดคล้องกับ ClassClass
ใหม่ที่เราสร้างขึ้นใหม่ที่เราสร้างขึ้น
การทำาการทำา OverridingOverriding คือคือการสร้างการสร้าง
FunctionFunction ในใน SubSub ClassClass ที่มีชื่อเหมือนที่มีชื่อเหมือน
FunctionFunction ของของ ClassClass แม่แบบแม่แบบ เพื่อให้เพื่อให้
23
การออกแบบการออกแบบ ClassClass
 โดยทั่วไปเราจะนำาโดยทั่วไปเราจะนำา ClassClass แทนแทน
ObjectObject ที่มีอยู่ในชีวิตจริง เช่น หากที่มีอยู่ในชีวิตจริง เช่น หาก
เราต้องการออกแบบเราต้องการออกแบบ E-CommerceE-Commerce
เราก็ควรแบ่งส่วนประกอบของเราก็ควรแบ่งส่วนประกอบของ E-E-
CommerceCommerce เป็นส่วนๆ เช่นเป็นส่วนๆ เช่น ShoppingShopping
cartcart ก็แยกออกมาสร้างเป็นก็แยกออกมาสร้างเป็น ClassClass
เพื่อให้สามารถนำาเอาเพื่อให้สามารถนำาเอา ShoppingShopping cartcart
ไปใช้งานได้กับเว็บไปใช้งานได้กับเว็บ E-CommerceE-Commerce
24
Example: OverridingExample: Overriding
classclass personperson{{
functionfunction show_detailshow_detail()(){{
echoecho ""Hello WorldHello World "" ;;
}} //// end functionend function
}} //// end classend class
classclass studentstudent extendsextends personperson{{
}} //// end classend class
$$detaildetail == newnew studentstudent();();
$$detaildetail ->-> show_detailshow_detail();();
classclass personperson{{
functionfunction show_detailshow_detail()(){{
echoecho ""Hello WorldHello World "" ;;
}} //// end functionend function
}} //// end classend class
classclass studentstudent extendsextends personperson{{
functionfunction show_detailshow_detail()(){{
echoecho ““Hi WorldHi World "" ;;
}} //// end functionend function
}} //// end classend class
$$detaildetail == newnew studentstudent();();
$$detaildetail ->-> show_detailshow_detail();();
Hello WorldHello World
Hi WorldHi World

More Related Content

Viewers also liked

Программка к матчу БК "Нижний Новгород" - "Красные Крылья"
Программка к матчу БК "Нижний Новгород" - "Красные Крылья"Программка к матчу БК "Нижний Новгород" - "Красные Крылья"
Программка к матчу БК "Нижний Новгород" - "Красные Крылья"Andrei Garstea
 
Программка к матчу БК "Нижний Новгород" - "Гравлен" (Франция)
Программка к матчу БК "Нижний Новгород" - "Гравлен" (Франция)Программка к матчу БК "Нижний Новгород" - "Гравлен" (Франция)
Программка к матчу БК "Нижний Новгород" - "Гравлен" (Франция)Andrei Garstea
 
корпоративные турниры
корпоративные турнирыкорпоративные турниры
корпоративные турнирыAndrei Garstea
 
Social Media infographic by Tawasol
Social Media infographic by TawasolSocial Media infographic by Tawasol
Social Media infographic by TawasolVictoria Zagorsky
 
Программка к матчу БК "Нижний Новгород" - "Енисей"
Программка к матчу БК "Нижний Новгород" - "Енисей"Программка к матчу БК "Нижний Новгород" - "Енисей"
Программка к матчу БК "Нижний Новгород" - "Енисей"Andrei Garstea
 
КПФ ЦСКА Спонсорская презентация
КПФ ЦСКА Спонсорская презентацияКПФ ЦСКА Спонсорская презентация
КПФ ЦСКА Спонсорская презентацияAndrei Garstea
 
Стадион Сокол. Управление.
Стадион Сокол. Управление. Стадион Сокол. Управление.
Стадион Сокол. Управление. Andrei Garstea
 
Quantitative analysis
Quantitative analysisQuantitative analysis
Quantitative analysisRajesh Mishra
 

Viewers also liked (11)

Программка к матчу БК "Нижний Новгород" - "Красные Крылья"
Программка к матчу БК "Нижний Новгород" - "Красные Крылья"Программка к матчу БК "Нижний Новгород" - "Красные Крылья"
Программка к матчу БК "Нижний Новгород" - "Красные Крылья"
 
Программка к матчу БК "Нижний Новгород" - "Гравлен" (Франция)
Программка к матчу БК "Нижний Новгород" - "Гравлен" (Франция)Программка к матчу БК "Нижний Новгород" - "Гравлен" (Франция)
Программка к матчу БК "Нижний Новгород" - "Гравлен" (Франция)
 
корпоративные турниры
корпоративные турнирыкорпоративные турниры
корпоративные турниры
 
Social Media infographic by Tawasol
Social Media infographic by TawasolSocial Media infographic by Tawasol
Social Media infographic by Tawasol
 
Программка к матчу БК "Нижний Новгород" - "Енисей"
Программка к матчу БК "Нижний Новгород" - "Енисей"Программка к матчу БК "Нижний Новгород" - "Енисей"
Программка к матчу БК "Нижний Новгород" - "Енисей"
 
Obrigado Futebol
Obrigado FutebolObrigado Futebol
Obrigado Futebol
 
КПФ ЦСКА Спонсорская презентация
КПФ ЦСКА Спонсорская презентацияКПФ ЦСКА Спонсорская презентация
КПФ ЦСКА Спонсорская презентация
 
Стадион Сокол. Управление.
Стадион Сокол. Управление. Стадион Сокол. Управление.
Стадион Сокол. Управление.
 
Quantitative analysis
Quantitative analysisQuantitative analysis
Quantitative analysis
 
Pavat
PavatPavat
Pavat
 
Pipit
PipitPipit
Pipit
 

Similar to Lec12 oop in_php

คลาสและโปรแกรม
คลาสและโปรแกรมคลาสและโปรแกรม
คลาสและโปรแกรมN'Name Phuthiphong
 
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้นคลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้นFinian Nian
 
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้นคลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้นFinian Nian
 
พื้นฐานภาษาจาวา
พื้นฐานภาษาจาวาพื้นฐานภาษาจาวา
พื้นฐานภาษาจาวาT'tle Tanwarat
 
Java Programming [4/12] : Object Oriented Concept
Java Programming [4/12] : Object Oriented ConceptJava Programming [4/12] : Object Oriented Concept
Java Programming [4/12] : Object Oriented ConceptIMC Institute
 
บทที่ 5 คลาส
บทที่ 5 คลาสบทที่ 5 คลาส
บทที่ 5 คลาสTheeravaj Tum
 
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้นคลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้นTua Tor
 
(Big One) C Language - 07 object linkedlist
(Big One) C Language - 07 object linkedlist(Big One) C Language - 07 object linkedlist
(Big One) C Language - 07 object linkedlistKittinan Noimanee
 

Similar to Lec12 oop in_php (20)

คลาสและโปรแกรม
คลาสและโปรแกรมคลาสและโปรแกรม
คลาสและโปรแกรม
 
Java 7&12 6 2
Java 7&12 6 2Java 7&12 6 2
Java 7&12 6 2
 
Computer Programming 4
Computer Programming 4Computer Programming 4
Computer Programming 4
 
8.Inheritance
8.Inheritance8.Inheritance
8.Inheritance
 
Java intro
Java introJava intro
Java intro
 
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้นคลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
 
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้นคลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
 
พื้นฐานภาษาจาวา
พื้นฐานภาษาจาวาพื้นฐานภาษาจาวา
พื้นฐานภาษาจาวา
 
Inheritance and Method Overriding
Inheritance and Method OverridingInheritance and Method Overriding
Inheritance and Method Overriding
 
Java Programming [4/12] : Object Oriented Concept
Java Programming [4/12] : Object Oriented ConceptJava Programming [4/12] : Object Oriented Concept
Java Programming [4/12] : Object Oriented Concept
 
Java
JavaJava
Java
 
Class1
Class1Class1
Class1
 
Chapter1 uml3
Chapter1 uml3Chapter1 uml3
Chapter1 uml3
 
Chapter1 uml3
Chapter1 uml3Chapter1 uml3
Chapter1 uml3
 
5.Methods cs
5.Methods cs5.Methods cs
5.Methods cs
 
บทที่ 5 คลาส
บทที่ 5 คลาสบทที่ 5 คลาส
บทที่ 5 คลาส
 
3.6 ฟังก์ชัน
3.6 ฟังก์ชัน3.6 ฟังก์ชัน
3.6 ฟังก์ชัน
 
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้นคลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
 
งานทำBlog บทที่ 10
งานทำBlog บทที่ 10งานทำBlog บทที่ 10
งานทำBlog บทที่ 10
 
(Big One) C Language - 07 object linkedlist
(Big One) C Language - 07 object linkedlist(Big One) C Language - 07 object linkedlist
(Big One) C Language - 07 object linkedlist
 

Lec12 oop in_php

  • 1. 1 Object-Oriented PHPObject-Oriented PHP กนกวรรธน์ เซี่ยงเจ็นกนกวรรธน์ เซี่ยงเจ็น สำำนักวิชำเทคโนโลยีสำำนักวิชำเทคโนโลยี สำรสนเทศและกำรสื่อสำรสำรสนเทศและกำรสื่อสำร มหำวิทยำลัยนเรศวร พะเยำมหำวิทยำลัยนเรศวร พะเยำ
  • 2. 2 เนื้อหำเนื้อหำ หลักกำรของหลักกำรของ Object-OrientedObject-Oriented กำรสร้ำงกำรสร้ำง Class, AttributeClass, Attribute และและ OperationOperation ในใน PHPPHP กำรเรียกใช้กำรเรียกใช้ ClassClass AttributeAttribute กำรเรียกใช้กำรเรียกใช้ ClassClass OperationOperation กำรถ่ำยทอดคุณสมบัติกำรถ่ำยทอดคุณสมบัติ InheritanceInheritance กำรออกแบบกำรออกแบบ ClassClass
  • 3. 3 หลักกำรของหลักกำรของ Object-Object- OrientedOriented ภำษำในกำรเขียนโปรแกรมสมัยภำษำในกำรเขียนโปรแกรมสมัย จะอยู่ในรูปแบบของวิธีกำรเชิงจะอยู่ในรูปแบบของวิธีกำรเชิง วัตถุวัตถุ Object-OrientedObject-Oriented กำรพัฒนำเชิงกำรพัฒนำเชิง วัตถุ เป็นกำรสร้ำงควำมสัมพันธ์วัตถุ เป็นกำรสร้ำงควำมสัมพันธ์ แยกกำรกระทำำ และสร้ำงแยกกำรกระทำำ และสร้ำง คุณสมบัติเฉพำะของวัตถุ เพื่อคุณสมบัติเฉพำะของวัตถุ เพื่อ ช่วยให้สะดวกในกำรพัฒนำรวมช่วยให้สะดวกในกำรพัฒนำรวม กัน รวมไปถึงกำรนำำกลับมำใช้กัน รวมไปถึงกำรนำำกลับมำใช้ ใหม่ ประกอบด้วยใหม่ ประกอบด้วย
  • 4. 4 Class and ObjectClass and Object  ClassClass คือแม่แบบของคือแม่แบบของ ObjectObject ที่ที่ ประกอบด้วยประกอบด้วย  คุณสมบัติคุณสมบัติ (Attribute)(Attribute):: เช่นตัวแปรเช่นตัวแปร ต่ำงๆ ที่ประกำศขึ้นใช้งำนต่ำงๆ ที่ประกำศขึ้นใช้งำน  วิธีกำรดำำเนินกำรวิธีกำรดำำเนินกำร (Operation)(Operation):: เช่นเช่น ฟังก์ชันกำรทำำงำนต่ำงๆ ที่กระทำำฟังก์ชันกำรทำำงำนต่ำงๆ ที่กระทำำ กับ คุณสมบัติที่นิสิตกำำหนดขึ้นมำกับ คุณสมบัติที่นิสิตกำำหนดขึ้นมำ
  • 5. 5 InheritanceInheritance InheritanceInheritance คือ คุณสมบัติในกำรคือ คุณสมบัติในกำร ถ่ำยทอดลักษณะ และถ่ำยทอดลักษณะ และ MemberMember จำกจำก ClassClass หนึ่งที่อยู่เหนือกว่ำหนึ่งที่อยู่เหนือกว่ำ (Super class)(Super class) ไปไป ยังอีกยังอีก ClassClass หนึ่งที่อยู่ระดับล่ำงหนึ่งที่อยู่ระดับล่ำง (Sub(Sub class)class) โดยโดย ClassClass ที่รับกำรถ่ำยทอด จะมีที่รับกำรถ่ำยทอด จะมี ลักษณะเช่นเดียวกันลักษณะเช่นเดียวกัน ClassClass ต้นแบบทุกต้นแบบทุก ประกำรประกำร โดยที่เรำสำมำรถปรับปรุงโดยที่เรำสำมำรถปรับปรุง เปลี่ยนแปลงลักษณะและเปลี่ยนแปลงลักษณะและ MemberMember จำกจำก ClassClass ต้นแบบ ให้มีควำมสำมำรถใหม่ๆต้นแบบ ให้มีควำมสำมำรถใหม่ๆ
  • 6. 6  ClassClass ต้นแบบต้นแบบ เรียกว่ำเรียกว่ำ ""Base ClassBase Class"" หรือหรือ ""ParentParent ClassClass""  ClassClass ที่รับกำรถ่ำยทอดที่รับกำรถ่ำยทอด เรียกว่ำเรียกว่ำ ""DerivedDerived ClassClass"" หรือหรือ ""ChildChild ClassClass"" Parent ClassParent Class Child ClassChild Class Child ClassChild ClassChild ClassChild Class
  • 7. 7  ClassClass ต้นแบบต้นแบบ คือคือ PersonPerson  ClassClass ที่รับการถ่ายทอดที่รับการถ่ายทอด คือคือ StudentStudent,, NurseNurse,, DoctorDoctor ซึ่งจะมีคุณลักษณะซึ่งจะมีคุณลักษณะ เหมือนเหมือน PersonPerson PersonPerson NurseNurse DoctorDoctorStudentStudent
  • 8. 8 InheritanceInheritance ข้อดีข้อดี  สามารถนำาสามารถนำา codecode กลับมาใช้ใหม่ได้กลับมาใช้ใหม่ได้ โดยไม่ต้องเขียนใหม่โดยไม่ต้องเขียนใหม่  สามารถแก้ไขที่สามารถแก้ไขที่ supersuper classclass ที่เดียวที่เดียว โดยไม่ต้องแก้ไขทุกๆโดยไม่ต้องแก้ไขทุกๆ subsub classclass ที่ได้ที่ได้ รับการรับการ extendextend มามา  ลดความซับซ้อนของโปรแกรมลดความซับซ้อนของโปรแกรม ข้อเสียข้อเสีย
  • 9. 9 การสร้างการสร้าง Class, AttributeClass, Attribute และและ OperationOperation ในใน PHPPHP class classname { var $attribute_name; function func_name(){ } // end function } // end class class classname { var $attribute_name; function func_name(){ } // end function } // end class การประกาศเพื่อสร้าง clasการประกาศเพื่อสร้าง clas สร้าง attribute ต้องมี varสร้าง attribute ต้องมี var สร้าง operation สร้าง operation
  • 10. 10 ตัวอย่างตัวอย่าง class student { var $student_id; function show_student_id(){ } // end function } // end class class student { var $student_id; function show_student_id(){ } // end function } // end class การประกาศเพื่อสร้าง clasการประกาศเพื่อสร้าง clas สร้าง attribute ต้องมี varสร้าง attribute ต้องมี var สร้าง operation สร้าง operation
  • 11. 11 ConstructorConstructor  เป็นฟังก์ชันที่จะถูกเรียกใช้งานโดยเป็นฟังก์ชันที่จะถูกเรียกใช้งานโดย อัตโนมัติอัตโนมัติ เมื่อมีการเมื่อมีการสร้างสร้าง ObjectObject ใหม่ใหม่ โดยที่โดยที่ ConstructorConstructor มีรูปแบบคือมีรูปแบบคือ หรือหรืออาจกำาหนดชื่อของฟังก์ชัน ให้อาจกำาหนดชื่อของฟังก์ชัน ให้ ตรงกับชื่อตรงกับชื่อ ClassClass ก็ได้ก็ได้ เรานิยมใช้เรานิยมใช้ function __construct(){ } function __construct(){ } รูปแบบ
  • 12. 12 Example: __construct()Example: __construct() class student { var $student_id; function __construct($param){ echo "Constructor with parameter $param"; } // end function } // end class class student { var $student_id; function __construct($param){ echo "Constructor with parameter $param"; } // end function } // end class การประกาศเพื่อสร้าง clasการประกาศเพื่อสร้าง clas สร้าง attributeสร้าง attribute สร้าง constructor สร้าง constructor
  • 13. 13 DestructorDestructor  เป็นฟังก์ชันที่จะถูกเรียกใช้งานโดยเป็นฟังก์ชันที่จะถูกเรียกใช้งานโดย อัตโนมัติอัตโนมัติ ก่อนการทำาลายก่อนการทำาลาย ClassClass ที่ใช้ที่ใช้ งานอยู่ โดยที่งานอยู่ โดยที่ DestructorDestructor มีรูปแบบคือมีรูปแบบคือ จะถูกเรียกใช้เมื่อมีการจะถูกเรียกใช้เมื่อมีการ unsetunset ตัวแปรตัวแปร function __destruct(){ } function __destruct(){ } รูปแบบ
  • 14. 14 Example: __destruct()Example: __destruct() class student { var $student_id; function __destruct($param){ echo "You are Destroy Class"; } // end function } // end class class student { var $student_id; function __destruct($param){ echo "You are Destroy Class"; } // end function } // end class การประกาศเพื่อสร้าง clasการประกาศเพื่อสร้าง clas สร้าง attributeสร้าง attribute สร้าง destructor สร้าง destructor
  • 15. 15 Example: construct & destructExample: construct & destruct classclass studentstudent{{ functionfunction __construct__construct(($param$param){){ echoecho "Construct Class for"Construct Class for $param$param <br/>";<br/>"; }} // end constructor// end constructor functionfunction __destruct__destruct(){(){ echoecho "Destroy Class!!";"Destroy Class!!"; }} // end destructor// end destructor }} // end class// end class $stu$stu == newnew studentstudent('uthai');('uthai'); // create instance// create instance unsetunset(($stu$stu);); // destroy class// destroy class Construct Class for uthai Destroy Class!! Construct Class for uthai Destroy Class!!
  • 16. 16 การเรียกใช้การเรียกใช้ ClassClass AttributeAttribute ในการใช้งานในการใช้งาน ClassClass เมื่อเราเมื่อเรา ต้องการที่จะอ้างอิงต้องการที่จะอ้างอิง AttributeAttribute ที่อยู่ที่อยู่ ภายในภายใน ClassClass สามารถทำาได้ โดยสามารถทำาได้ โดย ใช้ใช้ PointerPointer พิเศษที่ชื่อว่าพิเศษที่ชื่อว่า $this$this ชี้ไปที่ชี้ไปที่ ชื่อของชื่อของ AttributeAttribute ที่เราต้องการที่เราต้องการ var $attribute_name; . . . $this -> attribute_name; var $attribute_name; . . . $this -> attribute_name; รูปแบบ
  • 17. 17 การเรียกใช้การเรียกใช้ ClassClass OperationOperation การเรียกใช้งานการเรียกใช้งาน Class OperationClass Operation จะจะ ทำาได้ก็ต่อมีการเรียกใช้งานผ่านทำาได้ก็ต่อมีการเรียกใช้งานผ่าน instanceinstance ที่เราสร้างขึ้นมาจากที่เราสร้างขึ้นมาจาก ClassClass
  • 18. 18 Example: Class Attribute &Example: Class Attribute & OperationOperation classclass studentstudent{{ varvar $student_id$student_id;; functionfunction __construct__construct(($param$param){){ $this ->$this -> student_idstudent_id == $param$param;; }} // end constructor// end constructor functionfunction show_idshow_id(){(){ echoecho "student id = " ."student id = " . $this$this ->-> student_idstudent_id;; }} // end function// end function }} // end class// end class $stu$stu == newnew studentstudent((4633000146330001);); // create instance// create instance $stu$stu ->-> show_idshow_id();(); // show student id// show student id student id = 46330001student id = 46330001 Class AttributeClass Attribute Class OperationClass Operation
  • 19. 19 การถ่ายทอดคุณสมบัติการถ่ายทอดคุณสมบัติ InheritanceInheritance  เป็นการถ่ายทอดเป็นการถ่ายทอด AttributeAttribute และและ OperationOperation จากจาก ClassClass แม่แบบ โดยเราต้องใช้คำาแม่แบบ โดยเราต้องใช้คำา สั่งสั่ง extendsextends ตามหลังชื่อตามหลังชื่อ ClassClass แล้วปิดแล้วปิด ท้ายด้วยชื่อท้ายด้วยชื่อ ClassClass ต้นแบบต้นแบบ สร้างสร้าง ClassClass studentstudent โดยถ่ายทอดโดยถ่ายทอด AttributeAttribute และและ OperationOperation จากจาก ClassClass personperson class student extends person { } class student extends person { } รูปแบบ
  • 20. 20 Example: InheritanceExample: Inheritance classclass personperson{{ varvar $$firstnamefirstname;; varvar $$lastnamelastname;; functionfunction __construct__construct(($$fnamefname, $, $lnamelname)){{ $$thisthis -->> firstnamefirstname == $$fnamefname;; //// assign value to firstnameassign value to firstname $$thisthis -->> lastnamelastname == $$lnamelname;; //// assign value to lastnameassign value to lastname }} //// end functionend function functionfunction show_detailshow_detail()(){{ echoecho ""Hello,Hello, "" ;; echoecho $$thisthis -->> firstnamefirstname . " " .. " " . $$thisthis -->> lastnamelastname;; }} //// end functionend function }} //// end classend class $$detaildetail == newnew personperson("("UthaiUthai", "", "ShiangJanShiangJan");"); $$detaildetail ->-> show_detailshow_detail();(); Hello, Uthai ShiangJanHello, Uthai ShiangJan
  • 21. 21 Example: InheritanceExample: Inheritance classclass personperson{{ varvar $$firstnamefirstname;; varvar $$lastnamelastname;; functionfunction __construct__construct(($$fnamefname, $, $lnamelname)){{ $$thisthis -->> firstnamefirstname == $$fnamefname;; //// assign value to firstnameassign value to firstname $$thisthis -->> lastnamelastname == $$lnamelname;; //// assign value to lastnameassign value to lastname }} //// end functionend function functionfunction show_detailshow_detail()(){{ echoecho ""Hello,Hello, "" ;; echoecho $$thisthis -->> firstnamefirstname . " " .. " " . $$thisthis -->> lastnamelastname;; }} //// end functionend function }} //// end classend class classclass studentstudent extendsextends personperson{{ //// inheritanceinheritance }} //// end classend class $$detaildetail == newnew studentstudent("("UthaiUthai", "", "ShiangJanShiangJan");"); $$detaildetail ->-> show_detailshow_detail();(); Hello, Uthai ShiangJanHello, Uthai ShiangJan Person Student
  • 22. 22 OverridingOverriding ในการในการ InheritanceInheritance ClassClass มาเพื่อมาเพื่อ ใช้งานบางครั้งเราจำาเป็นต้องมีใช้งานบางครั้งเราจำาเป็นต้องมี การเปลี่ยนแปลงการเปลี่ยนแปลง ((ModifyModify)) functionfunction การทำาให้ให้สอดคล้องกับการทำาให้ให้สอดคล้องกับ ClassClass ใหม่ที่เราสร้างขึ้นใหม่ที่เราสร้างขึ้น การทำาการทำา OverridingOverriding คือคือการสร้างการสร้าง FunctionFunction ในใน SubSub ClassClass ที่มีชื่อเหมือนที่มีชื่อเหมือน FunctionFunction ของของ ClassClass แม่แบบแม่แบบ เพื่อให้เพื่อให้
  • 23. 23 การออกแบบการออกแบบ ClassClass  โดยทั่วไปเราจะนำาโดยทั่วไปเราจะนำา ClassClass แทนแทน ObjectObject ที่มีอยู่ในชีวิตจริง เช่น หากที่มีอยู่ในชีวิตจริง เช่น หาก เราต้องการออกแบบเราต้องการออกแบบ E-CommerceE-Commerce เราก็ควรแบ่งส่วนประกอบของเราก็ควรแบ่งส่วนประกอบของ E-E- CommerceCommerce เป็นส่วนๆ เช่นเป็นส่วนๆ เช่น ShoppingShopping cartcart ก็แยกออกมาสร้างเป็นก็แยกออกมาสร้างเป็น ClassClass เพื่อให้สามารถนำาเอาเพื่อให้สามารถนำาเอา ShoppingShopping cartcart ไปใช้งานได้กับเว็บไปใช้งานได้กับเว็บ E-CommerceE-Commerce
  • 24. 24 Example: OverridingExample: Overriding classclass personperson{{ functionfunction show_detailshow_detail()(){{ echoecho ""Hello WorldHello World "" ;; }} //// end functionend function }} //// end classend class classclass studentstudent extendsextends personperson{{ }} //// end classend class $$detaildetail == newnew studentstudent();(); $$detaildetail ->-> show_detailshow_detail();(); classclass personperson{{ functionfunction show_detailshow_detail()(){{ echoecho ""Hello WorldHello World "" ;; }} //// end functionend function }} //// end classend class classclass studentstudent extendsextends personperson{{ functionfunction show_detailshow_detail()(){{ echoecho ““Hi WorldHi World "" ;; }} //// end functionend function }} //// end classend class $$detaildetail == newnew studentstudent();(); $$detaildetail ->-> show_detailshow_detail();(); Hello WorldHello World Hi WorldHi World