RSS
 

Como criar conexão com banco de dados MySQL usando Zend Framework

02 fev

Developers,

para criarmos uma conexão com um banco de dados é muito simples. No arquivo de configuração application.ini, definiremos nossos resources (recursos) para conexão.

resources.db.adapter = "pdo_mysql"
resources.db.params.host = "mysql.servidor.com"
resources.db.params.username = "seunomedeusuario"
resources.db.params.password = "suasenhadobancodedados"
resources.db.params.dbname = "nomedobancodedados"
resources.db.params.charset = "utf8"
resources.db.isDefaultTableAdapter = true

Com esses parâmetros definidos, precisaremos agora criar uma função protegida dentro do Bootstrap.php para criar a conexão. Vamos dar o nome de _initConnection.

    /**
     * Função faz a conexão com o banco de dados e registra a variável $db para
     * que ela esteja disponível em toda a aplicação.
     */
    protected function _initConnection()
    {
        /**
         * Obtém os resources(recursos).
         */
        $options    = $this->getOption('resources');
        $db_adapter = $options['db']['adapter'];
        $params     = $options['db']['params'];

        try{

            /**
             * Este método carrega dinamicamente a classe adptadora
             * usando Zend_Loader::loadClass().
             */
            $db = Zend_Db::factory($db_adapter, $params);

            /**
             * Este método retorna um objeto para a conexão representada por uma
             * respectiva extensão de banco de dados.
             */
            $db->getConnection();

            // Registra a $db para que se torne acessível em toda app
            $registry = Zend_Registry::getInstance();
            $registry->set('db', $db);

        }catch( Zend_Exception $e){

            echo "Estamos sem conexão ao banco de dados neste momento. Tente mais tarde por favor.";

            exit;
        }

    }

Se conseguirmos assimilar bem os comandos do Zend Framework, vemos que ele não é tão assim um bicho de sete cabeças! :D

É isso developers! Abraços!


 

Como verificar se o usuário está logado – Zend Framework

29 jan

Developers,

trago hoje uma dica rápida sobre como verificar se um usuário está ou não logado no seu sistema usando Zend Framework. Normalmente, funções comuns como esta, entre os módulos de uma aplicação, eu agrupo todas em um só arquivo.

Função

/**
 * Verifica a autenticação do usuário
 *
 * @return bool
 */
function isLogged()
{
    return Zend_Auth::getInstance()->hasIdentity();
}

É de grande ajuda pois evita chamar toda hora Zend_Auth::getI…..

Como usar?

if( isLogged() ) ...

É isso pessoal! Abraços!


 
 

O que há de novo no Zend Framework 1.10

28 jan

Developers,

está disponível para download o Zend Framework 1.10.0 Stable Released. Esta versão está com muitas funcionalidades novas e também grandes mudanças para a nossa documentação.

Nossa documentação foi reorganizada em novas seções. Anteriormente o nosso manual era dividido por capítulos e por componentes.  Esses capítulos em uma nova seção “Zend Framework Reference“. Também foi acrescentada a documentação a seção “Learning Zend Framework” para quem quer aprender Zend Framework com uma série de tutoriais e inclusive o nosso ex-guia “Quick Start”.

Outra grande mudança vista em nossa documentação foi o versionamento, com isso você desenvolvedor poderá encontrar tanto o manual quanto a documentação da API de versões do Zend Framework(1.10, 1.9, 1.8, 1.7, 1.6, 1.5, 1.0).

Abaixo segue uma lista das novas funcionalidades incluídas na versão 1.10.

  • Zend_Barcode
  • Zend_Cache_Backend_Static
  • Zend_Cache_Manager
  • Zend_Exception
  • Zend_Feed_Pubsubhubbub
  • Zend_Feed_Writer
  • Zend_Filter_Boolean
  • Zend_Filter_Compress/Decompress
  • Zend_Filter_Null
  • Zend_Log::factory()
  • Zend_Log_Writer_ZendMonitor
  • Zend_Markup
  • Zend_Oauth
  • Zend_Serializer
  • Zend_Service_DeveloperGarden
  • Zend_Service_LiveDocx
  • Zend_Service_WindowsAzure
  • Zend_Validate_Barcode
  • Zend_Validate_Callback
  • Zend_Validate_CreditCard
  • Zend_Validate_PostCode
  • Zend_Pdf – com velocidade de análise melhorada em 40%
  • Zend_Application – com adição de recursos incluindo, CacheManager, Dojo, jQuery, Layout, Log, Mail e Multidb.
  • Zend_Tool – refeita para eliminar certos problemas e críticas e também adicionar uma série de novos recursos.
  • Atualização da Dojo para 1.4

Essas novas funcionalidades contribuirão e muito para nossa comunidade. Agradeço a todos que contribuíram com esta nova versão.

