Sie sind auf Seite 1von 49

Manual de Usurio

ref.: A92D001
NEOS PHP FRAMEWORK Manual de Usurio A92D001 Pagina 1 de 49

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__________________________________________________________________41 Templates_______________________________________________________________________42 Estrutura dos Templates___________________________________________________________42 NEOS Tags______________________________________________________________________43 Tags___________________________________________________________________________43 Atributos_______________________________________________________________________44 NeosTags Pack__________________________________________________________________45 Sobre o Manual__________________________________________________________________49 Contatos_______________________________________________________________________49 Publicao______________________________________________________________________49

NEOS PHP FRAMEWORK

Manual de Usurio A92D001

Pagina 2 de 49

Introduo
No princpio, foi criado um framework bem simples para atender a necessidade dos programadores em termos de facilidade de uso, rapidez no desenvolvimento e tambm a reduo do processo de aprendizagem do prprio framework por parte de equipes de programadores com elementos que tinham pouca ou at nenhuma experincia com frameworks. O nome desse primeiro projeto foi, sugestivamente: Simple; simples, em ingls. O Simple foi criado depois de muita frustrao no uso de outros frameworks que apresentavam diversos problemas: Tempo de aprendizado muito grande; Alta complexidade dificultando a usabilidade; Padronizao muito rgida dificultando a incluso de bibliotecas externas; Alto consumo de recursos do servidor (memria, processamento); Excesso de abstrao em bancos de dados gerando incompatibilidades entre gerenciadores de bancos; Uso de expresses prprias em substituio ao PHP que obriga o aprendizado de um Frameworks; Documentao em ingls;

Esses outros frameworks vm de muitos anos de desenvolvimentos e procuram se manter coesos com os princpios iniciais de seus desenvolvimentos. Isto no to bom quanto parece. A evoluo do prprio PHP, as novas tecnologias, mtodos, normas (etc.) so adaptadas de forma arcaica nas novas verses destes frameworks, tentando manter a compatibilidade com o modelo inicial. O resultado sempre ruim pois essas modificaes so verdadeiros gatilhos. O que deveria ser feito, realmente, uma reformulao completa nesses frameworks, mesmo com a perda de compatibilidade. Na criao do Simple, procuramos fugir de qualquer conceito e padronizao que pudesse engessar o framework, dificultando a adoo futura de novas idias, mtodos, tecnologias e a prpria evoluo da linguagem PHP. Quanto a esse ltimo item, pensamos que o framework no deve substituir a linguagem original (PHP) com outros comandos ou funes que j existam na prpria linguagem, como acontece na maioria dos outros frameworks. Damos total prioridade linguagem em detrimento as necessidades do framework. O framework deve ser uma ferramenta para o PHP e no o inverso. O Simple modular. Sua estrutura pensada como um ncleo que prov as funcionalidades bsicas para a criao de um bero para a aplicao desenvolvida. Esse mesmo bero, ento, ser acrescido de infinitos blocos de expanso, de forma dinmica e inteligente, para dotar o framework de todas as funcionalidades necessrias a mais exigente aplicao. Quando falamos em dinmica e inteligente queremos dizer que o programador no deve perder

NEOS PHP FRAMEWORK

Manual de Usurio A92D001

Pagina 3 de 49

