![](/img/trans.png)
[英]Using curl, how can i call a php class and a function inside the class from a form i have on another website (different server)
[英]In php how do I call function from another class inside a different class?
如何從另一個類中的另一個類調用函數?
這是我當前的代碼:
<?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
}
?>
如何從數據庫類調用函數
您可以在部門類中聲明數據庫的實例,如下所示:
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:變量范圍
你可以擴展它們。
class department extends database {
function test() {
$this->getdbfunction();
}
}
或者你把它們交給構造函數:
class department {
private $db;
public function __construct(Database db) {
$this->db = $db
}
}
$department = new department($database);
您可以定義一個屬性,它是第一個類的實例,然后將方法應用於第二個類示例中定義的屬性:
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
...
}
嘗試這樣的事情(粗略的例子):
<?php
include 'database.php';
class department
{
public function doSomething() {
$database = new $database();
$val = $database->GetExam();
//do something
}
}
?>
創建一個“數據庫”類型的對象,然后使用它調用該方法:
$database = new database();
$connection = $database->connect();
你可以這樣做:
如果您不想手動包含 PHP 文件,則使用 spl_autoload_register() 函數,否則您需要包含具有要從中導入方法的類的 PHP 文件。
file-A.php - 包含 A 類的 PHP 文件
<?php
class A{
function DoSquare($x){
return $x*$x;
}
}
?>
file-B.php - 包含 B 類的 PHP 文件
假設您正在使用 spl_autoload_register():
<?php
class B{
private $ObjectA = NULL;
public function __construct(){
$this->ObjectA = new A();
}
public function PrintSquare($x){
echo $this->ObjectA->DoSquare($x);
}
}
?>
如果手動包含 PHP 文件:
<?php
require("file-A.php");
class B{
private $ObjectA = NULL;
public function __construct(){
$this->ObjectA = new A();
}
public function PrintSquare($x){
echo $this->ObjectA->DoSquare($x);
}
}
?>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.