É isso developers! Até a próxima.


 

Como criar um formulário com Zend_Form

25 jan

O Zend_Form simplifica e muito a nossa vida durante a criação de um formulário. Ele executa algumas tarefas necessárias como:

  • Filtra e valida a entrada de dados;
  • Ordena os campos;
  • Renderiza o formulário e os campos, incluindo escapar;
  • Agrupa os campos do formulário;
  • Configura os campos e o nível dos formulários;

Zend_Form faz uso de diversos componentes do Zend Framework para realizar seus objetivos, incluindo Zend_Config, Zend_Validate, Zend_Filter, Zend_Loader_PluginLoader e, opcionalmente, Zend_View.

Criando uma classe estendida de Zend_Form

Bom, para uma arquitetura MVC é muito importante a organização e separação dos tipos de dados, com isso é de suma importância que se crie uma pasta dentro da pasta lybrary, onde ficarão todos os formulários de aplicação.

Dessa forma, criaremos a nossa classe estendida de Zend_Form, o Exemplo.php.

class Sample_Form_Exemplo extends Zend_Form
{
    public function init()
    {

    }
}

São primordiais algumas configurações iniciais no formulário

        // Setar a action do formulário
        $this->setAction('http://danieldeveloper.com');

        // Setar o método (POST | GET)
        $this->setMethod('POST');

Podemos também setar outros atributos do formulário utilizando o setAttrib ou setAttribs, esse último usando um array com as atribuições. Vamos setar então o ID do formulário.

$this->setAttrib('id', 'exemplo');

Adicionando elementos no formulário

Os elementos dos formulários são muitos, separei os mais utilizados e já mostrando como eles devem ser instanciados e criados. O parâmetro passado para a função é o nome do campo, ou seja, vai ser atribuído ao atributo name do elemento.

// Cria um botão
$botao = new Zend_Form_Element('botao');

// Cria um campo de marcação(checkbox)
$check = new Zend_Form_Element_Checkbox('check');

// Cria um campo para upload de arquivos
$arquivo = new Zend_Form_Element_File('arquivo');

// Cria um campo oculto
$oculto = new Zend_Form_Element_Hidden('oculto');

// Cria um campo de seleção
$selecione = new Zend_Form_Element_Select('selecione');

// Cria um campo de senha
$senha = new Zend_Form_Element_Password('senha');

// Cria um botão para submeter o formulário
$submeter = new Zend_Form_Element_Submit('submeter');

// Cria um campo textarea
$texto = new Zend_Form_Element_Textarea('texto');

Também podemos editar os elementos HTML dos nossos campos, como label, id e class.

$texto = new Zend_Form_Element_Textarea('texto');
$texto->setLabel('Texto')
      ->setAttribs(array(
        'id' => 'iddocampo',
        'class' => 'nomedaclasse'
      )
);

Para que possamos confirmar o adicionamento destes elementos no formulário, é necessário que citemos cada elemento criado, dentro da função addElements, assim:

$this->addElements(array(
    $botao,
    $check,
    $arquivo,
    $oculto,
    $senha
));

Sem isso, os campos não serão mostrados no formulário.

Adicionando validadores(Validators)

Por padrão, o nosso formulário não tem nenhum validador. Para validadar nossos elementos, mostrarei os seguintes códigos com as validações mais utilizadas e como usa-las.

// Aceita somente valores alfanuméricos
->addValidator( new Zend_Validate_Alnum())

// Aceita somente valores em formato de data
->addValidator( new Zend_Validate_Date())

// Aceita somente valores em formato de email
->addValidator( new Zend_Validate_EmailAddress())  

// Aceita somente valores hexadecimais
->addValidator( new Zend_Validate_Hex())

// Aceita somente valores inteiros
->addValidator( new Zend_Validate_Int())  

// Aceita somente um endereço IP
->addValidator( new Zend_Validate_Ip())  

// Aceita somente se o campo não for vazio
->addValidator( new Zend_Validate_NotEmpty())

// Aceita somente se caber dentro da expressão regular
->addValidator( new Zend_Validate_Regex('/^[a-z]/i'));

Também podemos validar fazendo uma verificação no elemento se ele é requerido. Setamos então o elemento como requerido.

->setRequired()

Adiconando filtros(Filters)

Os filtros são instanciados como os validadores, e também por padrão não vem junto ao formulário. Vamos ver alguns filtros mais usados e como cria-los.

// Filtra caracteres alfanuméricos
->addFilter( new Zend_Filter_Alnum() )

// Filtra números inteiros
->addFilter( new Zend_Filter_Int() )

// Filtra os caracteres mudando letras para minúsculas
->addFilter( new Zend_Filter_StringToLower() )        