tempo se preocupando com as operaes de incluso dos mdulos. Esta tarefa deve ser do ncleo do Simple ou provido pelo prprio bloco de expanso. Como exemplo disso podemos citar as bibliotecas de conexo banco de dados: Quando for solicitado o acesso ao banco de dados o framework, somente nesse momento, adiciona o bloco necessrio a conexo e ao banco de dados especificado, automaticamente. Para o programador, basta fazer a consulta ao banco de dados (veja mais sobre isso em Carregamento Automtico). Depois de termos alcanado com muito xito os objetivos e do grande sucesso do framework, quando cpias do Simple foram usadas por vrios outros programadores e at grupo de programadores em empresas, nos sentimos motivados a prosseguir no desenvolvimento e aperfeioamento que nos levaram a publicao de um site especfico para o Simple. At aqui o Simple era considerado um projeto em desenvolvimento: um BETA! Quando resolvemos dar ao Simple o merecido status de pronto para uso, fizemos um longo e minucioso trabalho de pesquisa em seus componentes, acrescentando as atualizaes, correes de erros, sugestes de outros programadores, padronizao da distribuio, etc. Depois de um rduo trabalho encontramos em nossas mos um projeto realmente maduro, transpassando em muito as espectativas originais, porm, conservando os objetivos de rapidez, pouco consumo de recursos do servidor e principalmente facilidade de uso e aprendizado. Neste momento resolvemos trocar o nome provisrio (Simple) para NEOS que significa Novo (neo) Simple. Dentre os aperfeioamentos adicionados, o NEOS conta agora com uma rotina de Instalao de Nova Aplicao. Esta rotina pode ser chamada com apenas duas linhas de instrues e cria todos os arquivos e pastas necessrios alm dos dados de conexo a banco de dados. A rotina tambm traz uma aplicao inicial, de exemplo, para facilitar principalmente os que esto comeando a usar o framework, alm da possibilidade da criao de suas prprias Aplicaes Iniciais. Outra questo importante sobre o NEOS a de que seu ncleo pode ser modificado para atender a qualquer necessidade do programador e essa modificao ( CoreMod ) pode ser publicada no site do framework para acesso pelos outros programadores, livremente. Uma documentao e exemplo de uso acompanham a CoreMod, para facilitar a utilizao. Acreditamos que voc, ao ler esse pequeno manual e fazer as primeiras experincias com o NEOS, notar o grande e positivo investimento que fez. Depois disso, a adoo do NEOS como seu principal framework, ser a escolha natural.

NEOS PHP FRAMEWORK

Manual de Usurio A92D001

Pagina 4 de 49

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.

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.

NEOS PHP FRAMEWORK

Manual de Usurio A92D001

Pagina 5 de 49

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 pasta fora do root do servidor 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.

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.

NEOS PHP FRAMEWORK

Manual de Usurio A92D001

Pagina 6 de 49

Na prtica, para no aprofundarmos no assunto e considerando que existem muitas referencias sobre o modelo MVC disponveis, no Model criamos os objetos que formam os modelos de 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 neosTags para 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 total 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. 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 redirecionada para este arquivo pelo servidor web, conforme configurado num arquivo .htaccess,

NEOS PHP FRAMEWORK

Manual de Usurio A92D001

Pagina 7 de 49

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. 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 : funo : nome do controller que ser carregado pelo NEOS; mtodo ou funo do controller que dever ser invocado;

argumentos : argumentos ou dados passados ao mtodo invocado.

Se voc preferir as query strings o NEOS tambm conseguir funcionar da forma esperada.

NEOS PHP FRAMEWORK

Manual de Usurio A92D001

Pagina 8 de 49

Dada a url: http://meusite/index.php?c=controller&f=funo&arg=argumentos... c: f: arg : esta varivel (GET) passar o nome do Controller; esta varivel (GET) passar o mtodo ou funo do controller; 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:
$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:

NEOS PHP FRAMEWORK

Manual de Usurio A92D001

Pagina 9 de 49

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:
$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.
NEOS PHP FRAMEWORK Manual de Usurio A92D001 Pagina 10 de 49

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 Filipe Dutra). Este caractere tambm usado, 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: 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.

NEOS PHP FRAMEWORK

Manual de Usurio A92D001

Pagina 11 de 49

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.

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 do core do NEOS. Ento, somente os blocos Aplicao e Webroot, esto 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(); ?>

NEOS PHP FRAMEWORK

Manual de Usurio A92D001

Pagina 12 de 49

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 deveria seguir os seguintes passos: 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.

NEOS PHP FRAMEWORK

Manual de Usurio A92D001

Pagina 13 de 49

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 A92D001

Pagina 14 de 49

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 IIS com Isapi_Rewrite); PHP 5.2 ou 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.org). Voc 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 Criando uma 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). Para instalar, apenas descompacte o arquivo em seu servidor web e rode o site com o seu navegador.

