ขอถามเรื่องการเรียกใช้ Function ภายใน class เดียวกันครับ (PHP OOP)
Code (PHP)
class teacher{
function insert_teacher($id,$pass,$name,$nameid,$sex,$address,$tel,$email,$fac){
$sql = "insert into teacher values('$id','$pass','$name','$nameid','$sex','$address','$tel','$email','$fac');";
$res = mysql_query($sql);
if($res){
$sql = "select teacher.tname,teacher.tid,faculty.fname from teacher ";
$sql.= "inner join faculty on teacher.fid = faculty.fid where tid=$id;";
$res = mysql_query($sql);
if($res){
$mydb = mysql_fetch_array($res);
$this->print_teacher_insert($mydb['tid'],$mydb['tname'],$mydb['fname']);
}else{
initdb::sql_error($res);
}
}else{
echo "ไม่สามารถลงทะเบียนได้กรุณาตรวจสอบข้อมูลอีกครั้งค่ะ<br>";
initdb::sql_error($res);
}
}
function print_teacher_insert($id,$name,$faculty){
echo "ลงทะเบียนเสร็จสมบูรณ์<br>ยินดีต้อนรับอาจารย์: ".$name." อาจารย์ประจำคณะ: ".$faculty." รหัสประจำตัว: ".$id." เข้าสู่ระบบค่ะ";
}
}
เป็นการเรียกฟังก์ชั่น print_teacher_insert() ภายในบรรทัดที่ 11 ซึ่งอยู่ใน class เดียวกันคือ teacher โดยใช้คำสั่ง
Code (PHP)
$this->print_teacher_insert($mydb['tid'],$mydb['tname'],$mydb['fname']);//รับค่าจาก $mydb ที่ fetch array
แต่พอเริ่มทดสอบกลับขึ้น error ดังนี้ครับ Fatal error: Using $this when not in object context ช่วยอธิบายหรือบอกวิธีแก้ไขที่ครับTag : PHP
Date :
2010-10-24 19:26:18
By :
ppanchai
View :
4566
Reply :
3
จากข้างบน
ไฟล์ที่เรียกคลาสข้างบนเป็นแบบ $teacher->insert_teacher(...); รึเปล่าครับ
ตัวอย่าง
Code (PHP)
<?php
include (dirname(__FILE__)."/teacher.php");// include teacher class เข้ามา
$teacher = new teacher();
$teacher->insert_teacher($id, $pass, ...ว่าไป);
?>
ถ้าเป็นแบบนี้น่าจะออกปกติครับ
แต่ถ้าใช้แบบ teacher::insert_teacher(...) มันก็จะ error อย่างที่ว่าเพราะมันไม่ได้รับความเป็น object มาทาง class ทำให้ $this ไม่ได้เป็น object (Fatal error: Using $this when not in object context)
Date :
2010-10-24 20:27:10
By :
mr.v
หรือจะเปลี่ยนจาก $this-> เป็น self:: ก็ได้ครับ
Date :
2010-10-24 20:28:09
By :
mr.v
ขอบคุณมากๆๆๆ ครับ
Date :
2010-10-24 21:53:56
By :
ppanchai
Load balance : Server 02