클래스 확장 작업 ..PHP 클래스는</p> <p>.. 내가 문제가
내가 더 조직 한 서로 다른 파일에 기능을 분할하는 클래스를 확장하기 위해 노력하고있어 방법을 이해 연장하지만 난 문제가 메인 클래스의 변수와 함수를 자식 클래스에 접근.
내가이 뭐죠입니다:
부모 클래스 : 그럼 내가 모든 것을 기록하지 않는 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();
$ 행 배열을 사용하면 비어 있습니다.
2 개의 클래스 사이에서 함수를 분할하기 전에, 나는 주 클래스에서 같은 함수를 사용하여 작업하고있었습니다.
나는 처음으로 클래스를 확장하려고합니다 .. 나는 Google에서 검색하고 여기에도 약간의 질문을 읽었지 만 여전히 PHP를 배우고 있기 때문에 이해하기에는 너무 복잡합니다.
이 다른 파일에 기능을 분할 상속을 사용하지 마십시오! – Philipp
' "사용자의 SELECT * WHERE username = '$ id' ''는 보안상의 위험이 있습니다. – jantimon
@Ghommey'$ id'가 함수에 전달되기 전에 검사되고 이스케이프됩니다. 그것은 어쨌든 단지 테스트 함수입니다. – Fr0z3n