10 de abr de 2011

Envio de e-mail com Symfony em desenvolvimento

Se você já precisou testar envios de e-mail com o Symfony, já deve ter esbarrado com as configurações do mailer no factories.yml, por padrão, a entrega de e-mails no ambiente dev é desabilitada, uma dica interessante, é usar a estratégia de entrega para somente um e-mail, assim, independente de qual endereço estiver recebendo o e-mail, sempre será entregue para o endereço configurado no factories.yml, conforme exemplo abaixo:

dev:
mailer:
param:
delivery_strategy: single_address
delivery_address: 'meu.email@meu.host.com'

"Descobri" esse single_address navegando aqui.

3 de fev de 2011

Singleton extensível

Dica rápida, se você pretende implementar um singleton para ser extendido, conforme o normalmente utilizado:


abstract class App_Model_Abstract {

protected static $_instance = null;

protected function __construct() {

}

public static function getInstance() {
if (self::$_instance === null) {
self::$_instance = new self();
}
return self::$_instance;
}

final private function __clone() {

}
}


você terá problemas, pois ao tentar recuperar uma instância das classes filhas:


ClasseFilha::getInstance();


você estará na verdade recuperando uma instância da classe pai, tirando o fato dela ser abstrata. Para que funcione conforme esperado precisariamos fazer:


abstract class App_Model_Abstract {

protected function __construct() {

}

final public static function getInstance() {
static $aoInstance = array();

$calledClassName = get_called_class();

if (!isset($aoInstance[$calledClassName])) {
$aoInstance[$calledClassName] = new $calledClassName();
}

return $aoInstance[$calledClassName];
}

final private function __clone() {

}
}



Fica a dica!