2012-06-27 159 views
1

如何從另一個類中的另一個類調用函數?在php中,如何從另一個類中的另一個類調用函數?

這裏是我當前的代碼:

<?php 

    class database 
    { 
     private $host = "localhost"; 
     private $user = "root"; 
     private $password = ""; 
     private $db = "9dot"; 

     //connect to database 
     public function connect() 
     { 
      $connect = mysql_connect($this->host,$this->user,$this->password); 
      $database = mysql_select_db($this->db,$connect); 

     } 



     //Get exam headers 
     public function GetExam() 
     { 
      $this->connect(); 
      $select = "SELECT e.ExamHeaderID, CONCAT(e.Firstname,' ',e.Lastname) AS Fullname e.Age, e.Position, e.Date FROM examheader e"; 
      $result = mysql_query($select); 
      $table = ""; 
      $table .= "<th>ExamID</th>"; 
      $table .= "<th>Name</th>"; 
      $table .= "<th>Age</th>"; 
      $table .= "<th>Position</th>"; 
      $table .= "<th>Date</th>"; 

      $exam_id = ""; 
      $fullname = ""; 
      $age = ""; 
      $position = ""; 
      $date = ""; 
      while($row = mysql_fetch_array($select)) 
      { 
       $exam_id = mysql_real_escape_string($row['ExamHeaderID']); 
       $fullname = mysql_real_escape_string($row['Fullname']); 
       $age = mysql_real_escape_string($row['Age']); 
       $position = mysql_real_escape_string($row['Position']); 
       $date = mysql_real_escape_string($row['Date']); 
      } 

     } 

     public function GetExamDetails($ExamID) 
     { 
      $this->connect(); 
      //$select = "SELECT ed.ExamDetailsID, ed."; 
     } 


     //Save Exam header 
     public function SaveExam($firstname,$lastname, $age, $position) 
     { 
      $this->connect(); 
      $date = date("m/d/Y"); 
      mysql_real_escape_string($firstname); 
      mysql_real_escape_string($lastname); 
      mysql_real_escape_string($age); 
      mysql_real_escape_string($position); 
      $insert = "INSERT INTO examheader (Firstname,Lastname, Age, Position, Date) VALUES ('$firstname','$lastname','$age','$position')"; 
      $result = mysql_query($insert); 
      $exam_id = mysql_insert_id(); 
      //return exam id for insertion of exam details 
      return $exam_id; 

     } 

     public function SaveExamAnswer() 
     { 


     } 



    } 

?> 





<?php 

include 'database.php'; 
$database = new $database(); 

class department 
{ 
    $database->//property or function 
} 



?> 

如何調用函數從數據庫類

回答

1

嘗試是這樣的(粗略的例子):

<?php 

include 'database.php'; 


class department 
{ 

    public function doSomething() { 
     $database = new $database(); 
     $val = $database->GetExam(); 
     //do something 
    } 
} 

?> 
3

您可以擴展它們。

class department extends database { 
    function test() { 
     $this->getdbfunction(); 
    } 
} 

或者你給他們在構造函數:

class department { 
    private $db; 

    public function __construct(Database db) { 
     $this->db = $db 
    } 
} 

$department = new department($database); 
+0

依賴注入方法是優選的方法,在民意Ò f大多數;) – Leigh

+0

當你看看性能時,應該看看並使用設計模式,所以這個例子非常簡單。 – Stony

1

創建類型「數據庫」的對象,然後使用該調用方法:

$database = new database(); 
$connection = $database->connect(); 
2

您可以定義屬性wiche是第一類的實例,然後將方法應用到第二個類示例中的已定義屬性中:

class A { 
function a() { 
} 
... 
} 

class B { 
$attClassA; 
function __construct(A objA) { 
$this->attClassA = objA; 
} 
// you can use the attClassA in any class you want and then apply the chosen method 
... 
} 
5

可以聲明數據庫實例中部門類象下面這樣:如果你直接在你的部門級不想擁有它

class department 
{ 
    public function __construct() 
    { 
     $database = new database(); 
     $database->someFunction(); 
    } 
} 

,你可以使用它的global系統,假設聲明所需的文件被包括,象下面這樣:

include 'database.php' 

$database = new database(); 

class department 
{ 
    public function __construct() 
    { 
     global $database; 
     $database->someFunction(); 
    } 
} 

參見PHP: Variable scope

+3

不要鼓勵人們使用'全球'! – Leigh

+0

我不鼓勵他使用它,我只是說這也是另一種做他想做的事情的方式,即使它不是最正確的做法。 –

相關問題