Archive for the Category » ZEDDEMO «

Thursday, August 16th, 2007 | Author: admin

Introdução

O conceito básico do relacionamento entre os objetos de dados (objetos extendidos de Zend_Db_Table_Abstract)
é o cascateamento de operações como SELECT, UPDATE e DELETE .

Consulte:

Objetivo

Criar um setor de uma empresa, que possa ter vários funcionários relacionados com ele (um para muitos).

Condições

Quando selecionar o setor, mostrar os seus funcionários, sem usar SELECT em tb_funcionarios, tentar usar o relacionamento para apresenta-los.
Quando um setor for apagado, fazer com que o sistema apague todos os funcionários ralacionados.

Solução

Relacionamento

Primeiro iremos criar as referências entre as objetos de dados chamados DoSetor e DoFuncionario.

Na classe DoSetor inserimos a sua dependencia com o DoFuncionario, usando o parametro $_dependentTables.

class DoSetor extends Zend_Db_Table_Abstract
{
	protected $_name = "tb_setor";

	protected $_primary = "cd_setor";

	protected $_dependentTables = array('DoFuncionario');
}

arquivo: DoSetor.php

Na classe DoFuncionario use o parametro $_referenceMap, passando um array com o nome da referencia as colunas(no caso cd_setor) e as operações permitidas (onDelete e onUpdate como self::CASCADE).

class DoFuncionario extends Zend_Db_Table_Abstract
{
	protected $_name = "tb_funcionario";

	protected $_primary = "cd_funcionario";

	protected $_referenceMap    = array(
			'DoSetor' => array(
				'columns'           => array('cd_setor'),
				'refTableClass'     => 'DoSetor',
				'refColumns'        => array('cd_setor'),
				'onDelete'          => self::CASCADE,
				'onUpdate'          => self::CASCADE
				)
			);
}

arquivo: DoFuncionario.php

Exibição dos Dados

Quando a consulta é pelo o objeto dependente usa-se doObjeto->FindParentRow(“nome_obj_relacao”), no nosso caso seleciona-se o
Funcionário e depois procura-se o seu Setor.
Quando é o objeto que possue dependentes usa-se doObjeto->findDoObjeto_Dependente, no nosso caso coloa-se o Funcionário
como parametro na chamada do método.

echo "Listando por Cliente:";
$funcionario = $doFuncionario->fetchAll();
foreach($funcionario as $currentFuncionario)
{
    $setor = $currentFuncionario->FindParentRow("DoSetor");

    echo "{$currentFuncionario->nm_funcionario} - {$setor->nm_setor}\n";
}

echo "Listando por Setor:";
$setor= $doSetor->fetchAll();
foreach($setor as $currentSetor)
{
    $funcionario = $currentSetor->findDoFuncionario();

    foreach($funcionario as $currentFuncionario)
    {
        echo "{$currentSetor->nm_setor} - {$currentFuncionario->nm_funcionario}\n";
    }
}

arquivo Ex0001Controller.php

Excluindo Registro

Ao apagar um setor, apaga-se todos os funcionários relacionados.

echo "Apagando setor: Financeiro.";
$setor = $doSetor->find($cd_setor);
$setor = $setor->current();
$setor->delete();

arquivo Ex0001Controller.php

Conclusão

A vantagem de usar este tipo de dependência é o fato de não se preocupar com a integridade dos dados, e dexando a responsabilidade para o ZF.
Quando ocorrerem relacionamentos mais complexos, estas referências facilitam a implementação das regras de negócio.

Thursday, August 16th, 2007 | Author: admin

Estes exemplos visam a demosntrações práticas de objetos e metodologias usados no Zend Framework (de acordo com meus estudos).

É exigido um nível intermediário em PHP e iniciante em Zend Framework e uma boa noção de programação Orientada a Objeto. Caso você não tenha tais conhecimentos, use ferramentas de busca, tutorias, fórums listas etc, para manter-se atualizado.

Exemplos:

Arquivo

zeddemo_v0.1.tar.bz2

Desconpacte o arquivo zeddemo_vXXX.tar.bzip2 na sua pasta de hosts (para windows use o 7Zip)

ex. /var/www/zeddemo/www (no Linux).

CONFIGURANDO APACHE

Verifique se o mod_rewrite esta habilitado no seu APACHE, caso nao esteja, procure na sua ferramenta de pesquisa como que instala.
Primeiramente crie o host no seu APACHE.

<VirtualHost *>
    ServerName zeddemo.meudominio.com
    DocumentRoot /var/www/zeddemo/html
</VirtualHost>

Edite o arquivo hosts (/etc/hosts no Linux) adicionando:

127.0.0.1 zeddemo.meudominio.com

CONFIGURANDO MYSQL

Crie um usuário e senha no seu banco de dados:
usuário: zeddemo
senha: zeddemo

No diretório suport temos o arquivo db_demo.sql que é a base de dados aonde irei colocar os exemplos que mexem com base de dados.

Use o seguinte comando para importar diretamente a base:

linux:/var/www/zeddemo/www/suport# mysql -u zeddemo --password=zeddemo < db_demo.sql

Ou use a ferramenta que achar conveniente para importar o arquivo db_demo.sql.

Baixando o ZF

Acesse a página http://framework.zend.com/download .
E baixe a última versão do ZendFramework

Descompacte o arquivo e copie a pasta ZendFrameworkXXXX/library/Zend
para a sua estrutura /var/www/zeddemo/library .

DIVIRTA-SE

Espero estar contribuindo para o aumento do seu conhecimento e quem sabe trocar algumas idéias.
Que você seja promovido a Diretor e lembre de mim quando abrir uma oportunidade ^^ .

Qualquer dúvida entre em contato com o mantedor deste código.

Alexandre F. Martins - uzedmaster@gmail.com
http://www.uzed.com.br/zed