You are on page 1of 55

Manual de Usurio

verso C4GE
NEOS PHP FRAMEWORK Manual de Usurio C4GE Pagina1 de 55

ndice
Introduo ________________________________________________________________ 3 Estrutura __________________________________________________________________ 5 Blocos Estruturais __________________________________________________________ 6 Outros Conceitos __________________________________________________________ 8 Carregamento Automtico __________________________________________________ 13 Instalao ________________________________________________________________ 15 Pr-requisitos ____________________________________________________________ 15 Aplicao de Exemplo ______________________________________________________ 15 Compartilhado ____________________________________________________________ 16 Criando uma Aplicao _____________________________________________________ 19 Automaticamente _________________________________________________________ 19 Manualmente___________________________________________________________ _ 20 Usando Banco de Dados ___________________________________________________ 26 Funes e Objetos _________________________________________________________ 28 Objetos________________________________________________________________ 28 Mtodos _______________________________________________________________ _ 29 Sqlite DB ________________________________________________________________ 38 Expansibilidade ___________________________________________________________ 43 Templates _______________________________________________________________ _ 44 Estrutura dos Templates ____________________________________________________ 44 NEOS Tags ______________________________________________________________ _ 45 Tags ___________________________________________________________________ 45 Atributos _______________________________________________________________ _ 46 NeosTags Pack ___________________________________________________________ 47 Controle de Verso ________________________________________________________ 50 Sobre o Manual ___________________________________________________________ 51 Contatos _______________________________________________________________ _ 51 Publicao _____________________________________________________________ _ 51

Introduo
O PHPevoluiumuito nessas ltimas verses. Tanto que pensar em apenas atualizar o NEOS seria uma heresia; um desrespeito; um pecado!
NEOS PHP FRAMEWORK Manual de Usurio C4GE Pagina2 de 55

Ento, botamos a mo na massa e comeamos do zero. A verso atual do NEOS totalmente diferente da verso anterior (definida como verso 1), porm, no nos afastamos da filosofia inicial que orientou a criao deste framework. Vale lembrar que essa reformulao no exclusividade do NEOS. Um excelente trabalho est sendo feito pela equipe do Symfony 2 e outros como o CodeIgniter 2 e o prprio Zend, tambm na verso 2. Parece que estamos entrando numa segunda fase no mundo dos frameworks. Muito por culpa da evoluo do PHP e outra pela prpria necessidade de atualizao das antigas ideias e arquiteturas, como j criticamos na verso anterior deste manual. Como dissemos na edio anterior, o NEOS no se fixa em uma estrutura rgida, mas, procura seguir as melhores e mais atualizadas tendencias na programao PHP e programao para a web (html, css, javascripts, etc). Para que isso funcione sem traumas nas possveis restruturaes do framework (como est acontecendo agora nesta verso 2), o framework pensado como uma ferramenta para o PHPno o contrrio. e

Se voc no conhece a linguagem PHP, pare de ler o manual agora mesmo. Desista de usar o NEOS por enquanto e comece a aprender PHP.
O NEOS apenas um framework; um quadro de trabalho ou grupo de regras que definem um ambiente de trabalho, sugerido ao programador e dependente do pleno conhecimento da linguagem. Favorecendo o intercambio de cdigos, experincias, reaproveitamento de cdigos (etc), entre os seus utilizadores.

Encorajamos o programador, desde a primeira verso, a usar o maior nmero de recursos nativos da linguagem (PDO, APC, PHAR...) em detrimento a utilizao de solues externas que podem trazer uma srie de problemas de compatibilidade, continuidade, atualizao, necessidade de aprendizado extra, etc. Por outro lado, o NEOS no tem uma estrutura fechada, permitindo que qualquer recurso criado at mesmo para outro framework possa ser adicionado sem muita dificuldade, favorecendo assim o reaproveitamento de praticamente qualquer tipo de cdigo (controller, model, views, mdulos, helpers, librarys). Mesmo considerando tudo o que foi dito acima, um programador iniciante no ter dificuldade na utilizao desta nova verso do NEOS. Pelo contrrio, ter um excelente contato com o que h de mais atual em programao na linguagem PHP. E isso de forma simples e natural; sem trauma.

NEOS PHP FRAMEWORK

Manual de Usurio C4GE

Pagina3 de 55

ATENO
Criar uma seo / captulo : Direto ao Ponto Mostrar como fazer o NEOS funcionar, download da verso correta, motar um hello world complicado (com acesso ao banco de dados indert, query e update), neosTags para exibir o contedo da varivel, e view fatiada (header + body + footer).

Outros captulos sero tratados os detalhes o aprofundamento.

Estrutura baseada em autoload (SPL) e namespace. As FASES do sistema: Construct (classe Main); Mount montagem da aplicao; Control deteco, carregamento e inicializao do controlller; Produce docFactory classe de produo do material de sada (html, xml, pdf, ajax, etc); Dismount Trmino do sistema.

Um sistema de template pode substituir o Produce, pegando os dados na classe docFactory ($varViews, $varValues algo assim).

Usar o Word para produzir o manual usando um template tipo REVISTA!

NEOS PHP FRAMEWORK

Manual de Usurio C4GE

Pagina4 de 55

Estrutura
Antes de comearmos a usar o framework, vamos conhecer melhor a sua estrutura. O NEOS pode ser dividido em trs blocos distintos: Core, Aplicao e Webroot.

NEOS PHP FRAMEWORK

Manual de Usurio C4GE

Pagina5 de 55

Devido grande flexibilidade esperada de um framework, esses blocos podem estar reunidos em uma nica pasta ou espalhados em locais diferentes sem qualquer prejuzo para a aplicao desenvolvida.

Blocos Estruturais
Vamos ver o que cada um desses blocos representa para o funcionamento do framework.

Core
O core o bloco que contm o ncleo do NEOS.

O arquivo core.php o corao do NEOS. Este arquivo contm os mecanismos responsveis pela inteligncia do framework; o ncleo onde os demais recursos sero acoplados para formar uma estrutura de tamanho praticamente infinito, com todos os recursos requeridos pela aplicao. E isto feito de forma dinmica mediante a necessidade atual da aplicao. assim que, dependendo dos recursos requeridos no momento, o NEOS pode variar de tamanho, requerendo somente o que estritamente necessrio em recursos (memria, processamento...) do sistema onde est rodando. No Core tambm encontramos, organizados em subpastas, os recursos (ou bibliotecas) para a expanso do core, bibliotecas do prprio desenvolvedor, bibliotecas de terceiros (baixados do site do NEOS, por exemplo), helpers (funes de ajuda) alm dos conectores para banco de dados. Todas as bibliotecas (classes) do ncleo, para efeito de organizao, devem comear com o prefixo NEOS; como em neos_Template, neos_Status ou neos_Erros, por exemplo. As demais podem ter qualquer configurao ou conveno para os nomes com uma nica restrio: o arquivo que contenha uma determinada classe ou funo deve ter seu nome igualado ao nome do recurso contido e em letras minsculas, seguido da extenso .php. Por exemplo: um arquivo que contenha a classe Email deve ser nomeado com email.php, ou seja, o nome do arquivo deve ser o mesmo nome do recurso que contem porm com os caracteres em letras minsculas, seguido pela extenso .php, mesmo em sistemas Unix (Linux). O Core do NEOS deve preferencialmente ser instalado em uma fora do root do servidor pasta web (por questo de segurana) e referenciado pelo include_path do PHP para evitar um eventual acesso indesejado aos scripts do ncleo. Apesar disso, nada impede que o Core seja instalado numa subpasta da prpria aplicao ou ainda misturado aos recursos do bloco Aplicao, como veremos mais a frente.

NEOS PHP FRAMEWORK

Manual de Usurio C4GE

Pagina6 de 55

Aplicao
Toda a lgica PHP da aplicao deve ser encontrada neste bloco. O NEOS usa o modelo de desenvolvimento MVC, onde uma aplicao estar dividida em trs partes: Model: View : Control: modelagem de transao (de dados); a parte visual e de integrao com o usurio da aplicao; toda a lgica de controle da aplicao.

Na prtica, para no aprofundarmos no assunto e considerando que existem muitas referencias sobre o modelo MVC disponveis,Modelcriamos os objetos que formam os modelos de no transao da aplicao; todos os procedimentos de acesso aos bancos de dados.

O View contm as visualizaes que a aplicao mostrar ao usurio do site (aplicao). basicamente composto por arquivos html, porm alguns desenvolvedores costumam dot-los de alguma lgica (PHP) de apoio. A extenso dos arquivos deve ser .html para que o NEOS reconhea e carregue corretamente. Voc poder usar as neosTagspara carregar dados, blocos, mdulos, (etc) principalmente pelos designers que no tem conhecimento em programao e, apesar da extenso html, comandos do PHP funcionaro normalmente nestes arquivos. No Controller controlamos a aplicao. Aqui voc encontrar toda a lgica (PHP) usada para , controlar a aplicao, usando os recursos dos models e views alm das bibliotecas, helpers e outros recursos disponveis.

No NEOS, diferentemente de outros frameworks, o Controller extends a classe principal do ncleo. Isso significa que o Controller e , conseqentemente o programador, tem o controle tota do framework estendido; o Controller passa a ser o ncleo do sistema. Isso parece lgico, no ? Mas, at hoje, no entendi porque outros frameworks no procedem assim!

Neste bloco do Framework (Aplicao) destacamos o arquivo config.php. Este arquivo, como o prprio nome indica, trs todas as configuraes do framework. Nele determinamos entre outras coisas, o layout do framework, os dados de conexo aos bancos de dados, etc.

O bloco Core do NEOS contem um arquivo de configurao padro para todas as aplicaes em um determinado servidor. Neste caso, onde se estaria usando o bloco Core de forma compartilhada para todas as aplicaes, um arquivo de configurao em cada aplicao dever conter apenas os itens especficos desta aplicao; a aplicao corrente. Como exemplo, se precisamos configurar um banco de dados especfico para uma aplicao, somente o item banco de dados dever ser descrito no arquivo de configurao da aplicao. Abra o arquivo config.php para um maior entendimento de seus parmetros ou leia a publicao Configurando o NEOS que pode ser baixada do site do framework.

Este bloco do NEOS pode conter tambm, organizados em pastas, bibliotecas para expanso do NEOS, bibliotecas de recursos diversos (classes), funes de apoio (helpers) e outros recursos que o desenvolvedor julgar necessrio (voc pode criar diretrios e arquivos sem restrio). Estes recursos dispostos neste bloco, sero exclusivos desta aplicao. O core do NEOS, quando estiver adicionando algum recurso ao ncleo do framework (como conectores de banco de dados, classes de apoio, funes, etc.) primeiro procurar nas pastas da aplicao.
NEOS PHP FRAMEWORK Manual de Usurio C4GE Pagina7 de 55