NEOS PHP FRAMEWORK

Manual de Usurio A92D001

Pagina 15 de 49

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
Para a instalao de um nico Core, que ser compartilhado por todas as aplicaes no mesmo servidor, siga os passos abaixo: 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\"

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\'.
Com o include_path: Sem o include_path: include 'NEOS/core.php'; include 'C:\Web\Frameworks\PHP\NEOS\core.php';

NEOS PHP FRAMEWORK

Manual de Usurio A92D001

Pagina 16 de 49

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. 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.

NEOS PHP FRAMEWORK

Manual de Usurio A92D001

Pagina 17 de 49

Se voc no conhece o tipo PHAR do PHP leia o manual do PHP e tenha certeza que sua verso seja a 5.3 (ou superior) do PHP. Arquivos PHAR funcionam bem a partir da verso 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 A92D001

Pagina 18 de 49

Criando uma 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 A9xx em diante; e pode ser 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 servidores Unix. Caso contrrio o instalador no conseguir criar e copiar os arquivos necessrios e apresentar uma mensagem de error. 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 o item 2 da instalao do ncleo do NEOS ou seja, no configurou o include_path, use o contedo mostrado abaixo para o arquivo index.php. Onde 'caminhoda-instalao' deve ser substitudo pelo caminho completo da pasta onde esta o Core (compartilhado) do NEOS.

NEOS PHP FRAMEWORK

Manual de Usurio A92D001

Pagina 19 de 49

<?php @$cfg->app = dirname(__FILE__); Include caminho-da-instalao/NEOS/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 (ex.: http://192.168.3.34/site/ ). 4. Uma tela da Ajuda Dinmica do NEOS aparecer informando que o controller inicial no foi encontrado. Isso ocorre porque ainda no criamos um controller de inicializao para a aplicao. Procure nesta tela uma referencia ao CORE SERVICE e 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 de configuraes do 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 a A9xx para usar o CORE 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 do seu PHP para acessar os arquivos do NEOS.

NEOS PHP FRAMEWORK

Manual de Usurio A92D001

Pagina 20 de 49

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 A92D001

Pagina 21 de 49

<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 e cole o seguinte 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 A92D001

Pagina 22 de 49

<!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 classe de template. A tag <neos:url/> (stima linha) tambm uma neosTag e contm o endereo base do site. Neste exemplo no usaremos o arquivo CSS; 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:
<?php @$cfg->app = '../app/'; @$cfg->web = dirname(__FILE__); include 'NEOS/core.php';

Vamos analisar cada linha deste arquivo:

NEOS PHP FRAMEWORK

Manual de Usurio A92D001

Pagina 23 de 49

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! Se voc no quiser (puder), pode indicar a localizao do CORE diretamente. Agora j temos o mnimo para a nossa aplicao funcionar! Abra o seu navegador e digite:
http://localhost/site/

Como no 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 modifique o arquivo site.html, acrescentando as neosTags para carregamento de views (subviews). O arquivo ficar assim: site.html:

NEOS PHP FRAMEWORK

Manual de Usurio A92D001

Pagina 24 de 49

<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 A92D001

Pagina 25 de 49

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:
<?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 _db() do NEOS. Este 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:

NEOS PHP FRAMEWORK

Manual de Usurio A92D001

Pagina 26 de 49

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:
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 mtodo _db().

NEOS PHP FRAMEWORK

Manual de Usurio A92D001

Pagina 27 de 49

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 A92D001

Pagina 28 de 49

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 importante quando trabalhamos com templates, para indicar em qual lugar dever a view ser mostrada. template : string com o nome do template desejado.
Manual de Usurio A92D001 Pagina 29 de 49

NEOS PHP FRAMEWORK

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-do-arquivo 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.

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 (). 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.

NEOS PHP FRAMEWORK

Manual de Usurio A92D001

Pagina 30 de 49

$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->). 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.

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).
NEOS PHP FRAMEWORK Manual de Usurio A92D001 Pagina 31 de 49

