我有一個問題,瞭解如何類推廣工作..PHP類擴展
我試圖擴展一個類中有它更有組織不同的文件分割功能..
但我有問題訪問主類的變量和函數到子類中。
這就是什麼,我有:
父類:這是UFLEX V類0.88 我就不寫了這一切,因爲它是長..
class uFlex {
//Constants
const version = 0.88;
const salt = "";
//End of constants\\\\
/**
* PDO/database credentials
*/
var $db = array(
"host" => '',
"user" => '',
"pass" => '',
"name" => '', //Database name
"dsn" => '' //Alterntive PDO DSN string
);
function connect(){
if(is_object($this->db)) return true;
/* Connect to an ODBC database using driver invocation */
$user = $this->db['user'];
$pass = $this->db['pass'];
$host = $this->db['host'];
$name = $this->db['name'];
$dsn = $this->db['dsn'];
if(!$dsn){
$dsn = "mysql:dbname={$name};host={$host}";
}
$this->report("Connecting to database...");
try{
$this->db = new PDO($dsn, $user, $pass);
$this->report("Connected to database.");
}catch(PDOException $e){
$this->error("Failed to connect to database, [SQLSTATE] " . $e->getCode());
}
if(is_object($this->db)) return true;
return false;
}
}
然後:
<?php
class admin extends uFlex {
function adm_getUsers(){
if(!$this->connect()) return false;
$sql= "SELECT * from users LIMIT 30";
$st = $this->db->prepare($sql);
$out = $st->execute();
$row = $st->fetchAll(PDO::FETCH_ASSOC);
return $row;
}
function adm_getSingleUser($id){
if(!$this->connect()) return false;
if(is_numeric($id)){
$sql= "SELECT * from users WHERE id = '$id'";
}else{
$sql= "SELECT * from users WHERE username = '$id'";
}
$st = $this->db->prepare($sql);
$out = $st->execute();
$row = $st->fetch(PDO::FETCH_ASSOC);
return $row;
}
}
?>
我在配置文件中初始化它們,包括在每一頁中:
$user = new uFlex(false);
$admin = new admin();
但是,當使用$admin->adm_getUsers();
$ row數組時,它是空的。
在嘗試在兩個類之間分割函數之前,我在主類中使用了相同的函數,並且正在工作。
這是我第一次嘗試擴展一個類..我在谷歌搜索,也在這裏得到了一些問題,但它對我來說太複雜了,因爲我仍然在學習PHP。
不要使用繼承在不同的文件分割功能! – Philipp 2013-02-21 09:39:00
'「SELECT *來自用戶的用戶名='$ id'」'是安全風險。 – jantimon 2013-02-21 09:45:44
@Ghommey'$ id'在被傳遞給函數之前被檢查並轉義。無論如何,它只是一個測試功能。 – Fr0z3n 2013-02-21 09:51:48