MVC와 같은 패턴으로 응용 프로그램을 작성하고 특정 상황을 처리하는 방법을 알아야합니다. 나는 비주얼을 설명 할 것이다.PHP 프로젝트에서 클래스를 인스턴스화하는 전략
<?php
// Just to test the Class
// Parse Config.ini - Parsing do ficheiro de Configuração
$ini_array = parse_ini_file("../Config.ini", true);
// Mostra a BD configurada para funcionar
$active_database = $ini_array['current_database'];
// Mostra os dados da BD configurada para funcionar
$details_active_database = $ini_array[$active_database];
// Instanciar a Base de Dados
$db = new Postgresql(
$details_active_database['host'], $details_active_database['port'],
$details_active_database['user'], $details_active_database['password'],
$details_active_database['dbname']
);
print_r($db->query('select * from tdir_categorias'));
class Postgresql {
private $connection;
public function __construct($hostname, $port, $username, $password, $database) {
// Lançar excepções para os parametros
// hostname nulo ou branco
if (is_null($hostname) OR $hostname == '') {
// O $hostname não pode vir a vazio, vou lançar excepção
throw new Exception("O parametro hostname nao pode vir a vazio, Metodo em causa: __construct()");
}
// port nulo ou branco
if (is_null($port) OR $port == '') {
// O $port não pode vir a vazio, vou lançar excepção
throw new Exception("O parametro port nao pode vir a vazio, Metodo em causa: __construct()");
}
// username nulo ou branco
if (is_null($username) OR $username == '') {
// O $username não pode vir a vazio, vou lançar excepção
throw new Exception("O parametro username nao pode vir a vazio, Metodo em causa: __construct()");
}
// password nulo ou branco
if (is_null($password) OR $password == '') {
// O $password não pode vir a vazio, vou lançar excepção
throw new Exception("O parametro password nao pode vir a vazio, Metodo em causa: __construct()");
}
// database nulo ou branco
if (is_null($database) OR $database == '') {
// O $database não pode vir a vazio, vou lançar excepção
throw new Exception("O parametro database nao pode vir a vazio, Metodo em causa: __construct()");
}
// Connection String
$connection_string = "host=$hostname port=$port dbname=$database user=$username password=$password";
// Connect to Database
if (!$this->connection = pg_connect($connection_string)) {
throw new Exception("Nao foi efectuada com sucesso ligacao a Base de Dados, Metodo em causa: __construct()");
}
}
public function query($sql) {
$resource = pg_query($this->connection, $sql);
// Se $resource for TRUE
if ($resource) {
if (is_resource($resource)) {
$i = 0;
$data = array();
while ($result = pg_fetch_assoc($resource)) {
$data[$i] = $result;
$i++;
}
pg_free_result($resource);
$query = new stdClass();
$query->row = isset($data[0]) ? $data[0] : array();
$query->rows = $data;
$query->num_rows = $i;
unset($data);
return $query;
} else {
return TRUE;
}
} else /* Se $resource for FALSE */ {
throw new Exception(pg_last_error($this->connection) . " SQL, " . $sql . ": query()");
}
}
public function escape($value) {
}
public function countAffected() {
}
public function getLastId() {
}
public function __destruct() {
}
}
?>
: 울부 짖는 코드로, 내가 PostgreSQL 데이터베이스에 대한 드라이버를 데이터베이스/postgresql.php에,
+ database
|
- postgresql.php
+ models
|
- categories.php
- countries.php
- domains.php
- example_usage.php
확인 :
나는 프로젝트 폴더 조직의 종류가
모델 파일에서 나는 yeat가 없습니다.
<?php
class Categories {
// do things with the database calling the postgresql.php driver.
}
?>
그리고 파일 "example_usage.php은"나는 모델을 호출 할 파일을 것입니다,이 파일은 MVC 패턴에서 컨트롤러의 일종이다. example_usage.php의 모델 클래스 내부의 메소드를 호출하는 Postgresql.php 클래스와 모델 클래스의 인스턴스를 어떻게
내 의심
은 ...나에게 단서를 제공하십시오. 나는 아주 감사하게 될 것이다.
죄송합니다.
최고 감사합니다,
당신은 단순히 스크립트 파일을 포함 할 필요가
안녕하세요, 답장을 보내 주셔서 감사합니다. 카테고리 모델에서 Postgresql 클래스를 호출하는 것에 대해 의문의 여지가 있습니다. Categories 모델 클래스에서 Postgresql 클래스를 인스턴스화해야합니다. 어떻게해야합니까? 안부 인사, –
나는 의존성 주입을 사용하는 것이 좋습니다. 답을 예제로 업데이트하겠습니다. – Stephen