No encontrando o recurso solicitado, procurar nas pastas do ncleo (Core). O mais correto colocar todos os recursos (classes, etc.) no Core do framework; ficando disponvel para todas as aplicaes.

Webroot
Este bloco contm os arquivos externos, de acesso pblico. Aqui voc deve encontrar as imagens, arquivos Flash (swf), folhas de estilos (CSS), arquivos de JavaScript e outros similares. Neste bloco temos, como elemento predominante, um arquivo ndex.php que funciona como bootstrap do framework. Isso significa que qualquer solicitao feita por um usurio (ou link) ser re-direcionada para este arquivo pelo servidor web, conforme configurado num arquivo .htaccess, usando o mdulo rewrite do servidor web. Se a solicitao for de um dos recursos listados acima (imagens, javascript, etc.) o servidor apenas atende a solicitao, enviando o arquivo solicitado. Caso contrrio, atravs do arquivo ndex.php a solicitao passa para o framework que, depois de decodificar a solicitao, chamar o controller adequado. Se voc nunca usou um framework antes talvez no esteja entendendo como isso acontece. Pense que, em um formato normal, aqui teramos um script para cada funo da sua aplicao. Mas no caso do framework, o arquivo index.php funciona como um funil! Todas as solicitaes so redirecionadas (mdulo rewrite e arquivo .htaccess) para este arquivo. O que o framework faz detectar qual ao foi solicitada e, ento, carregar o controller correspondente. Normalmente, no final do processo, o framework retorna uma view (ou outra ao de sada...).

Outros Conceitos
Alm da estrutura organizacional do framework, estudada no tpico anterior, precisamos conhecer mais alguns conceitos importantes do funcionamento do NEOS. Vamos aprender como o NEOS trabalha com as URLs e tambm das vrias possibilidades de organizao dos diretrios e da localizao dos blocos estruturais em seus projetos. O NEOS, devido a sua grande flexibilidade, nos proporciona uma variedade de LAYOUTs que visam atender as necessidades especficas de cada projeto.

Url
O NEOS usa um formato de acesso em suas urls baseado em segmentos. Isto facilita os mecanismos de busca e ao prprio usurio em detrimento ao habitual "query string". Note que tanto o arquivo index.php quanto o arquivo .htaccess com o mdulo rewrite so igualmente importantes neste processo. Se o seu servidor no tiver um mdulo de redirecionamento (rewrite) o funcionamento correto do framework no ocorrer. Voc ser obrigado a incluir o index.php nas solicitaes de pginas ao servidor.

NEOS PHP FRAMEWORK

Manual de Usurio C4GE

Pagina8 de 55

Uma url como http://meusite/minha-pagina teria que ser digitada assim: http://meusite/index.php/minha-pagina. Isso no deve te preocupar pois, atualmente, praticamente todos os servidores possuem algum recurso de redirecionamento compatvel com o rewrite do Apache. Numa url os segmentos sero interpretados pelo NEOS da seguinte maneira: Dada a url: http://meusite/controller/funo/argumento/argumento2/argu... Os seguintes seguimentos podem ser notados: controller: nome do controller que ser carregado pelo NEOS; funo: mtodo ou funo do controller que dever ser invocado; argumentos ou dados passados ao mtodo invocado.

argumentos :

Se voc preferir as query strings o NEOS tambm conseguir funcionar da forma esperada. Dada a url: http://meusite/index.php?c=controller&f=funo&arg=argumentos... c: f: esta varivel (GET) passar o nome do Controller; esta varivel (GET) passar o mtodo ou funo do controller;

arg : ou qualquer outra varivel (GET) ser passada ao mtodo invocado, como um array.

O nome das variveis podem ser trocadas no arquivo config.php, nos itens $cfg->get_ctrl e $cfg->get_func. O NEOS ainda pode funcionar com variveis passadas por POST nas mesmas condies descritas acima. Neste caso, quando a url no contiver seguimentos e no forem encontradas as variveis em formato GET, o NEOS tentar encontrar o controller, funo e argumentos usando o mtodo POST. Para configurar o nome das variveis modifique os itens $cfg>post_ctrl e $cfg->post_func. Em todos os casos, o NEOS indicar o mtodo usado para a decodificao da url na varivel $neos_metodo.

Mascaramento
Voc pode modificar uma solicitao de endereamento, seja por URL, GET ou POST, usando mascaramentos. Para criar um mascaramento crie um novo item de configurao com a seguinte sintaxe:

NEOS PHP FRAMEWORK

Manual de Usurio C4GE

Pagina9 de 55

$cfg->mask [ 'comando' ] 'args...' ); Onde: comando : controller : function : args :