// Filtra os caracteres mudando letras para maiúsculas
->addFilter( new Zend_Filter_StringToUpper() )

Após todo este trabalho, agora precisamos exibir nosso formulário. No controller desejado é necessário criar uma instância do formulário.

$objFormExemplo = new Sample_Form_Exemplo();

e envia-lo para a view.

$this->view->objFormExemplo = $objFormExemplo;

Na view é necessário apenas dar um “echo” na variável e pronto!

echo $this->objFormExemplo;

Bom developers, essa foi uma tentativa de explicar a vocês como funciona o Zend_Form, o quão é grande o poder do Zend Framework e seus códigos complexos que hoje nem são complexos mais! Aos poucos vamos dominando cada dia mais esse monstro das aplicações web!

Abraços e postem suas dúvidas!


 

Como adicionar um novo campo para contato no WordPress 2.9

30 dez

Developers,

hoje precisei adicionar alguns novos campos de contato em uma instalação wordpress, então criei uma plugin de hack, e adicionei uma função add_more_contactmethods.

function add_more_contactmethods(  $contactmethods )
{
// Adiciono aqui os meus novos campos: Telefone e endereço
$contactmethods['telephone']    = 'Telefone';
$contactmethods['address']      = 'Endereço';

// Removo alguns campos que não serão necessários
unset( $contactmethods['yim'], $contactmethods['jabber'], $contactmethods['aim'] );

return $contactmethods;
}

Filtramos…

add_filter('user_contactmethods', 'add_more_contactmethods',10,1);

E exibimos usando a template tag the_author_meta

the_author_meta('telephone', $current_author->ID);

Fácil neh?

Abs

Fonte: WP Engineer.com


 
 

Como configurar uma aplicação completa usando Zend Framework

29 dez

Developers,

No artigo anterior Estruturando uma aplicação completa usando Zend Framework, disponibilizei para download somente a estrutura da aplicação, nos falta configurar o application.ini, e colocar algumas regras em prática e sem nem mexer no bootstrap.

Se você ainda não baixou a estrutura da aplicação, baixe para poder acompanhar o desenvolvimento.

Sample Project (10,7 KiB, 1.276 downloads )

Começando pelo application.ini, vamos configura-lo assim:

[production]
;  Desabilitamos a exibição dos erros se estiver em ambiente de produção
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0

; Incluímos o caminho da biblioteca e também dos models
includePaths.library = APPLICATION_PATH "/../library"
includePaths.models = APPLICATION_PATH "/models"

; Bootstrap
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"

; Configuramos o Front Controller, colocando o controller principal no módulo default
resources.frontController.controllerDirectory = APPLICATION_PATH "/modules/default/controllers"
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
resources.frontController.defaultModule = "default"

; Configuramos as views setando sua codificação para UTF-8 e a view principal no módulo default
resources.view.encoding = "UTF-8"
resources.view.basePath = APPLICATION_PATH "/modules/default/views"

[development : production]
; Habilitamos a visualização dos erros se estiver no ambiente de desenvolvimento
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1

Prontinho, application.ini configurado e agora nos resta apenas adicionar um prefixo com o nome de cada módulo (exceto “default”) no nome das classes dos controllers.

Por exemplo, nos controllers do módulo admin, no arquivo IndexController.php acrescente o prefixo “Admin_” no nome da classe.

class Admin_IndexController extends Zend_Controller_Action

E no módulo app acrescente “App_”, apenas no módulo default que não é necessário o prefixo.

Portanto, agora podemos acessar nossa URL sem problemas de acordo com cada módulo.

http://localhost/sample_project/www/ -> “Acessa o módulo default”

http://localhost/sample_project/www/ app/  -> “Acessa o módulo app”

http://localhost/sample_project/www/admin/  -> “Acessa o módulo admin”

É isso pessoal, confesso que estou a cada dia me surpreendendo mais com o ZendFramework.

Como sempre, pra facilitar pra todo mundo, estou disponibilizando mais um arquivo com a nova estrutura, agora com tudo configurado e rodando. OBS: lembrando que eu não mando a biblioteca do zend junto com os arquivos, pois é muito pesadinha!

Sample Project - Configurado (10,7 KiB, 805 downloads )

Abs


 

Como estruturar uma aplicação completa usando Zend Framework

22 dez

Hoje vou mostrar como estruturar uma aplicação usando Zend Framework 1.9.6 de forma com que ela tenha três(3) módulos, são eles:

  • admin (Administração)
  • default (Site/Homepage)
  • app (app)

Visualmente nossa aplicação ficará com a seguinte estrutura:

Como exemplo, foi criado o projeto sample_project onde defimos a estrutura da aplicação.

