-
PHP MVC com DAO
Alguém poderia me fornecer algum exemplo mais sólido de uma estrutura com os recursos descritos no título? Pois estou desenvolvendo um mini "framework" no meu tempo livre e gostaria de obter uma forma "correta" de como aplicar DAO ao MVC. Abaixo segue o código atual:
Controller
Código PHP:
<?php
namespace Main\Controller;
use Main\StartUp;
use Main\Model\Main as Model;
use Alpha\Template\Template;
class Main extends StartUp {
public function start ()
{
$model = new Model();
$template = new Template();
$template->title = "test";
$template->render("main\main\start");
}
public function __destruct ()
{
parent::__destruct();
}
public function __construct ()
{
parent::__construct();
}
}
Model
Código PHP:
<?php
namespace Main\Model;
use Main\Model\DAO\Main as DAO;
class Main extends DAO {
public function __destruct ()
{
parent::__destruct();
}
public function __construct ()
{
parent::__construct();
}
}
DAO
Código PHP:
<?php
namespace Main\Model\DAO;
use Alpha\Database\Database;
class Main extends Database {
public function delete ()
{
$pdo = $this->pdo;
$pdo->beginTranstaction();
try {
/*$stmt = "";
$pdo->prepare($stmt);
$pdo->bindParam(, , $this->bindType());
$pdo->execute();*/
$pdo->commit();
} catch (PDOException $Exception) {
$pdo->rollBack();
throw new PDOException($Exception->getMessage());
}
}
public function update ()
{
$pdo = $this->pdo;
$pdo->beginTranstaction();
try {
/*$stmt = "";
$pdo->prepare($stmt);
$pdo->bindParam(, , $this->bindType());
$pdo->execute();*/
$pdo->commit();
} catch (PDOException $Exception) {
$pdo->rollBack();
throw new PDOException($Exception->getMessage());
}
}
public function read ()
{
return array();
}
public function create ()
{
$pdo = $this->pdo;
$pdo->beginTranstaction();
try {
/*$stmt = "";
$pdo->prepare($stmt);
$pdo->bindParam(, , $this->bindType());
$pdo->execute();*/
$pdo->commit();
} catch (PDOException $Exception) {
$pdo->rollBack();
throw new PDOException($Exception->getMessage());
}
}
public function __destruct ()
{
parent::__destruct();
}
public function __construct ()
{
parent::__construct("sqlsrv:Server=192.168.1.3;Database=;", "sa", "", null);
}
}
-
Aqui tem um artigo bacana e bem acadêmico para aprender sobre isso.
[Only registered and activated users can see links. Click Here To Register...]
:bottini:
-
Não seria melhor você utilizar algum componente eficiente?
O Doctrine é ótimo, sem falar que ele é ORM... da uma olhada.
[Only registered and activated users can see links. Click Here To Register...]
Eu já utilizo o Eloquent do Laravel.
Se quiser, dá uma olhada no Illuminate Database: [Only registered and activated users can see links. Click Here To Register...]
[]'s
-
uma coisa que funcionou muito bem pra mim é a combinação do Slim Framework e Idiorm.
adoro usar os lambdas pra escrever minhas rotas, e o acesso do banco de dados com o idiorm (+ paris) é muito fácil.
não é exatamente o jeito que todos estão acostumados (classe = controller, function = action) mas funciona muito bem, e fica muito "limpo"
se quiser uma "dica"... não reinvente a roda, a não ser que queira entender como funciona sistemas assim, mas se esse for o caso é muito melhor fazer um fork de um projeto desses, estudar, resolver bugs e enviar patches pro repositório original
Slim
[Only registered and activated users can see links. Click Here To Register...]
Idiorm
[Only registered and activated users can see links. Click Here To Register...]
Paris
[Only registered and activated users can see links. Click Here To Register...]