Sintaxe: $model = $this->_model( nome-do-model , retorna ); $model : Se retorna for FALSE (ou no for indicada), o model, indicado em nome-domodel 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:
$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 {...}); j um controller de apoio NO deve estender a superclasse. Sintaxe: $this->_controller( nome-do-controller ); nome-do-controller : indica 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:

NEOS PHP FRAMEWORK

Manual de Usurio A92D001

Pagina 32 de 49

$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.

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.

NEOS PHP FRAMEWORK

Manual de Usurio A92D001

Pagina 33 de 49

$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.
$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 query insert update *prepare *bind *execute Parmetro 1 Script SQL O nome da tabela O nome da tabela Script SQL Nome da pilha de execuo Nome da pilha de execuo Parmetro 2 Array com os dados Array com os dados Nome da pilha de execuo Nome do campo Parmetro 3 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 A92D001

Pagina 34 de 49

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); nome-da-classe: o nome da classe comeando com letra maiscula.

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.

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

NEOS PHP FRAMEWORK

Manual de Usurio A92D001

Pagina 35 de 49

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: _setmark( nome-da-marca, arquivos, variveis ); nome-da-marca: 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 tiver 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: $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.

NEOS PHP FRAMEWORK

Manual de Usurio A92D001

Pagina 36 de 49

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, cria a classe (new modulo...), chama e retorna os valores da funo start() do mdulo. $modulo : recebe o mdulo se start for TRUE.

Exemplo:
_modulo ( menu ); $mod = new $modulo; echo $mod->start ( argumentos ... );

Para a classe de template default do NEOS, por padro, a funo start do mdulo deve ser a principal. Acima, 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 (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 );

NEOS PHP FRAMEWORK

Manual de Usurio A92D001

Pagina 37 de 49

$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.

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 a ACxx ) possui um banco de dados sqlite que pode, 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.

NEOS PHP FRAMEWORK

Manual de Usurio A92D001

Pagina 38 de 49

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, deve-se 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 autoincrementvel. 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. 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 CORE do NEOS:
$cfg->use_db = true;

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.

NEOS PHP FRAMEWORK

Manual de Usurio A92D001

Pagina 39 de 49

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).

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 no CAMPOS ( CAMPOS[NOME]=VALOR ). Por exemplo:

NEOS PHP FRAMEWORK

Manual de Usurio A92D001

Pagina 40 de 49

$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:
$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 de ACxx. Nas verses anteriores o NEOS usar apenas os arquivos config.php.

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 A92D001

Pagina 41 de 49

Templates
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 outros layouts no mesmo template necessrio algum seletor na classe do arquivo index.php ou usar outra classe de template que suporte.

NEOS PHP FRAMEWORK

Manual de Usurio A92D001

Pagina 42 de 49

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 observadas (no incluir espaos entre o 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 especiais disponveis 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 anteriores a A7xx as neosTags url e template no possuam prefixo. 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 A92D001

Pagina 43 de 49

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 A92D001

Pagina 44 de 49

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. Voc pode instalar novas funes para as neosTags na subpasta neostagspack 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 A92D001

Pagina 45 de 49

<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 list ou numlist; respectivamente: lista e lista numrica. O array tem o seguinte formato: $array[' link '] = ' item '. Normalmente 'link' deve ser numrico. 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 A92D001

Pagina 46 de 49

<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[' valor '] = ' label '; Se for necessrio indicar uma das options como selecionada (selected) torne o label em um array com apenas um elemento. Assim: $array[' valor '] = array (' label '); 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 A92D001

Pagina 47 de 49

<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 A92D001

Pagina 48 de 49

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://neophp.tk E-mail: prbr@ymail.com

Publicao
Esta publicao disponibilizada mediante a licena GPL2. Nome da publicao: Manual de Usurio Autor: Paulo R. B. Rocha Data da publicao: 09/2010 Cdigo da publicao: A92D001

NEOS PHP FRAMEWORK

Manual de Usurio A92D001

Pagina 49 de 49