array( 'controller' , 'function' , 'args' ,

O primeiro segmento da URL ou o controller em GET e POST; O controller de destino; A funo de destino; Pseudos argumentos passados a funo de destino;

Alm dos pseudos argumentos, todos os demais segmentos da URL (e variveis GET ou POST quando este for o mtodo usado) sero passados em seguida funo de destino.

Com o mascaramento podemos criar rotas especficas sem a necessidade de usar a convencional indicao de controller+function+args. Como exemplo vamos considerar a seguinte mscara:
$cfg->mask ['manual'] = array ( 'manuals' , 'select_book' );

Ter o seguinte efeito:


http://www.meu_site.com/manual/javascript //ser interpretado como: http://www.meu_site.com/manuals/select_book/javascript

Lembre-se que esta apenas uma representao figurativa na verdade no ser feito um redirecionamento da url, mas sim, um roteamento para o controller e funo configurados.

Views Estticas

O NEOS aceita um tipo de endereamento esttico quando voc no precisa criar um controller para apenas chamar uma view, onde no se pretenda a execuo de qualquer cdigo PHP: uma view esttica. Neste caso a view apenas um arquivo html simples que pode conter, por exemplo, um texto com a licena de uso do site, uma tela de abertura, uma tela (simples) de login, um formulrio , etc. Para usar views estticas voc deve criar um diretrio com o nome statics dentro do seu diretrio de views. Salve suas views estticas neste diretrio com a extenso .html.

Para acessar uma view esttica, o usurio do site deve digitar o nome completo da view esttica com ou sem a extenso que pode ser .html, .htm, .php ou .neos. O nome da view no deve ser igual ao de um controller da sua aplicao pois o NEOS dar prioridade ao controller. Finalmente, para que a view seja exibida, acesse o arquivo config.php da sua aplicao e inclua (ou modifique) o seguinte tem:

NEOS PHP FRAMEWORK

Manual de Usurio C4GE

Pagina10 de 55

$cfg->static_view = true;

Lembre-se:

1. Views estticas no podem conter comandos do PHP e neosTags. Estes no funcionaro e ainda sero enviados ao navegador do visitante sem alteraes. 2. Por segurana o NEOS no habilita as statics views por default..

NameSpace
Bem, no se trata realmente de namespace como se usa no PHP. Acontece que, para evitar conflitos entre os recursos intrnsecos do framework e de sua aplicao, resolvemos prefixar todas as variveis, librarys, helpers, (etc) e demais recursos do NEOS com a palavra neos. Ento, evite usar em sua aplicao variveis, constantes, classes e outros recursos comeados com neos.... A menos que pretenda se referir aos recursos do core! Para exemplificar, a classe de status do framework se chama NEOS_status e no Status como era de se esperar. A varivel que contm as definies das views a serem carregadas no final da execuo do NEOS se chama $_neosViews. Neste ltimo exemplo vemos uma outra questo: reservamos o caractere _ (underline ou sublinhado) para as funes de apoio (helpers) do ncleo (core) do NEOS e variveis (propriedades) da superClasse (sugesto do Dutra. Este caractere tambm usado, Filipe ) dentro de uma classe controller, para indicar uma funo restrita; que no pode ser chamada externamente (por URL, GET ou POST). Resumindo: a menos que queira referenciar recursos do Core do NEOS, no inicie suas variveis, constantes, classes, funes (etc) com a palavra neos ou _neos. Ainda, em suas classes controller, no inicie uma funo com o caracter _, a menos que queira que o NEOS ignore esta funo nas requisies de acesso externo (URL segmentos, GET ou POST).

Layouts

Considerando os vrios blocos estruturais descritos anteriormente e a capacidade de configurao do NEOS, podemos organizar o framework em vrios layouts distintos, conforme a necessidade do projeto e a preferncia do desenvolvedor. Entre vrias possibilidades, destacamos trs layouts:

NEOS PHP FRAMEWORK

Manual de Usurio C4GE

Pagina11 de 55

O layout A tem todos os blocos, descritos nos tpicos anteriores, misturados na raiz do site. Este layout mais indicado para aqueles programadores no acostumados com frameworks ou para aplicaes mais simples. A vantagem que a visualizao dos recursos utilizados imediata. A desvantagem com relao a segurana, principalmente por deixar expostos os arquivos do core. Se voc instalar o NEOS com o ncleo (core) compartilhado, as pastas library, helpers e os arquivos core.php e config.php no sero necessrios. Estaro na pasta compartilhada do ncleo. Neste caso vivel, do ponto de vista da segurana, a utilizao deste layout.

No layout B temos o bloco Webroot disponvel na raiz do site (como no caso anterior) porm, o bloco Aplicao e o bloco Core esto misturados na pasta neos. Se voc estiver usando o core compartilhado (em outra pasta), somente o bloco Aplicao deve ficar na pasta neos.

O layout C o mais organizado. O bloco Webroot esta na pasta web. O arquivo .htaccess, na raiz do site (na parte inferior da imagem), direciona as requisies para a pasta web. O bloco Aplicao est na pasta app. O Bloco Core est na pasta neos. Caso voc tenha instalado o core do NEOS em uma pasta separada, compartilhada, basta eliminar a pasta neos, mostrada na imagem ao lado.

NEOS PHP FRAMEWORK

Manual de Usurio C4GE

Pagina12 de 55

Voc est livre para usar um dos layouts propostos ou criar seus prprios layouts. Voc pode, ainda, modificar o instalador do NEOS para acrescentar seus layouts. Basicamente o que voc precisa criar uma estrutura de diretrios adequada e modificar o arquivo config.php, indicando a localizao dos diversos componentes do NEOS (controllers, models, views, core, etc). Para entendermos melhor as possibilidades de estruturao de uma aplicao com o NEOS, vemos abaixo uma aplicao extremamente simples, que nem mesmo organiza seus recursos em pastas. Estamos considerando, neste caso, que a aplicao esta utilizando uma instalao compartilhada core do NEOS. Ento, somente os blocos Aplicao e Webroot, esto do representados.

Na Imagem ao lado vemos: 1. Arquivos das views. Foi usado um prefixo view para melhorar a organizao; 2. Controller, model e o arquivo index (bootstrap). Pode ser usado um prefixo para organizar os controllers e models; 3. Outros recursos do web site; 4. Arquivo de segurana e redirecionamento do servidor. Para evitar um acesso indevido (direto) aos arquivos dos controllers e models, coloque o seguinte no inicio de cada arquivo:
<?php if (!defined ('URL')) exit (); ?>

Para mais detalhes sobre layouts e configuraes leia a publicao Configurando o NEOS que pode ser baixada do site do NEOS.

Carregamento Automtico
Voc no precisa se preocupar em carregar CLASSES e FUNES quando est programando com o NEOS. Diferentemente de outros frameworks, o NEOS possui um carregador automtico que procura e carrega as classes e funes (helpers) quando forem solicitadas no script.

Tomamos como exemplo o seguinte caso: Eu tenho uma funo que uso muito em meus scripts e que faz uma srie de limpezas em dados recebidos de um formulrio ou de uma requisio em Ajax. A funo _escape(), ento, foi armazenada como um helper, na pasta Helpers de minha instalao do Core. Para acessar essa funo eu seguir os seguintes passos: deveria

NEOS PHP FRAMEWORK

Manual de Usurio C4GE

Pagina13 de 55

1. Antes de usar a funo, eu precisaria saber onde est o arquivo com a funo; 2. Incluir o arquivo com um comando include; 3. Finalmente chamar a funo.
If ( file_exists ('caminho-para-o-arquivo-com-o-recurso-desejado') ) { include 'caminho-para-o-arquivo-com-o-recurso-desejado'; $variavel = _escape( $_POST['dados'] ); }

Com o NEOS voc precisa apenas chamar a funo, mesmo que no tenha sido includa. O NEOS inclui para voc automaticamente:
$variavel = $this->_escape( $_POST['dados'] );

Alm de funes tambm possvel carregar classes de forma automtica. Para isso procedemos normalmente, como se todas as classes de que precisamos j estivessem disponveis (includas).
//carregando a classe 'Mail' e chamando o mtodo 'enviar()' $mail = new Mail(); $mail->enviar($argumentos);

Entre a primeira e a segunda linha, o NEOS localiza o arquivo que contenha a classe solicitada, carrega-o e processa a prxima linha. O programador no precisa se preocupar com mais nada. Isso muito interessante tambm para a optimizao do consumo de recursos do servidor: O NEOS trabalha de forma inteligente, adicionando somente o que realmente necessrio e no momento oportuno.

O carregador automtico procura novas funes na pasta de helpers de sua aplicao e em seguida na pasta Helpers do core. Para as classes, primeiro o NEOS procura o recurso na pasta Library (ou o nome que voc configurou para esta pasta) da aplicao. Se no encontrar procura na pasta Library do core. Assim, possvel que uma funo ou classe seja alterada para atender a uma especificao da aplicao corrente; o recurso alterado ser armazenado na pasta correspondente da aplicao e ser chamado prioritariamente. Alternativamente voc pode carregar os helpers e classes da forma antiga, usando os mtodos apropriados, mostrados na seo Funes e Objetos .

NEOS PHP FRAMEWORK

Manual de Usurio C4GE

Pagina14 de 55

Instalao
O NEOS muito fcil de instalar. Os parmetros de configurao (pr-configurados) devem estar de acordo com a maioria dos servidores e aplicaes mais comuns. s descompactar e usar!

Pr-requisitos
O NEOS foi otimizado para funcionar com os seguintes itens: Servidor web com mdulo rewrite(Apache ou com Isapi_Rewrite IIS ); PHP 5.2ou superior (5.3 para usar verses PHAR) ; Banco de dados atualizado(Oracle, Mysql, Postgres, etc) ; Dependendo das necessidades de sua aplicao, algumas bibliotecas e mdulos extras devem ser ativados. Tanto para o PHP quanto para o Servidor Web (Zlib, oci8_11g, MySql, gd2...).

Tambm baseado nas necessidades de seu projeto, novas bibliotecas de expanso para o NEOS podem ser baixadas do site do NEOS ou de qualquer outro repositrio de classes espalhados pela web (ex.: www.phpclasses.orgVoc pode usar at mesmo bibliotecas de ). outros framework, se estes estiverem instalados em seu servidor. Para a maioria dos casos uma pequena modificao pode resolver algum problema de compatibilidade (raro!). O Ncleo ou Core do NEOS pode ser instalado em uma pasta (diretrio) qualquer em seu servidor. Este Core ser acessado por todas as aplicaes que usarem o NEOS como framework. Existe ainda a possibilidade de instalao do NEOS para uma nica aplicao. Neste caso os arquivos que compem o core do NEOS podem ser alojados em uma pasta especfica, em meio a organizao de diretrios da aplicao (como visto no tpico Layout , anteriormente).

Aplicao de Exemplo
Entre os arquivos para download no site, voc encontrar uma aplicao de exemplo do NEOS (app.zip). Esta aplicao pode ser usada em conjunto com a vdeo-aula uma Criando Aplicao do Zero para estudar o funcionamento do framework e tambm para iniciar sua , prpria aplicao, pois contm todos os recursos necessrios para o funcionamento do framework. Ateno, porm, para a verso do CORE (A6EN001) que pode ser ligeiramente diferente (antiga) da verso tratada por este manual (A92D001).

NEOS PHP FRAMEWORK

Manual de Usurio C4GE

Pagina15 de 55

Para instalar, apenas descompacte o arquivo em seu servidor web e rode o site com o seu navegador. A aplicao de exemplo usa um banco de dados MySql para armazenar alguns dados na verdade apenas para mostrar como o NEOS acessa bancos de dados. Ento, crie um banco de dados com as seguintes especificaes:
Usurio: Senha: 'neos'; '123456';

Agora use o script de instalao contido na raiz do site (neos.sql) para criar o banco e a tabela Se a aplicao no conseguir acessar seu banco de dados, verifique as configuraes no arquivo site1/app/config.php.

Voc pode configurar a aplicao de exemplo para outro banco de dados, outro usurio e senha e at mesmo outro tipo de banco de dados (ex.: Oracle) bastando reconfigurar o arquivo sute1/app/config.php.

Compartilhado
1. Baixe o arquivo core.zip; descompacte-o em uma pasta qualquer do sistema de arquivo do servidor. No precisa ser na pasta root do servidor web. Voc tambm poder optar pelo arquivo core.phar, mais compacto e seguro pois usa o modelo de Arquivo do PHP (PHAR). Neste ltimo caso no necessrio descompactar basta colocar o arquivo dentro da pasta escolhida. 2. Abra o arquivo php.ini do seu servidor, localize o item include_path e inclua a pasta criada anteriormente. Por exemplo, se a pasta tiver o nome de Framework e estiver usando um servidor Windows seria assim:
include_path = ".;c:\Framework\"

Para a instalao de um nico Core, que ser compartilhado por todas as aplicaes no mesmo servidor, siga os passos abaixo:

Veja mais detalhes sobre include_path na documentao do PHP ou no prprio arquivo php.ini.

Caso voc pretenda fazer referncia direta ao core do NEOS, sem usar o include_path, pode ignorar o passo 2. O include_path facilita as referencias aos componentes do core do NEOS pois, desta forma, no precisamos saber exatamente onde o NEOS est instalado, cada vez que acessarmos seus recursos. Por exemplo: Vamos supor que configuramos o 'include_path' com: ' C:\Web\Frameworks\PHP\'.

NEOS PHP FRAMEWORK

Manual de Usurio C4GE

Pagina16 de 55

Com o include_path: Sem o include_path:

include 'NEOS/core.php'; include 'C:\Web\Frameworks\PHP\NEOS\core.php';

Ateno! Para evitar confuso com um possvel arquivo com um mesmo nome recomendvel sempre incluir uma subpasta quando for usar o 'include_path'. Veja este quadro (baseado no exemplo anterior):
C:\Web\Frameworks\PHP\NEOS\core.php //para arquivo PHAR C:\Web\Frameworks\PHP\NEOS\core.neos //No php.ini, configuramos o include_path:
include_path = .;C:\Web\Frameworks\PHP\;phar://C:/Web/Frameworks/PHP/NEOS/core.neos

Quando for usar...


include 'NEOS/core.php'; //para arquivo PHAR include 'core.php';

Arquivos PHAR
Este um tipo de arquivo nativo do PHP que possui algumas vantagens em comparao aos scripts convencionais. PHAR significa PHP Archive e pode ser usado em verso TAR, ZIP ou como um script convencional (texto editvel).

Depois de muitos testes com esse tipo de arquivo pudemos notar que a sua utilizao traz, por um lado, um consumo levemente maior de memria e, por outro lado, uma enorme compensao em performance. Ambos os 'efeitos' causados pelo mesmo motivo: trata-se de um arquivo comprimido e que precisa ser 'descomprimido' na memria do servidor. Mas, acontece que o PHP muito inteligente no gerenciamento de memria e essa ocupao a mais de memria compensada pelo fato de o PHP reaproveitar o arquivo que j esta na memria para todas as futuras solicitaes feitas ao mesmo arquivo. Ou seja, o PHP descompacta somente uma vez e mantm os arquivos na memria para futuras utilizaes. Usando os arquivos na memria (que muito mais rpida que o HD), estes rodam muito mais rapidamente que os scripts convencionais.

Alm da velocidade, ganhamos em segurana e espao no HD. Um arquivo TAR, ZIPADO (gzip tgz) ocupa menos espao em disco e no pode ser modificado para fazer uma alterao em qualquer arquivo compactado preciso recriar todo o arquivo PHAR.

NEOS PHP FRAMEWORK

Manual de Usurio C4GE

Pagina17 de 55

Depois de muitos testes optamos por usar a compactao Tar+Gzip, tornando o arquivo 'no executvel'. Em nossos testes, num servidor bem modesto em termos de memria e processamento, o resultado foi muito positivo e a diferena em consumo de recursos foi praticamente nula em relao a verso convencional do core do NEOS. Por esses e outros motivos recomendamos o uso de arquivos PHAR no apenas no core do NEOS, mas tambm em seus arquivos PHP da aplicao claro que somente na fase de 'produo', quando sua aplicao passar por todos os teste e realmente no precisar mais de modificaes.

Se voc no conhece o tipo PHAR do PHP leia o manual do PHP e tenha certeza que sua verso seja a (ou superior) do PHP. Arquivos PHAR funcionam bem a partir da verso 5.3 5.2 (com a extenso PHP_PHAR ativada), porm, para manipular os arquivos (criar, editar, etc) ser melhor usar a verso 5.3 em diante. A partir da verso 5.3 o PHP usa os arquivos PHAR nativamente sem a necessidade de ativar extenses. Alm disso, as extenses (bibliotecas) zlib ; e bzip2 podem ser teis para os trabalhos de compresso/descompresso dos arquivos. At o momento da edio deste manual, tenho visto artigos na internet informando que sites como o Facebook e Yahoo utilizam arquivos PHAR em seus servidores por motivos de velocidade e segurana.

NEOS PHP FRAMEWORK

Manual de Usurio C4GE

Pagina18 de 55

Criando um a Aplicao
Baixar a aplicao de exemplo e us-la para iniciar uma aplicao uma forma rpida de comear a trabalhar com o NEOS. Principalmente se estiver pretendendo usar o NEOS em apenas uma aplicao em seu servidor web.

Mas, se pretende instalar o framework para vrias aplicaes (ou sites) em um mesmo servidor, voc ter duas opes. Voc pode usar o Instalador Automtico (somente a partir da verso A9xx ) para a criao de suas aplicaes ou criar os arquivos e pastas manualmente. Compartilhando o mesmo ncleo, as aplicaes tero somente os blocos Web e Aplicao, estudados anteriormente, tornando a criao manual um processo vivel. Vamos ver, nos prximos tpicos, como proceder em ambos os casos.

Automaticamente
Como j mencionado anteriormente, o NEOS possui uma rotina de instalao automtica de novas aplicaes que est disponvel somente a partir da verso diante; e pode ser A9xx em usada da seguinte forma: 1. Crie uma pasta para a sua nova aplicao no root do servidor web. Esta pasta deve ter acesso completo de escrita e leitura ou 0777 em servidoresCaso contrrio o . Unix instalador no conseguir criar e copiar os arquivos necessrios e apresentar uma mensagem de erro. No final da instalao, recomendo deixar esta pasta (e subpastas) com as restries normais. Vamos assumir que o nome da pasta criada seja site . 2. Nesta pasta crie um arquivo ndex.php ( ...tambm com permisso 0777 ou rw... ). Use um editor qualquer para adicionar o seguinte contedo;
<?php @$cfg->app = dirname(__FILE__); Include NEOS/core.php;

Se voc ignorou item 2 da instalao do ncleo do NEOS ou seja, no configurou o o include_path, use o contedo mostrado abaixo para o arquivo index.php. Onde 'caminho-da-instalao' deve ser substitudo pelo caminho completo da pasta onde esta o Core (compartilhado) do NEOS.

NEOS PHP FRAMEWORK

Manual de Usurio C4GE

Pagina19 de 55

<?php @$cfg->app = dirname(__FILE__); Include caminho-da-instalao/core.php;

3. Acesse a pasta criada no primeiro passo usando o seu navegador. Se voc no configurou um virtual host para a aplicao, estar digitando algo parecido com isso em seu navegador: http://localhost/site/ . Localhost deve ser substitudo pelo endereo adequado em seu servidor ( http://192.168.3.34/site/ ex.: ). 4. Uma tela da Ajuda Dinmica do NEOS aparecer informando controller inicial no que o foi encontradoIsso ocorre porque ainda no criamos um controller de inicializao para . a aplicao. Procure nesta tela uma referencia ao CORE SERVICEe clique neste link. Voc tem que configurar o acesso ($cfg->admin_url, $cfg->admin_user, etc) no arquivo config.php do Core do NEOS, antes (veja o quadro abaixo!). Por segurana este item vem comentado... 5. Faa login e siga as instrues que aparecero na tela para definir os parmetros necessrios; 6. Ao clicar sobre o boto Salvar o instalador criar os arquivos e pastas necessrios. Ento, ao acessar novamente (recarregar a pgina ou clicar no link apropriado...) a aplicao recm criada aparecer. Por questo de segurana, configure a rota (url), o controller, usurio e senha para acesso ao CORE SERVICE no arquivo configuraes do de Core do NEOS. A senha deve ser criptografada em MD5. Descomente o tem $cfg->admin_url para tornar este servio disponvel.
$cfg->admin_user $cfg->admin_pass $cfg->admin_url $cfg->admin_controller = = = = 'neosAdmin'; MD5('123456'); 'neoscoreadmin'; 'control.php';

Lembre-se: Sua verso do NEOS deve ser igual ou superior apara usar o CORE A9xx SERVICE.

Manualmente
Criar manualmente sua aplicao um pouco mais trabalhoso que o processo anterior. Porm, no ser to difcil assim, depois de entendermos cada arquivo e pastas necessrios ao funcionamento de uma aplicao com o NEOS. Para este tpico vamos usar o layout C como padro e vamos considerar que o bloco Core esteja numa pasta externa (compartilhado) e que voc tenha configurado o include_path seu PHP para acessar os arquivos do NEOS. do

NEOS PHP FRAMEWORK

Manual de Usurio C4GE

Pagina20 de 55

Diretrios
Criamos neste passo uma nova pasta no diretrio root de seu servidor web com o nome de site. Em seguida, criamos mais duas subpastas: app e web. Respectivamente para os blocos Aplicao e Webroot. Dentro da pasta app criamos as subpastas controllers, models e views. Dentro da pasta web criamos as pastas necessrias para a nossa aplicao: imagens, css, javascript, etc. Todos estes nomes de pasta so apenas sugestes. Voc pode usar o nome que quiser, no esquecendo de configurar os nomes no arquivo config.php da sua aplicao. Os nomes sugeridos so defaults do NEOS no precisaremos mexer na configurao. Deve ficar parecido com isto:

Arquivos .htaccess
Vamos criar agora os arquivos .htaccess para prover segurana e redirecionamentos adequados para cada pasta. Na pasta principal do site (raiz) o arquivo tem o seguinte contedo:
<IfModule mod_rewrite.c> RewriteEngine On #se estiver usando um virtual host, descomente o item abaixo #RewriteBase / RewriteRule ^$ web/ [L] RewriteRule (.*) web/$1 [L] </IfModule>

Dentro da pasta app, crie um arquivo .htaccess com o seguinte contedo:


Deny From All

Na pasta web, crie outro arquivo .htaccess com o contedo:

NEOS PHP FRAMEWORK

Manual de Usurio C4GE

Pagina21 de 55

<IfModule mod_rewrite.c> RewriteEngine On #se estiver usando um virtual host, descomente o item abaixo #RewriteBase /web/ RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php/$1 [QSA,L] </IfModule>

Aplicao (controller e view)


Vamos criar um controller e trs views bem simples, somente para servir de exemplo. Crie um arquivo com o nome de inicial.php na pasta app/controllers cole o seguinte e contedo:
<?php 1 2 3 3 4 4 4 } } class Inicial extends NEOS { function index() { $this->_viewVar('titulo','Site em Construo'); $this->_viewVar('mensagem','Para mais informaes acesse www.neophp.tk'); $this->_view('head'); $this->_view('site'); $this->_view('footer');

Vamos entender o contedo deste arquivo: 1. A classe Inicial deve estender (extends) a superclasse NEOS; 2. A funo default neste caso (index); 3. A funo _viewVar () cria uma varivel somente disponvel para as views; 4. A funo _view() carrega as views indicadas. Crie tambm trs arquivos na pasta app/views com os seguintes nomes e contedos: head.html:

NEOS PHP FRAMEWORK

Manual de Usurio C4GE

Pagina22 de 55

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title><neos var="titulo"/></title> <link href="<neos:url />css/css.css" rel="stylesheet" type="text/css" /> </head> <body>

Na sexta linha vemos uma tag XHTML especfica do NEOS: <neos var=titulo />. Durante a renderizao da view, o NEOS substituir esta tag pelo contedo da varivel indicada. O NEOS possui uma variedade de neosTags que podem ser muito til para o desenvolvimento do design das views e principalmente quando se esta usando uma de template classe . A tag <neos:url/> (stima linha) tambm uma e contm o endereo base do site. neosTag Neste exemplo usaremos o arquivo CSS no ; esta linha somente para exemplificar o uso da neosTag e pode ser eliminada. site.html:
<div class="pagina"> <h1>Site em Construo!</h1> <neos var="mensagem" style="color:#F00; font-weight:bold; fontsize:12px" /> </div>

footer.html:
</body> </html>

Webroot
Por ltimo, vamos criar o nosso bootstrap. Para isso criamos um arquivo com o nome de index.php na pasta web. Colocamos o seguinte contedo:

NEOS PHP FRAMEWORK

Manual de Usurio C4GE

Pagina23 de 55

<?php @$cfg->app = '../app/'; @$cfg->web = dirname(__FILE__); include 'NEOS/core.php';

Vamos analisar cada linha deste arquivo: 1. Configuramos a localizao da pasta app (bloco Aplicao); 2. Indicamos a localizao da pasta web (bloco Webroot); 3. Incluimos o CORE do NEOS (bloco Core). Lembre-se que estamos usando o include_path! voc no quiser (puder), pode indicar a localizao do CORE Se diretamente. Agora j temos o mnimo para a nossa aplicao funcionar! Abra o seu navegador e digite:
http://localhost/site/

Comono foi indicado um controller e funo na url digitada, o NEOS assume o default. Voc tambm poderia ter feito a seleo diretamente na url de duas formas (como vimos nos tpicos anteriores):
http://localhost/site/inicial/index ou http://localhost/site/index.php?c=inicial&f=index

No controller foram chamadas trs views ou trs partes (fatiamento) que formaro o arquivo de visualizao final. Porm, possvel fazer isso de outra forma: usando neosTags. Desta forma o fatiamento ficar a cargo do designer da pgina html; o que mais comum. No controller localize as seguintes linhas:
$this->_view('head'); $this->_view('site'); $this->_view('footer');

Retire as linhas que chamam as views head e footer; deixe somente a principal (site). Veja:
$this->_view('site');

Na view site modifiqueo arquivo site.html, acrescentando neosTags para carregamento de as views (subviews). O arquivo ficar assim:

NEOS PHP FRAMEWORK

Manual de Usurio C4GE

Pagina24 de 55

site.html:
<neos type="view" name="head" /> <div class="pagina"> <h1>Site em Construo!</h1> <neos var="mensagem" style="color:#F00; font-weight:bold; fontsize:12px" /> </div> <neos type="view" name="footer" />

As demais views no precisam ser alteradas e o resultado visual ser o mesmo.

NEOS PHP FRAMEWORK

Manual de Usurio C4GE

Pagina25 de 55

Usando Banco de Dados


Para usarmos banco de dados numa aplicao necessrio apenas configurar os dados de acesso ao banco de dados e indicar o gerenciador. Para a aplicao criada no tpico anterior podemos proceder da seguinte forma:

Configurando o Banco de Dados

Se voc j configurou corretamente o arquivo config.php global que se encontra na pasta do Core do NEOS, no preciso fazer mais nada neste passo. Porm, se quiser fazer uma configurao especfica para essa aplicao, crie o arquivo app/config.php e adicione as linhas de configurao do seu banco de dados por exemplo:

NEOS PHP FRAMEWORK

Manual de Usurio C4GE

Pagina26 de 55

<?php //Setando o Banco de Dados default $cfg->default->db = 'mysql'; //Configuraes do Banco de Dados $cfg->db->mysql->driver = 'mysql'; $cfg->db->mysql->host = 'localhost'; $cfg->db->mysql->user = 'neos'; $cfg->db->mysql->pass = '123456'; $cfg->db->mysql->database = 'site'; $cfg->db->mysql->char = 'latin1_swedish_ci'; //Outro Banco usando PDO (NEOS_DBO) //opcional: $cfg->db->my_pdo->driver = 'pdo'; $cfg->db->my_pdo->dsn = 'mysql:host=localhost;dbname=site'; $cfg->db->my_pdo->user = 'neos'; $cfg->db->my_pdo->pass = '123456';

Fazendo uma Consulta


Para fazermos uma simples consulta, podemos usar o comando do NEOS. Este _db() comando pode ser chamado dentro de um controller, um model ou qualquer classe carregada pelo NEOS. Para exemplificar podemos analisar o seguinte trecho de cdigo:
1 2 3 if($q=_db('SELECT * FROM TABELA');) { foreach($q as $row) { echo 'Campo = '.$row->CAMPO; } } else { echo 'A consulta resultou vazia'; }

1. Nesta linha fazemos uma consulta simples ao banco de dados e a varivel $q armazena o resultado. A classe de conexo padro do NEOS retorna o resultado como um array contendo um objeto para cada campo da tabela consultada. O ndice do array indexa cada linha do resultado. Fazemos uma checagem (if) para saber se houve algum resultado; 2. Uma funo foreach faz a varredura dos resultados; 3. Mostramos o contedo do campo de nome CAMPO; Uma forma mais simples e direta, caso eu tenha certeza de que a consulta retornar algo, seria assim:

NEOS PHP FRAMEWORK

Manual de Usurio C4GE

Pagina27 de 55

1 2 3

$q=_db('SELECT * FROM TABELA'); echo 'Campo = '.$q[ 0 ]->CAMPO; echo 'Campo = '.$q[ n ]->CAMPO;

1. Como no exemplo acima, fazemos a consulta. 1. Mostramos o resultado para o primeiro CAMPO. 2. Mostramos os demais CAMPOS ( n = 1, 2, 3, etc. ) . Podemos saber quantos resultados a consulta retornou da seguinte forma:
1 echo count ( $q ); //ou 2 echo $this->_db->num_rows;

1. Podemos usar o comando count do PHP ou; 2. Obtemos o mesmo valor consultando o conector de banco de dados. Obtenha mais informaes sobre bancos de dados consultando o tpico sobre o _db() . mtodo

NEOS PHP FRAMEWORK

Manual de Usurio C4GE

Pagina28 de 55

Funes e Objetos
Um pequeno nmero de funes e alguns objetos podem ser usados pelo desenvolvedor para acessar e controlar alguns parmetros do framework. O NEOS foi projetado para ser o mais simples possvel, assim sendo, utiliza este conjunto bem resumido de comandos prprios, deixando o mais para os comandos da prpria linguagem PHP. Isto tambm economiza muitas pginas de manual, melhorando a curva de aprendizado do framework.

Objetos
Configurao
Todas as configuraes necessrias ao funcionamento do NEOS podem ser encontradas no objeto com o nome $cfg. Este objeto pode ser acessado de trs formas: Diretamente usando a sintaxe $this->_cfg, de dentro de um controller; Fazendo o objeto virar global com a sintaxe global $cfg; no inicio de uma funo ou mtodo de uma classe qualquer; Usando o mtodo global _neos('cfg'), que retorna o objeto em qualquer parte do NEOS (classes, controllers, models, etc).

Exemplos:
//no controller $this->_cfg->app = 'C:/www/site/app/'; //usando o comando global global $cfg; $cfg->app = 'C:/www/site/app/'; //usando o mtodo global _neos('cfg')->app = 'C:/www/site/app/';

Para uma melhor compreenso dos dados configurados neste objeto consulte a publicao Configurando o NEOS, que pode ser baixada do site do NEOS.

NEOS PHP FRAMEWORK

Manual de Usurio C4GE

Pagina29 de 55

Mtodos
Abaixo temos uma listagem dos comandos especficos do NEOS Framework:
Mtodos da SuperClasse _view(); _viewVar(); _helper(); _model(); _controller(); Mtodos Globais _db(); _goto(); _load(); _helper(); _setmark(); _modulo(); _pegatag();

Mtodos da SuperClasse
Os mtodos da Super classe ( classe NEOS ) s podem ser chamados a partir do controller, usando a sintaxe: $this->nome-do-mtodo( parmetros );

Mtodo_view()
O mtodo _view indica qual view o NEOS dever carregar na sada; no final da execuo do script. O mtodo pode ser chamado mais de uma vez, conforme o nmero de views que se queira mostrar. Sintaxe: $this->_view( nome-do-arquivo, variveis, nome-da-view, template, retorna ); nome-do-arquivo caminho e nome do arquivo da view a partir do diretrio padro das : views ($cfg->view); no preciso indicar a extenso ('.html'). variveis: Um array, cujos ndices correspondem ao nome de uma varivel disponvel dentro do escopo da prpria view. nome-da-view voc pode atribuir um nome para essa view usando este parmetro; : caso contrrio, ser atribuda uma numerao a partir de zero (0). O nome muito

NEOS PHP FRAMEWORK

Manual de Usurio C4GE

Pagina30 de 55

importante quando trabalhamos com templates, para indicar em qual lugar dever a view ser mostrada. template: string com o nome do template desejado. retorna: se voc quiser apenas obter o contedo do arquivo da view (sem visualizar a view) indique o valor TRUE para este parmetro. Somente o parmetro nome-doarquivo ser considerado nenhum processamento ser feito na view. O mtodo retornar FALSE em caso de erro e disparar uma mensagem de erro para o mecanismo de tratamento de erro habilitado no momento. Exemplos:
$this->_view ('splash');

A view splash ser mostrada no final da execuo do NEOS.


$view = $this->_view ('splash','','','',TRUE);

O contedo da view (arquivo) ser carregado na varivel $view.


$dados['titulo']='Titulo do Site'; $this->_view ('splash', $dados, 'Splash', 'MeuTemplate');

A view splash ser mostrada; a varivel titulo (se existir esta varivel na view) ser substituda por Titulo do Site; o nome da view para o NEOS ser Splash e usar o template MeuTemplate. O NEOSno far o processamento imediato da view durante a chamada a este mtodo. O mtodo _view apenas empilha os dados relativos a view indicada para que, no final da execuo do core, o mecanismo de renderizao do NEOS ( normal ou do template ) faa o procedimento adequado.

Mtodo_viewVar()
Use este mtodo para indicar variveis para todas ou uma especfica view. Sintaxe: $this->_viewVar( varivel, valor, nome-da-view ); varivel: nome da varivel como aparecer para a view (ou views). Tambm pode ser usado um array aos moldes do mtodo _view. valor : o contedo da varivel indicada no parmetro anterior. Se pretender usar um array para o parmetro anterior, este item deve ser ignorado ou preenchido com uma string vazia ().

NEOS PHP FRAMEWORK

Manual de Usurio C4GE

Pagina31 de 55

view : o nome da view setado no mtodo _view. Caso no seja indicado, esta varivel estar disponvel para todas as views. Exemplos:
$this->_viewVar (titulo, Titulo do Site);

Disponibiliza a varivel titulo para todas as views carregadas. Seu valor (ou contedo) ser Titulo do site.
$this->_viewVar (titulo, Titulo do Site, header);

A varivel 'titulo' estar disponvel somente para a view nomeada como header;
$dados['titulo']='Titulo do Site'; $dados['mensagem']='Este site est em construo!'; $this->_viewVar( $dados );

As variveis armazenadas no array $dados estaro disponveis para todas as views.


$dados[titulo]=Titulo do Site; $dados[mensagem']=Este site est em construo!; $this->_viewVar( $dados, ' ', 'header' );

O mesmo do exemplo anterior, porm, a varivel ser 'visvel' somente na view 'header'.

Mtodo _helper()
Carrega uma funo armazenada em um arquivo helper (de ajuda) e disponibiliza no contexto do controller atual. Sintaxe: $this->_helper( nome-do-arquivo, argumentos, *pack ); nome-do-arquivo indique o nome do arquivo que contenha a funo desejada e que : esteja armazenada na pasta apropriada para os helpers. argumentos opcionalmente voc pode passar argumentos para o helper usando este : campo (array) e obter a sada do helper chamado. *pack:os helpers podem ser agrupados (como o caso das neosTags) em um 'pack' ou subpasta. Se for o caso, deve ser indicado o pack aqui. *PACK s funcionar na chamada ao mtodo de forma global, usando a sintaxe: _helper(); (sem o $this->).

NEOS PHP FRAMEWORK

Manual de Usurio C4GE

Pagina32 de 55

Depois de chamar este mtodo a funo estar disponvel e pode ser acessada com a seguinte sintaxe: $this->nome-da-funo( argumentos ); Este mtodo a forma tradicional para adicionar um helper ao sistema. Veja tambm a forma automtica que deve ser usada preferencialmente . Voc tambm pode organizar seus helpers em pastas dentro da pasta principal de helpers (do core ou aplicao). Para acessar as funes dentro dessas pastas (packs) voc pode: indicar o pack no argumento pack da chamada ao mtodo _helper; chamar o pack diretamente na chamada funo, usando a sintaxe: _pack_funo. Use o caractere _ (underline) como separador de diretrio. Exemplos: $this->_helper( '_cpf ' , $args , ' neosvalidate' ); $this->_helper( ' _neosvalidate_cpf ' , $args ); $this->_neosvalidate_cpf( $args ); Dois packs j esto includos no Core do NEOS: neosTags e neosValidate. Voc pode criar muitos outros packs e funes para seu prprio uso e tambm para compartilhar com a comunidade do NEOS, dispondo para download no site.

Mtodo _model()
Para o NEOS os models so classes comuns, porm, para facilitar a organizao de seu projeto, os models devem ser armazenados na pasta especfica para os models ($cfg->model). Sintaxe: $model = $this->_model( nome-do-model , retorna ); $model: Se retorna for FALSE (ou no for indicada), o model, indicado em nomedo-model ser retornado nesta varivel. Caso contrrio retorna TRUE. nome-do-arquivo nome do arquivo onde esta armazenado o model. A extenso no : precisa ser indicada. retorna: Se for FALSE ou no estiver indicado (default = false) o mtodo retorna o model. Caso contrrio retornar TRUE e o model indicado ser criado na varivel model da superclasse.

Exemplos:

NEOS PHP FRAMEWORK

Manual de Usurio C4GE

Pagina33 de 55

$meu_model = $this->_model( meu_model ); $meu_model->meu_metodo( argumentos ... );

Primeiro carregamos o model meu_model. Em seguida chamamos o mtodo meu_metodo da classe model recm adicionada.
$this->_model (meu_model, TRUE ); $this->model->meu_metodo( argumentos ... );

O mesmo exemplo acima porm agora o NEOS far referencia ao model atravs da varivel model. Neste caso, somente um model pode ser carregado por vez.

Mtodo _controller()
Pode parecer estranho a principio mas, o NEOS, admite o carregamento de mais de um controller ao mesmo tempo. Isto se d pela forma aberta como o NEOS trabalha com sua estrutura. Para o NEOS uma classe apenas uma classe, no importando se estamos tratando de um controller, um model ou qualquer outra classe. Isso tambm amplia as possibilidades de criao de controllers, dando ao desenvolvedor a opo de criar controllers com mtodos (funes) genricos, utilizveis para outros controllers. importante notar que um controller normal deve entender a superclasse (class Controller extends NEOS {...});controller um j de apoio NO deve estender a superclasse. Sintaxe: $this->_controller( nome-do-controller ); nome-do-controllerindica o nome do arquivo que contenha o controller de apoio : desejado sem a necessidade de incluir a extenso. Convencionalmente, o nome do arquivo deve ser o mesmo nome do controller que contiver, em letras minsculas e com a extenso .php. Exemplo:
$this->_controller( Utils ); $this->Utils->mtodo(argumentos...);

O NEOS carregar o arquivo que contenha o controller Utils e inicializar a classe automaticamente. Em seguida possvel acessar os recursos do controller Utils diretamente.

Mtodos Globais
Estes mtodos esto disponveis em qualquer escopo do NEOS. Isto inclui controllers, models, helpers ou qualquer classe usada por seu script.

NEOS PHP FRAMEWORK

Manual de Usurio C4GE

Pagina34 de 55

Mtodo _db()
Este o mtodo usado para acessar e carregar uma classe de conexo a banco de dados. No NEOS a classe de conexo a banco de dados somente ser carregada se este mtodo for invocado. Sintaxe:
$objeto = $this->_db( parmetro 1, parmetro 2, parmetro 3, mtodo, conector ;)

$objeto: Toda consulta a banco de dados deve retornar um objeto com os dados no formato especfico da funo indicada (consulte a documentao do conector). Caso no retorne dados ter o valor FALSE. parmetros dependendo do mtodo invocado, pode ser de qualquer tipo PHP vlido : (string, array, objeto, etc.). mtodo: mtodo da classe de conexo ao banco de dados indicada (ex.: query, insert, update, etc). O mtodo default query. conector: alias (apelido) da conexo configurada previamente. Caso no seja indicado ser usado o default, indicado no arquivo de configurao do NEOS como $cfg->default>db.

Para os conectores de banco de dados padres do NEOS, estes retornaro um array contendo objetos, como resultado de uma consulta. Este array ter um ndice numrico representando cada linha do resultado (no caso de um SELECT). Para cada linha o array conter objetos para cada campo da tabela, cujo nome ser exatamente o nome do campo, na tabela. Exemplos:
$q = _db(SELECT * FROM TABELA);

A varivel $q receber um objeto correspondendo ao resultado da consulta. Como o mtodo default o query e o conector definido no config.php, ento neste exemplo estamos invocando uma consulta simples (query) no banco de dados . default
$dados[campo1] = valor1; $dados[campo2] = valor2; $query = _db( TABELA,$dados,'', insert, mysql );

Neste exemplo estamos inserindo dois campos na tabela TABELA usando o conector mysql. Os detalhes de conexo esto no arquivo de configurao do NEOS.

NEOS PHP FRAMEWORK

Manual de Usurio C4GE

Pagina35 de 55

$ret=_db ( SELECT * FROM TABELA ); if($ret){ foreach( $ret as $row){ echo <br />Campo1: .$row->campo1; echo <br />Campo2: .$row->campo2; } }else{ echo No foi possvel mostrar os campos ou a TABELA est vazia!; }

No exemplo acima fazemos uma consulta, checamos se teve algum resultado e em seguida mostramos os resultados. O conector de banco de dados o default, configurado no config.php e a funo default query (consulta simples). O NEOS trs conectores pr-instalados compreendendo funes bsicas para os bancos de dados disponveis, alm da possibilidade de usar o PDO (PHP Data Object) atravs da classe NEOS_DBO. Voc deve instalar suas prprias classes de conexo, baixar do site do NEOS ou usar qualquer classe de terceiros. necessrio somente que a classe usada tenha alguma compatibilidade com as convenes do mtodo _db(). Em ltimo caso voc poder usar sua classe como uma biblioteca comum, chamando os mtodos de sua classe diretamente, sem usar o mtodo _db(). Para cada mtodo (ou funo) disponvel, os parmetros so diferentes. Isso tanto para as classes de conexo do NEOS quanto para a classe NEOS_DBO, que usa o PDO.
Mtodo Parmetro 1 Parmetro 2 Parmetro 3

query insert update *prepare *bind *execute

Script SQL O nome da tabela O nome da tabela Script SQL Nome da pilha de execuo Nome da pilha de execuo

Array com os dados Array com os dados Nome da pilha de execuo Nome do campo -

Clusula WHERE Valor -

Os itens marcados com asterisco (*) esto presentes somente nas classes nativas do NEOS. Para o NEOS_DBO, como esse retorna um objeto PDO, todos os mtodos do PDO estaro disponveis conforme a documentao do PHP (query, bind, prepare, etc). Usar a classe NEOS_DBO mais fcil do que usar o PDO nativo do PHP, pois, est integrada as configuraes do framework e totalmente compatvel com o mtodo _db(), apresentado neste tpico.

NEOS PHP FRAMEWORK

Manual de Usurio C4GE

Pagina36 de 55

Mtodo_goto()
O mtodo _goto muito til quando queremos redirecionar o framework para uma nova localizao (url interna). Sintaxe: _goto ( ulr, mtodo, cdigo-http ) ; ulr : a url de destino. Deve ser um seguimento do prprio site: controller/funo/argumentos.... mtodo: dois mtodos esto disponveis: Reflesh e Location. O ltimo o default. cdigo-http um cdigo de redirecionamento HTTP vlido. O default 302. : Exemplo:
_goto ( controller/start );

O NEOS redireciona para a funo start, do controller controller.


_goto (redirecionado/ofline , reflesh, 301 );

Redireciona para o controller e funo indicados no primeiro parmetro usando o mtodo reflesh e faz um redirecionamento provisrio, indicado pelo cdigo HTTP 301.

Mtodo _load()
a forma no automtica ou direta de chamar uma classe qualquer. Preferencialmente use a forma automtica. Sintaxe: _load(nome-da-classe); nom e-da-classe: nome da classe comeando com letra maiscula. o

Um arquivo que contenha uma classe deve ter seu nome igual ao nome da classe que contm, seguida da extenso .php. A classe deve ter o primeiro caractere em letra maiscula. O mtodo _load() procura a classe nas pastas: models, librarys, drivers, core/Library e core/Library/DB. Nesta ordem.

NEOS PHP FRAMEWORK

Manual de Usurio C4GE

Pagina37 de 55

Mtodo _helper()
O mtodo _helper() a forma no automtica e global (sem o ) de carregar um $this-> helper. Veja o mtodo da superclasse mesmo nome. A principal diferena a de que de podemos chamar este mtodo de qualquer lugar, dentro do framework. Prefira sempre a forma automtica de carregar seus helpers.

Mtodo _setmark()
Durante um processo de depurao dos seus scripts, talvs voc queira tirar amostras de tempo, valor de variveis e arquivos carregados pelo seu framework. Se for esse o caso, use esta funo global para isso. Sintaxe: _setm ark( nom e-da-m arca, arquivos, variveis ); nom e-da-m arca: pode ser dado um nome para ajudar a visualizao dos dados; caso no seja indicado, ser mostrado um nmero seqencial (zero (0) o benchmark inicial do framework, no arquivo do Core do NEOS); arquivos:setado (true) lista os arquivos carregados at o momento, no arquivo de logs (default false); variveis:voc pode indicar uma varivel (ou array) que ter seu valor amostrado neste momento, no script.

Este mtodo depende de dois fatores para funcionar: da classe NEOS_Status (includa no Core do NEOS) e da configurao do tem $cfg->status;

Somente a quantidade de memria, a mmoria de pico e o tempo gasto at este momento sero mostrados na barra de status do framework. Os demais itens (arquivos e variveis) sero indicados num arquivo de log da sua aplicao (se tive configurado o tem $cfg->logfile). Configure o tem $cfg->status com as palavras file e display para, respectivamente gravar um arquivo de log e mostrar os dados na barra de status. Exemplo:

NEOS PHP FRAMEWORK

Manual de Usurio C4GE

Pagina38 de 55

$cfg->status = 'display'; //default do NEOS $cfg->status = 'file'; $cfg->status = 'displayfile'; ou $cfg->status = 'filedisplay';

Mtodo_modulo()
Este um mtodo especifico para trabalhar com CMS e Templates. Quando invocado, chama uma classe especialmente criada para pequenas tarefas de cdigo auxiliar e rotineiro. Para entendermos melhor, imagine um site que possua um menu e este deve aparecer em todas as pginas do site. Normalmente voc deveria criar este menu repetidamente; para cada pgina. Se este menu for esttico, at que no seria uma tarefa difcil! Porm, imagine que seja um menu dinmico, dependente de vrios fatores como: em que pgina est, em que regio, que tipo de usurio, etc. Para facilitar a vida do desenvolvedor e at mesmo melhor a organizao e visualizao do cdigo por outros desenvolvedores, seria melhor separar o menu em um mdulo e fazer a sua programao apenas uma vez. O mtodo _modulo chama, ento, a classe responsvel que retorna o bloco j processado. A classe de mdulo tem total acesso ao framework (mtodos, objetos, configuraes, banco de dados, etc. ).

Este mtodo foi projetado para funcionar com a neosTag modulo e/ou uma classe de template. O uso do mtodo fora deste contexto no tem muito sentido. Sintaxe: $modulo = _modulo( nome-do-modulo , start ); nome-do-modulo nome do arquivo que contenha o mdulo desejado, em letras : minsculas. Este tambm ser o nome do mdulo (classe) para o NEOS. start : Se no for indicado ou for FALSE (default) o NEOS somente carrega o arquivo do mdulo. Se for TRUE o NEOS carrega o arquivo e retorna os valores da funo get() do mdulo. $modulo: recebe o mdulo. Exemplo:

NEOS PHP FRAMEWORK

Manual de Usurio C4GE

Pagina39 de 55

//forma mais complicada de usar... $mod = _modulo ( menu ); echo $mod->get ( argumentos ... );

Para a classe de template default do NEOS, por padro, a funo get do mdulo deve ser a principal. Abaixo, carregamos o mdulo menu e mostramos (echo) diretamente na tela apenas como exemplo.
echo _modulo( ' menu ', TRUE );

O mesmo efeito do exemplo anterior, usando neosTags (no arquivo da view):


<neos type=modulo name=menu />

Mtodo _pegatag()

Este outro mtodo especfico para os mecanismos internos do NEOS no tratamento de views e templates. Este mtodo usado para localizar determinadas TAGs XML nos arquivos de views e templates. Se voc pretende criar sua prpria classe de template este mtodo ser de muita utilidade. Sintaxe: $array = _pegatag ( xhtml, ponteiro, tipo, ; tag ) $array: um array com os dados encontrados: $array [ tamanho : tamanho (bytes) total do contedo xhtml (xml); ] $array [ inicio : ponteiro para o inicio do bloco encontrado; ] $array [ final] : ponteiro para o final do bloco encontrado; $array [ -atributos- ] : todos os atributos da tag;

xhtml : uma string contendo os dados xhtml (ou xml) a ser pesquisado (contedo do arquivo da view). ponteiro: a posio (em bytes) a partir da qual o contedo (xhtml) ser pesquisado. O default o inicio do contedo. tipo : RESERVADO - no usado nesta verso do NEOS. tag : o nome da tag (XML) pesquisada. A tag default neos.

NEOS PHP FRAMEWORK

Manual de Usurio C4GE

Pagina40 de 55

Exemplo:
1 2 3 $xhtml = file_get_contents ( 'arquivo-da-view-a-ser-analisado' ); $array = _pegatag ( $xhtml ); print_r ( $array );

1. Carregamos o contedo do arquivo a ser analisado uma view ou arquivo de template; 2. Chamamos o mtodo _pegatag ; 3. Neste exemplo, usamos o comando print_r do PHP para visualizar o resultado.

Sqlite DB
O NEOS (verses superiores ACxx ) possui um banco de dados sqlite que pode, a opcionalmente, ser usado tanto para guardar as configuraes e dados do framework, quanto para sua aplicao. Para usar o banco de dados necessrio que sua verso do PHP seja maior ou igual a 5.1 e que as extenses PDO e SQLITE sejam habilitadas no arquivo 'php.ini'.

O NEOS procurar o banco de dados (arquivo neos.db) na pasta da aplicao atual ($cfg>app). Caso no encontre tentar criar o banco de dados neste local. Se estiver criando o banco de dados, todas as configuraes default sero copiadas para tabelas deste banco (uma forma quente de reconfigurar o DB). Se o arquivo j existir e tiver as tabelas de configurao do NEOS, estas sero usadas prioritariamente. Mesmo que exista um arquivo config.php para esta aplicao. A vantagem para o NEOS de usar um banco de dados em lugar de um arquivo config.php a de que os dados alterados podem ser recuperados em uma nova sesso. Por outro lado, devese ter um cuidado redobrado para evitar tentativas de acesso indevido (invaso, hackers...); alis, como se teria de qualquer forma, quando se usa um banco de dados. Outra vantagem notria a de que, se sua aplicao precisar de um pequeno banco de dados para manipular um grupo no muito complexo de tabelas, poder usar o banco do NEOS. Com isso, ganhamos duas vezes: no precisamos configurar nada externo (mysql, oracle, password, username, host...) e conseguimos muito mais velocidade para o conjunto. O Sqlite extremamente rpido!

As rotinas que trabalham com o banco de dados do NEOS tem, por conveno, um campo nomeado como 'ID' (que deve existir em todas as tabelas) que serve de "ROWID" para todos os processos (creat, insert, update, etc). Quando estiver criando uma nova tabela no deve indicar um campo com o mesmo nome (ID); o NEOS criar este campo automaticamente e este ser auto-incrementvel. Outra conveno a de se usar caracteres em letras maisculas, tanto para as tabelas quanto para os campos e nunca comear seus nomes com o caractere _ (underline ou sublinhado), reservado no NEOS para as funes globais e da classe NEOS_DB_TABLE.

NEOS PHP FRAMEWORK

Manual de Usurio C4GE

Pagina41 de 55

Voc poder usar comandos do SQLITE convencionais para manipular este banco de dados ou usar os comandos listados abaixo. O NEOS, na inicializao do BD, cria um objeto da classe NEOS_DB_TABLE para cada tabela do SQLITE. Assim, possvel manipular as tabelas de forma O (Orientado a Objeto), diretamente. Para acessar este objeto, use o mtodo _neos(), acessvel em qualquer elemento do NEOS (classes, controllers, models, etc) e que retorna diretamente o objeto. Antes de usar o banco de dados necessrio setar no config.php do do NEOS: CORE
$cfg->use_db = true;

NEOS PHP FRAMEWORK

Manual de Usurio C4GE

Pagina42 de 55

COMANDOS:
CAMPO:
_neos()->TABELA->CAMPO(ID)

Retorna o valor do CAMPO, da linha atual (ID). Se ID no for indicado usar o ultimo ID setado. Onde se v CAMPO deve ser trocado pelo nome real do campo requerido (assim como em TABELA).

UPDATE:
_neos()->TABELA->CAMPO(ID,VALUE)

Muda o valor do CAMPO, da linha ID, para o valor VALUE.

INSERT:
_neos()->TABELA->_insert(ARRAY)

Insere uma nova linha na tabela com os dados do ARRAY ( ARRAY[CAMPO] = VALUE ).

DELETE:
_neos()->TABELA->_delete(ID)

Apaga uma linha da TABELA indicada pelo ID. Se no for indicado, usar o ltimo valor de ID.

CLEAR:
_neos()->TABELA->_clear()

Limpa a TABELA (apaga todos os dados).

NEOS PHP FRAMEWORK

Manual de Usurio C4GE

Pagina43 de 55

LIST:
_neos()->TABELA->_list(LEN,START)

Retorna um array numrico contendo um objeto para cada linha encontrada na TABELA, comeando em START e limitado (em tamanho :P) por LEN.

DESTROY:
_neos()->_destroy(TABELA)

Deleta (destri!) a TABELA.

CREATE:
_neos()->_create(TABELA,CAMPOS)

Cria uma TABELA com os campos indicados em CAMPOS ( CAMPOS[NOME]=VALOR ). Por exemplo:
$array[ 'PRIMEIRO' ] $array[ 'SEGUNDO' ] $array[ 'TERCEIRO' ] = 'varchar(50)'; = 'integer'; = 'text';

_neos()->_create( 'TABLE' , $array );

SQL_QUERY:
_neos()->_query(SQL)

'Roda' a query SQL no banco de dados e retorna um array numrico contendo um objeto para cada linha retornada da consulta. No exemplo, CAMPO o nome do campo retornado; como um objeto:

NEOS PHP FRAMEWORK

Manual de Usurio C4GE

Pagina44 de 55

$q = _neos()->query('SELECT * FROM TABELA'); if($q){ foreach($q as $row){ echo $row->CAMPO; echo $row->CAMPO2; echo ... } }

Lembre-se que esses comandos e funes s funcionam para verses a partir deNas ACxx. verses anteriores o NEOS usar apenas os arquivos config.php.

NEOS PHP FRAMEWORK

Manual de Usurio C4GE

Pagina45 de 55

Expansibilidade
Devido a estrutura modular do NEOS, no possvel dizer que esta seo termina aqui. Uma infinidade de recursos podem ser adicionados: novas funes, objetos, classes, conectores de banco de dados, mdulos de conexo com Google Maps, Facebook, etc... (veja a seo: Caregamento Automtico ). Todos os novos recursos podem ser instalados como helpers ou librarys, sejam os disponibilizados pelos desenvolvedores do NEOS como tambm pelos outros usurios do framework (temos um seo para divulgar os recursos desenvolvidos pelos usurios no site do NEOS). E isto se estende a mdulos, templates e at mesmo a aplicaes inteiras que podem ser instaladas junto a sua aplicao (controllers, models, views, css, javascripts...). A modularidade e expansibilidade do NEOS realmente infinita!

NEOS PHP FRAMEWORK

Manual de Usurio C4GE

Pagina46 de 55

Tem plates

O NEOS trs uma classe de template bem simples, porm, muito eficiente. Voc pode usar esta classe como base para desenvolver sua prpria classe ou substitu-la por uma classe de template qualquer.

Para usar a classe e desenvolver seus templates voc precisa entender algumas convenes da classe:

Estrutura dos Templates


No arquivo de configurao do NEOS encontramos um item que define a localizao dos templates ($cfg->template_path), o template default ($cfg->default->template) e o endereo externo para o template ($cfg->template_url). A pasta contendo os templates deve estar localizada no bloco Webroot do framework e disponvel externamente.

Na figura acima podemos ver que a pasta de templates contem uma srie de subpastas (template, template1, template2, etc). Cada subpasta contm um template diferente.

Dentro da pasta de cada template, encontramos ainda, outras subpastas onde armazenamos os recursos necessrios para o funcionamento do template. Imagens, javascript, folhas de estilo, arquivos flash e muito mais. Quando um template esta configurado ($cfg->default->template) ou voc definiu um template usando o mtodo _view(), o NEOS procurar pelo arquivo index.php da pasta do template selecionado. Se este arquivo no existir o NEOS aciona a classe template padro do NEOS; caso contrrio chama a classe contida neste arquivo que deve ter o nome de template. O mtodo invocado pelo NEOS get_layout(), para um ou outro caso.

Um arquivo nomeado como layout.html deve conter o template, propriamente dito. Este arquivo contm o html bsico (desenvolvido por um designer, por exemplo) contendo, tambm, algumas tags especficas do NEOS: as neosTags. Outros arquivos de layout podem ser criados, porm, a classe de template do NEOS usar somente o layout.html, ignorando os outros. Para usar

NEOS PHP FRAMEWORK

Manual de Usurio C4GE

Pagina47 de 55

outros layouts no mesmo template necessrio algum seletor na classe do arquivo index.php ou usar outra classe de template que suporte.

NEOS Tags

Tanto nos templates como nas views, o NEOS reconhece um conjunto de tags especiais, usadas para uma srie de comandos prprios do framework, dedicados ao tratamento de views Os comandos PHP ainda estaro ativos, porm, no recomendado o seu uso em arquivos de visualizao. As neosTags facilitam muito o trabalho dos designers que esto normalmente acostumados com as tags comuns do HTML e no com comandos PHP.

Com as neosTags, o designer ter facilidade para carregar variveis do framework, mdulos e definir onde aparecero as views dentro de um layout, usando tags muito parecidas com as tags do HTML convencional. Alm disso, todos os atributos (style, align, class, id, etc.) so transportados para os blocos carregados pelas neosTags. Sintaxe:
<neos atributo1=valor atributo2=valor /> Ateno!

No se esquea de fechar a tag com /> Caso contrrio o NEOS no detectar o final da tag, . juntando o contedo da tag neos ao contedo da tag seguinte, no arquivo html analisado. Alm disso,as regras para uso de tags em HTML devem ser observadasincluir espaos entre o (no smbolo < e o nome da tag, usar atributos padronizados, as tags devem estar em letras minsculas, etc). Um erro de simplexml_load_string() (WARNING :: 2) pode ser disparado no caso de erro de sintaxe nas neosTags.

Tags
Estas so as tags especiaisdisponveis nesta verso do NEOS. <neos:url />: o NEOS substitui pela url base do site. <neos:charset/> o NEOS substitui pelo valor indicado em $cfg->charset; : <neos:template /> o NEOS substitui pelo endereo base do template atual. : <neos . . . /> : o NEOS substitui pelo contedo indicado pelos atributos(mdulos, variveis, views, etc).

Nas verses anterioresA7xx as neosTags e template no possuam prefixo a url . Para padronizao e evitar conflitos com futuras implementaes do html, foi acrescentado o prefixo neos: em todas as neosTags simples (as que no tem atributos...).
NEOS PHP FRAMEWORK Manual de Usurio C4GE Pagina48 de 55

Atributos
var: carrega o valor da varivel indicada; type: define o tipo de recurso a ser carregado; name: nome do recurso a ser carregado; style, class, id, title, align, etc esses atributos sero transportado para o bloco : carregado;

Exemplos:
<neos var=titulo />

O NEOS substitui esta tag pelo contedo da varivel 'titulo' ($titulo). Os exemplos a seguir funcionam somente com um template:
<neos type=modulo name=menu class=classe-menu id=menu />

Quando o NEOS interpretar esta tag (acima), carregar o mdulo menu e colocar o contedo em substituio a neosTag original. Os atributos class e id sero transportados para o novo contedo, numa div.
<neos type=area name=principal />

Carrega a view nomeada como principal em substituio a esta neosTag. Outros type podem ser implementados, modificando a classe NEOS_Template. As tags <neos:url /> e <neos:template /> no precisam de atributos:
<form action=<neos:url />controller/funo > . . . </form>

Se o seu site tiver a seguinte url: http://www.meu-site.com.br/ este ser o contedo encontrado em substituio a neosTag <neos:url />. muito til para carregar folhas de estilo, javascripts e outros arquivos com endereamento direto. Isso porque, quando usamos seguimentos nas url, o navegador acaba interpretando a url incorretamente. Por exemplo: a url http://meu-site/controller/funo seria interpretada pelo navegador como o endereo base do site; no considerando que se trata de seguimentos e que o endereo base real http://meu-site/.

NEOS PHP FRAMEWORK

Manual de Usurio C4GE

Pagina49 de 55

Para uma melhor familiarizao com a forma como o NEOS trabalha com templates, aconselhamos dar uma boa olha na classe de template padro do NEOS assim como os templates de exemplo encontrados nas distribuies do NEOS. Uma grande vantagem das neosTags a de que, numa implementao usando cdigo PHP convencional na view, preciso checar se a varivel exite e somente depois usar um comando como o echo. Com as neosTags, se uma varivel (ou outro recurso) no existir o NEOS apenas no mostra sem dar erro.

NeosTags Pack
Alm das neosTags vistas anteriormente, novas neosTags podem ser instaladas sem a necessidade de um upgrade total do framework. pode instalar novas funes para as Voc neosTags na subpasta neostags da pasta de helpers do seu NEOS. Da mesma forma que os helpers so carregados automticamente, o NEOS, ao renderizar as views, encontrando uma nova neosTag, carrega automaticamente a funo correspondente que esteja nesta subpasta. Voc pode desenvolver suas prprias neosTags ou baixar novos packs do site do NEOS. Vamos ver algumas neosTags para termos idia de seu potencial:

View
Carrega uma view em substituio a neosTag. Sintaxe:
<neos type=view name=nome-da-view />

O type determina o tipo view Em nome-da-view indicamos o nome da view a carregar em substituio a essa neosTag. Pode ser includo o caminho para uma subpasta, se necessrio. A extenso no precisa ser indicada. Exemplo:

NEOS PHP FRAMEWORK

Manual de Usurio C4GE

Pagina50 de 55

<neos type=view name=header/> <body> minha pgina normal ... </body> <neos type=view name=footer/>

Neste exemplo uma view header e outra footer, provavelmente comum a todas as views, sero carregadas automaticamente nos locais respectivos.

List e Numlist
Estas neosTags servem para criar uma lista e uma lista numrica, respectivamente, a partir de um array fornecido. Alternativamente, possvel indicar um link para cada item da lista. Sintaxe:
<neos type=list var=array/>

O type pode ser ou numlist; respectivamente: lista e lista numrica. list O array tem o seguinte formato: $array[' '] = ' item '. Normalmente 'link' deve ser numrico. link Caso queira que um link seja criado para o item corrente (como em um menu...) indique-o aqui. Este link ser relativo ao site. Em 'item' indicamos o valor a ser exibido na listagem. Exemplo: No controller definimos o array:
$array $array $array $array ['home'] ['download'] [ ] ['contato'] = = = = 'pgina inicial'; 'baixar arquivos'; ' --- sem link --- '; 'fale conosco';

Na view:

<neos type=list var=array/>

Depois de renderizado:

NEOS PHP FRAMEWORK

Manual de Usurio C4GE

Pagina51 de 55

<ul> <li><a href=http://site.com/home>pgina inicial</a></li> <li><a href=http://site.com/download>baixar arquivos</a></li> <li> --- sem link --- </li> <li><a href=http://site.com/contato>fale conosco</a></li> </ul>

Select
Esta uma neosTag para gerar um select automaticamente, a partir de um array. Sintaxe:
<neos type=select var=array />

Em type definimos o tipo da neosTag (select); indicamos, ento, o array com os dados a serem usados para criar o select. A formatao deste array : $array[' '] = ' label'; valor Se for necessrio indicar uma das options como selecionada (selected) label em um torne o array com apenas um elemento. Assim: $array[' valor '] = (' label ;') array Tambm possvel tornar o select em list (multiple). Para isso preciso fugir um pouco a regra e indicar o atributo multiple da seguinte forma: <neos type=select var=array =/>. multiple O convencional seria indicar apenas multiple sem um valor. Mas, para a neosTags, se for deixado sem um valor (sinal de igual e aspas), ocorrer um erro de interpretao no XML. Exemplo: No controller:
$array ['home'] $array ['download'] $array ['contato'] = 'pgina inicial'; = array('baixar arquivos'); = 'fale conosco';

Na view:

<neos type=select var=array class=pages

multiple=/>

Depois de renderizado:

NEOS PHP FRAMEWORK

Manual de Usurio C4GE

Pagina52 de 55

<select class=pages multiple> <option value=home >pgina inicial</option> <option value=download selected="selected" >baixar arquivos</option> <option value=contato >fale conosco</option> </select>

NEOS PHP FRAMEWORK

Manual de Usurio C4GE

Pagina53 de 55

Controle de Verso
O NEOS usa uma codificao alfa-numrica para indicar e controlar as verses lanadas para cada arquivo que compe o framework e do prprio framework em si. Este cdigo alfa-numrico, que foi simplificado para a sigla CAN (Cdigo Alfa-Numrico), representa a data de publicao (no site) da verso, seguido do cdigo de registro do arquivo e, oportunamente, do cdigo de registro do autor. Para exemplificar, vamos considerar um cdigo simples que representa a verso desta publicao: A92D . A codificao CAN organizada com os seguintes campos:
Campos CAN Significado

Ano A 2010

Ms 9 Setembro

Dia 2 2

Hora D 13 horas

Ento, o cdigo A92D indica que esta publicao foi lanada /em: 2010 s 13 Horas. 2 9/ Como j deu para perceber, o cdigo muito simples e intuitivo. Basta considerar os dgitos numricos de 9 e, em seguida as letras de Z (preferencialmente em letras maisculas). 0 A Assim conseguimos representar uma quantificao de at 35 valores ( de 0 a 35 ) com apenas um caractere suficiente para indicar datas de forma mais simples. Alm da verso de publicao, o CAN pode carregar outras informaes ( cdigo da publicao e autor ) seguindo o formato visto abaixo, para cada caso: Core do framework arquivos core.zip e core.neos ) ( : sem significado somente a data de publicao considerada (os quatro dgitos iniciais); Qualquerarquivobaixado do site librarys, helpers, etc exceto o core ) ou publicao ( oficial: Ex.: A92D XXXYYY XXX = cdigo do arquivo ou publicao; YYY = cdigo de registro do autor (cdigo de cadastro no site oficial ). Se no existir significa que o autor coletivo (comunidade);

Uma biblioteca ( Library / neos_can.php ) est disponvel no core do NEOS para trabalhar com cdigos CAN. Abra o arquivo da biblioteca e veja como funciona. Os mtodos pblicos geraCan e decodCan codificam e decodificam, respectivamente. Para o core do NEOS uma constante definida como _CAN contem a verso de publicao. Basta fazer echo _CAN ; para conhecer a verso do core utilizada.

NEOS PHP FRAMEWORK

Manual de Usurio C4GE

Pagina54 de 55

Sobre o Manual
Este manual foi escrito para dar uma pequena idia da simplicidade e facilidade de uso deste framework.

Se voc pensava que seria muito difcil usar o NEOS, espero que estas poucas linhas tenham lhe mostrado o contrrio. Se voc est acostumado a programar em PHP j pode instalar e usar o NEOS em seus prximos projetos, sem a necessidade de aprender mais nada! Mas, se ainda estiver com dvidas ou deseja fazer comentrios, sugestes e crticas entre em contato. Estamos ansiosos para te conhecer e ajudar no que for possvel. Se voc gostou do nosso framework ento seja um colaborador deste projeto. Ajude-nos no desenvolvimento colaborando com classes, scripts, funes e aperfeioando o NEOS como um todo. Todas as modificaes ou colaboraes sero publicadas no site oficial do NEOS juntamente com suas licenas (indicadas por voc) para que outros usurios tenham acesso.

Contatos
Site oficial: http://neosphp.com E-mail:contato@neosphp.com

Publicao
Esta publicao disponibilizada sob a licena GPL2. Nome da publicao: Manual de Usurio Autor:Paulo R. B. Rocha (CAN: 001) Cdigo da publicao: A92D001

NEOS PHP FRAMEWORK

Manual de Usurio C4GE

Pagina55 de 55

You might also like