Versão 2.0.4

A versão 2.0.4 está disponível para download no seguinte link : http://code.google.com/p/sifraphp/downloads/list . Esta versão conta com muitas novidades :

  • Agora trabalha com URL amigáveis  -  é preciso o mod_rewrite
  • Utiliza o PDO na camada Model
  • Provê uma interface para helpers ( util para uso nas views )
  • Implementa uma interface de configuração, dessa forma é possivel realizar as configurações dos aplicativos através de arquivos .ini
  • Disponibiliza uma interface de configuração - para criar classes de configuração personalizadas
  • Disponibiliza uma interface para scripts (usado para a geração de componentes de interface)
  • Conta com um sistema de autenticação
  • Controle de exceções com geração de logs
  • Provê suporte ao desenvolvimento baseado em componentes

Uma das novidades é que agora é possível configurar a aplicação através de arquivos INI. Abaixo segue uma tabela explicativa dos parâmetros aceitáveis.



conf_database
Sessão de configuração de banco de dados
rdbms
Servidor de banco de dados. Este podem ser : mysql, sqlite, firebird. Mssql, sybase, pgsql, dblib
host
Localização do servidor de banco de dados, ou pasta onde estará localizado o arquivo de dados (sqlite)
Port
Porta do servidor de banco de dados. Não é necessário para rdbms sqlite
User
Usuário do servidor. Não é necessário para rdbms sqlite
Pass
Senha de usuário. Não é necessário para rdbms sqlite
Database
Base de dados que será utilizado na aplicação. No caso de rdbms sqlite é necessário informar o nome do arquivo
conf_path
Sessão de configuração de localizações
base_application
URI da aplicação
js_path
Nome das pastas de javascripts. O nome definido será subpasta de View
css_path
Nome das pastas de folhas de estilo. O nome definido será subpastas de View
img_path
Nome das pastas de imagens. O nome definido será subpasta de View
module_path
Nome da pasta de repositório de módulos
component_path
Localização da pasta raiz dos componentes
helper_path
Localização da pasta raiz dos helpers
conf_router
Sessão de configuração do roteador
default_module
Nome do modulo inicial da aplicação
default_controller
Nome do controlador padrão
default_action
Nome da ação padrão
template_name
Extensão dos arquivos de template
log_in_file
Se 1 as exceções serão lançadas em arquivos de log
log_path
Localização da pasta de logs


A conf_authetication, sessão de autenticação segue a sintaxe abaixo:
Para melhor visualização a tabela segue algumas diretivas :
Nome do usuário será representado por nuser.
Nome do módulo será representado por nmod
Nome do controlador será representado por nctr
Nome da ação será representado por nact


*.nuser = allow
NomeDoModulo acessível a todos os usuários
Nuser.nmod = allow
Nuser tem acesso completo ao modulo nmod
Nuser.nmod.nctr = allow
Nuser tem acessa completo ao controlador nctr
Nuser.nmod.nctr.nact = allow

Nuser acessa apenas a acao nact pertencente ao controlador nctr do modulo nmod



Após a configuração inicial devemos ler as configuração acima. Utilizamos as classes de configuração provida pelo SifraPHP para tal tarefa. Existem 5 classes de configuração, são elas :

  1. Nucleo_Configuration_Authentication → lê a sessão conf_authentication
  2. Nucleo_Configuration_Database → lê a sessão conf_database
  3. Nucleo_Configuration_Path → lê a sessão conf_path
  4. Nucleo_Configuration_Router → lê a sessão conf_router
  5. Nucleo_Configuration_Configuration → lê todas as sessões


As classes de configuração acima implementam uma interface chamada Nucleo_Configuration. Esta interface descreve um único método chamado setConfiguration que recebe como parâmetro uma string com o nome do arquivo de configuração.
Todas essas sessões podem estar localizada no mesmo arquivo de configuração ou em arquivos distintos.

Além disso foi removido os módulos de UI, estes serão a partir de agora, distribuídos como componentes. Em breve estarei disponibilizando alguns componentes como exemplo.
Outra novidade refere-se a camada View que pode contar com helpers, estes helpers devem implementar a interface Nucleo_Helper, com o método publico execute($params). Os helpers ajudam com tarefas comuns e bem específicos para a camada view.


Em breve estarei postando como utilizar alguns recursos !

Obrigado e até a próxima !

Próximas novidades em breve

Está em desenvolvimento a release 2.0.4, que por sinal introduz muitas novidades a fim de facilitar o desenvolvimento. A mudança mais radical será na camada model, além dessa camada alguns métodos do framework serão descontinuados – foram substituídos por métodos estáticos - e haverá possibilidade de configuração através de arquivos externos ini (arquivos de configuracao).

Na camada Model a biblioteca ADODB5 foi substituída pela PDO (PHP data objects) pois se tornou extensão nativa do PHP 5. Ela provê métodos de performance superior à ADODB5, porém não suporta o mapeamento de objetos em banco de dados relacionais. A tarefa ORM deverá ser realizada pelo próprio desenvolvedor ou há liberdade de escolha entre diversos frameworks capazes de realizar tal tarefa , como exemplo Doctrine.

Por existir constante preocupação com a velocidade de resposta, houve várias mudanças em algumas tarefas. A chamada de métodos estáticos é 4 vezes mais rápida do que a chamada de métodos não estáticos, por isso a substituição desses, entretanto,as tarefas (ou chamadas) atuais ainda continuam funcionando, isso implica que aplicativos construídas utilizando velhos métodos estarão compatíveis.

Para chamar por exemplo uma fábrica de controladores, não será preciso instanciar um objeto Nucleo_Controller_Factory, basta chamar pelo método estático Nucleo_Controller_Factory::dispatch().

Também será possível configurar o banco de dados, localização de pastas, chamadas padrões e regras de autenticação, em arquivos externos ao framework, isso contribui para garantir a segurança. Outra novidade é na classe Nucleo_Registry_Registry, nela foi inserido um método estático load capaz de ler um arquivo de configuração para setar constantes. Por exemplo, se o programa fizer uso de variáveis globais você terá que inseri-las através do método set ou load.

Se for utilizado o set(), você deverá inicia-las no próprio código, mas caso haja grande quantidade de variáveis predefinida , que podem mudar dependendo do trabalho, é possível declara-las em arquivos externos. Dessa forma se houver a necessidade de manutenção em seus aplicativos não será necessário manipular o código, apenas arquivos de configuração de variáveis globais.

Em breve (provavelmente dia 15 de Outubro) a próxima versão estará disponível , até lá mais novidades serão postadas !