Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Caya

Herdar PDO [Resolvido]

Mensagens Recomendadas

Caya

Olá,

Estava para aqui a tentar herdar a class PDO e PDOStatement, mas isto está a embirrar comigo. O que fiz até agora:

class PDOExtended extends PDO {
function __construct($dsn, $username, $password, $driver) {
	parent::__construct($dsn, $username, $password, $options);
	$this->setAttribute(PDO::ATTR_STATEMENT_CLASS, array('PDOStatementExtended', array($this)));
}

function myQueryFunction() {
	...
}

function myExecFunction() {
	...
}

...
}

class PDOStatementExtended extends PDOStatement {
function myBindParam() {
	...
}

 ...
}

$db = new PDOExtended(...);

Alguém consegue identificar onde está a minha noobice?

thanks

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
infopc

O PDO devolve-te um objecto do tipo PDOStatement, e por mais que estendas o pdostatement vai sempre devolver o pdostatement. a novice está em: podes estender o pdo mas n necessitas estender o pdostatement a menos que queiras fazer grandes overrides aos métodos do pdo (o que não queres fazer a menos que queiras escrever um novo pdo lol)


O que não tem solução, solucionado esta...

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Caya

Já consegui resolver o problema mas esqueci-me de vir aqui dizer.

O PDO devolve-te um objecto do tipo PDOStatement, e por mais que estendas o pdostatement vai sempre devolver o pdostatement. a novice está em: podes estender o pdo mas n necessitas estender o pdostatement a menos que queiras fazer grandes overrides aos métodos do pdo (o que não queres fazer a menos que queiras escrever um novo pdo lol)

Eu sei que o PDO devolve um objecto do tipo PDOStatement por isso é que defini o atributo 'PDO::ATTR_STATEMENT_CLASS' como a class estendida do PDOStatement. Mas sim, necessito estender o PDOStatement, para criar lá umas funções que me poupam molhos de linhas de código  ;)

Já agora para quem necessitar de fazer o mesmo, basta acrescentar o seguinte ao código que coloquei no primeiro post:

class PDOStatementExtended extends PDOStatement {
public $pdo;

protected function __construct($pdo) {
		$this->pdo = $pdo;
}
}

thanks

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.