Dentro do projeto, temos a pasta application, que é onde fica toda a aplicação, regras de negócio, controlers, views, classes de abstração de dados e etc. Dentro dela não se aplica imagens nem arquivos de css e javascript, pois todos devem estar dentro de assets/css … /javascript.

Dentro da aplicação temos a pasta configs onde nela existe o application.ini, que é onde fica todas as configurações inicias da nossa aplicação, onde definimos a URL base, caminhos dos módulos, controllers, views e etc.

A pasta models (modelos) é onde fica nossas classes de abstração de dados, ou seja, onde manipulamos os dados do banco, insert, update, select e delete, onde definimos também os relacionamentos entre as tabelas do banco dados. É aconselhável também a criação de um model para cada tabela criada no banco de dados e que haja necessidade de manipulação dinâmica.

Chegamos agora na pasta modules (módulos), que por sua vez contém os módulos que iremos utilizar na nossa aplicação. Ela separa os módulos admin, app e default de forma com que cada um seja responsável por seus controllers, layout e views.

Os controllers são os responsáveis por separar toda a lógica da parte visual da aplicação, são a cabeça da estrutura MVC, busca os dados no model, o trata e o devolve para uma view onde são exibidos os dados.

A pasta layouts contém o arquivo .phtml de exibição do layout, nele deve conter toda a estrutura (html) do layout do módulo em que se está. Obs: o nome deste arquivo deve sempre ser o nome do módulo a que ele pertence.

As views são as responsáveis por exibir os dados passados pelos controllers, formatados e da forma que se deseja.

A pasta views/helpers contém arquivos que poderão ser reutilizados por todas as views.

Na pasta scripts contém uma pasta para cada controller e um arquivo .phtml para cada action desse controller. Todo controller deve conter uma view, senão acarretará erro na aplicação.

o arquivo Bootstrap.php é o coração da nossa aplicação, onde startamos funções essencias na nossa aplicação como autoloader, plugins e conexão com banco de dados.

A pasta library é a nossa biblioteca de arquivos do Zend, e também onde podemos criar nossas próprias bibliotecas, como é o caso da pasta Sample.

www, esta é a nossa pasta pública na web, ou seja, que ficará visivel para o usuário. É dentro dela que inserimos nossos arquivos de css, javascript e imagens, como no exemplo situados dentro da pasta assets. Também temos dentro dela a pasta de upload onde será o caminho do arquivos “upados” para nossa aplicação.

No arquivo .htaccess configuramos alguns diretórios e redirecionamentos para o servidor apache, no momento não é necessário modifica-lo, pois ele já vem pré configurado ao criar a aplicação usando o Zend_Tools.

E finalmente chegamos ao nosso index.php, que nada mais nada menos é o responsável por juntar tudo sitado anteriormente e exibir para gente na telinha. É nele que se “starta” toda a aplicação usando o método $application->bootstrap()->run();

Com minha experiência en desenvolvimento web e zend, acredito que essa seja a melhor forma para pensar, começar e estruturar uma aplicação web de respeito e muita segurança.

Baixe a estrutura e comece agora mesmo a desenvolver sua app.

Sample Project (10,7 KiB, 1.276 downloads )

Abs


 

Dedicação total ao Zend

01 out

Nos últimos  meses venho me dedicando inteiramente ao desenvolvimento de aplicações utilizando como framework o Zend.

Tanta dedicação, que estava sem tempo pra postar nesses ultimos meses.

Apartir dessa semana volto a postar, e com artigos totalmente voltados ao desenvolvimento de aplicações com Zend Framework.

Vou mostrar como estruturar, configurar, trabahar com banco de dados, models, modules, helpers e etc. Realmente estou com muito conteúdo aqui para compartilhar, e todos para Zend 1.9.

Aguardem…

abs


 
 

Zend Tool e XAMPP

19 ago

Saudações galera,

pra quem tem instalado o XAMPP na máquina e quer executar a ZEND TOOL se não estiver configurado corretamente não vai funcionar!

Pois bem, siga os passos abaixo que você vai se dar bem! :)

->Botão direito em Meu Computador (My Computer)

->Propriedades (Properties)

->Aba Avançado (Advanced)

->Clique em Variáveis de Ambiente (Environment Variable)

->No segundo box, clique em “Path” e depois no botão “Editar” (Editar)

->Adicione no final do path o caminho do php no XAMPP:  c:/xampp/php

->Reinicie o computador.

Prontinho!

Qualquer dúvida ou sugestão, fiquem a vontade!


 
 

Lançado o Zip.li

21 jul

Hoje foi lançado o Zip.li, onde você poderá ziplar(encurtar) suas URL’s. Simplicidade e performance foram os quesitos que a Apiki teve para realizar este projeto, ainda Alpha, mas de grande utilidade para nós que vivemos no twitter.

Falando em twitter, vamos seguir o @apikizipli.

Abs a todos…