CI-Scaffold: Adicionado driver para PostgreSQL

Posted by Gabriel Verta | Posted in CodeIgniter, PHP | Posted on 04-02-2010-05-2008

3

Como já dito no post de apresentação do CI-Scaffold, ele é um gerador de CRUD para CodeIgniter.

Adicionamos uma nova versão no googlecode do ci-scaffold, o ci-scaffold 0.91, agora com suporte a banco de dados PostgreSQL.

É isso ai ;)

CI-Scaffold: Gerador de CRUD para Code Igniter

Posted by Gabriel Verta | Posted in CodeIgniter, PHP | Posted on 26-01-2010-05-2008

11

Ola pessoal, criamos um projeto no Google Code chamado ci-scaffold, que é um gerador de código PHP para o framework CodeIgniter, já mencionado em posts anteriores, que gera os arquivos básicos para o CRUD de uma tabela do banco de dados funcionar.

Como utilizar

Devemos baixar a última versão do ci-scaffold no google code. Extrair o arquivo zip dentro da pasta libraries em system/application dentro da estrutura do CodeIgniter (system/application/libraries).
Após extrair os arquivos passamos a ter uma biblioteca que pode ser utilizada pelos controllers do CodeIgniter da seguinte forma:

$this->load->library('scaffold');
$this->scaffold->generate();

Desta forma você não precisa usar um controller com nome especifico, dificultando assim a qualquer usuário de executar este sem autorização do criador, por exemplo, podemos utilizar um controller chamado Abracadabra e assim a uri seria /abracadabra, o que dificilmente um usuário normal tentaria acessar. Lembrando ainda que não é recomendável deixar o scaffolder funcionando em ambiente de produção, ou seja, deve-se utilizar ele para criação dos arquivos apenas em ambiente de desenvolvimento e não enviá-lo para produção.
Vamos a um exemplo de uma classe para utilizar o scaffolder:

<?php
 
class Admin extends Controller {
    public function __construct(){
        parent::__construct();
    }
    public function index(){
        $this->load->library('scaffold');
        $this->scaffold->generate();
    }
}

Este controller irá chamar o scaffolder em /admin, apresentando a tela a seguir, que irá listar todas as tabelas do banco de dados:

Tela Ci-Scaffold

Após selecionar a tabela, e acionar o botão Submit, serão gerados todos os arquivos para o CRUD funcionar com a estrutura como segue no exemplo:

Ci-Scaffold gerando arquivos

No meu caso escolhi a tabela “estado”, e os arquivos gerados foram os seguintes:

Considere que estamos dentro da pasta system/application

  • controllers/estados.php
  • models/modelestado.php
  • views/estado/delete.php
  • views/estado/form.php
  • views/estado/list.php
  • views/estado/save.php

A partir deste momento temos novas uris:

  • /estados: lista os estados do banco de dados
  • /estados/create: cria um novo estado a partir dos dados do formulário
  • /estados/edit/1: edit o estado com id 1 a partir dos dados do formulário
  • /estados/delete/1: deleta o estado com id 1 a partir da confirmação no formulário

O ci-scaffold utiliza de templates para criação dos arquivos, que podem ser modificados para a que a geração do crud seja feita de forma a atingir melhor suas necessidades. Lembrando ainda que o scaffold é uma forma de agilizar a codificação, e que você pode se basear nos arquivos gerados do crud para mudar o código após gerado para adicionar regras específicas ao seu negócio.

Obs.: Nesta primeira versão, apenas o banco MySQL é suportado, porém o sistema já está preparado para receber drivers de outros bancos suportados pelo CodeIgniter.

É isso ai! ;)

Visualização de erros no php

Posted by Reimberg | Posted in PHP | Posted on 05-11-2009-05-2008

0

Hoje vamos falar um pouco sobre a utilização da função error_reporting do php.

Error_reporting é um parâmetro de configuração do php que seta quais níveis de erros serão reportados pela aplicação.

A função error_reporting() é utilizada para alterar esta diretiva em tempo de execução de scripts.

O parâmetro passado para a função é o nível do “report”, este pode ser um valor inteiro ou uma constante pré-definida.

// setando para exibir erros usando constante
error_reporting(E_ERROR);
 
// setando para exibir erros usando bitmask
error_reporting(1);

Apesar de os dois tipos serem suportados recomenda-se que os desenvolvedores utilizem as constantes, para manter a compatibilidade entre as versões do php, pois com a inserção de novos níveis de erros o intervalo de inteiros aumenta, com isso, o recurso não terá o efeito esperado.

Os principais níveis são:

E_ERROR

Erros fatais em tempo de execução. Estes indicam erros que não podem ser recuperados, como problemas de alocação de memória. A execução do script é interrompida.

E_WARNING
Avisos em tempo de execução (erros não fatais). A execução do script não é interrompida.

E_NOTICE
Notícia em tempo de execução. Indica que o script encontrou alguma coisa que pode indicar um erro, mas que também possa acontecer durante a execução normal do script.

E_ALL
Todos erros e avisos.

Para exemplificar, vamos criar uma pequena função que irá receber um texto e exibí-lo na tela:

function exibir($texto){
	echo $texto;
}

Agora vamos colocar o nível E_ERROR e chamar a função por um nome incorreto:

// setando o nível de erro:
error_reporting(E_ERROR);
 
// chamando a função com o nome errado
// ira exibir a mensagem "Fatal error: Call to undefined function exibe()..."
exibe();

Agora vamos colocar o nível E_WARNING e chamar a função por um nome sem passar nenhum parâmetro:

// setando o nível de erro:
error_reporting(E_WARNING);
 
// chamando a função sem passar parâmetro
// irá exibir a mensagem "Warning: Missing argument 1 for exibir()..."
exibir();

Agora vamos colocar o nível E_NOTICE e chamar a função por um nome sem passar nenhum parâmetro:

// setando o nível de erro:
error_reporting(E_NOTICE);
 
// chamando a função sem passar parâmetro
// irá exibir a mensagem "Notice: Undefined variable: texto..."
exibir();

Agora vamos colocar o nível E_ALL e chamar a função por um nome sem passar nenhum parâmetro:

// setando o nível de erro:
error_reporting(E_ALL);
 
// chamando a função sem passar parâmetro
// serão exibidas todas as mensagens, nesse caso as de WARNING e NOTICE:
// "Warning: Missing argument 1 for exibir()..."
// "Notice: Undefined variable: texto..."
exibir();

Combinando Níveis
A função error_reporting permite ainda que sejam combinados os níveis de erro que serão reportados utilizando os operadores bit-a-bit.

Exemplos:

Operador OU (|)

// configurando para exibir apenas warnings e notices
error_reporting(E_WARNING | E_NOTICE);
 
// chamando a função sem passar parâmetro
// serão exibidas apenas as mensagens de WARNING e NOTICE:
// "Warning: Missing argument 1 for exibir()..."
// "Notice: Undefined variable: texto..."
exibir();

Operador XOR (^)

// configurando para exibir apenas warnings e notices
error_reporting(E_ALL ^ E_NOTICE);
 
// chamando a função sem passar parâmetro
// serão exibidas todas as mensagens, exceto as de NOTICE, neste caso apenas as de WARNING:
// "Warning: Missing argument 1 for exibir()..."
exibir();