spaghetti php

Download Spaghetti Php

Post on 23-Jun-2015

598 views

Category:

Documents

1 download

Embed Size (px)

DESCRIPTION

Tutorial da framework Php Spaghetti

TRANSCRIPT

Introduo ao desenvolvimento com Spaghetti*Aprenda a desenvolver com produtividade e diversopor Julio Gre e Rafael Marin

Ol!

Seja bem vindo ao mundo do desenvolvimento Web divertido. Desenvolver Web j foi chato e desmotivador. Hoje, com Spaghetti*, o seu trabalho pode ser mais excitante a cada novo dia. Esteja voc comeando no mundo do desenvolvimento, ou comeando a pensar sobre como voc tem desenvolvido ultimamente, ou ainda procurando um

framework pequeno mas totalmente extensvel,Spaghetti* para voc. Spaghetti* desenvolvido por pessoas que amam a Internet, e que sobretudo pensam que ela , na verdade, uma rede de pessoas. O framework escrito e testado em projetos reais de clientes reais com necessidades reais. Desde o incio. pouca teoria e muita prtica. menos reunio e mais produo. menos projeto e mais resultado. A Internet um meio que muda muito. Ento voc, desenvolvedor, tem sua disposio uma ferramenta que entende no somente o fato de que havero mudanas durante o processo de desenvolvimento, mas tambm entende que voc, como ser humano, comete erros. Vendemos com o Spaghetti* no apenas uma ferramenta, mas uma losoa. Uma losoa de desenvolvimento produtivo e divertido, com qualidade de cdigo. O Spaghetti* tem feito nosso dia melhor, e acreditamos que ele tambm pode fazer o seu e de sua equipe.Um forte abrao da equipe do Spaghetti*

Seja bem vindo!Seja bem vindo ao primeiro livro do Spaghetti*! Aqui voc pode descobrir um pouco mais sobre nosso framework, suas caractersticas e funcionalidades. Seja uma pequena dvida ou uma grande curiosade, voc encontrar aqui!Alm de entregar um framework de qualidade, tambm nos preocupamos em mant-lo bem documentado, para que qualquer um possa aprender a us-lo, e tornar seu trabalho cada vez melhor. O resultado essa documentao em formato de livro que, apesar de se manter simples, compreensiva o bastante para cobrir todos os aspectos pertinentes do Spaghetti*.

ComeandoSe voc novo no mundo do Spaghetti*, pode comear descobrindo um pouco mais sobre este framework, o que ele faz e por que voc pode us-lo. Mas se voc j mais experiente e sabe o que procurar, pode se guiar pela documentao on-line, ou ainda conhecer o cdigo-fonte do Spaghetti* de perto.

Como obter ajudaCaso este libro no seja suciente, voc encontra em nosso site tutoriais e screencasts, alm da documentao mais atualizada.

Introduo sobre MVCO Spaghetti* foi construdo baseando-se no design pattern MVC, separando as camadas da sua aplicao, tornando o desenvolvimento e manuteno muito mais fceis e rpidos. Na prtica, toda a camada de lgica e dados ca separada da camada de apresentao de sua aplicao, mantendo seu cdigo PHP longe do cdigo HTML, fazendo com que designers e programadores possam trabalhar simultaneamente de maneira harmoniosa e eciente.

Modelos de DadosOs modelos de dados, ou Models, representam os dados de sua aplicao. Embora os dados geralmente venham de bancos de dados como MySQL, SQL Server e similares, eles podem ser basicamente qualquer coisa, desde arquivos de texto at documentos em XML. O limite a sua criatividade. As classes do Spaghetti* iro auxili-lo na manipulao de seus dados, sem que voc precise escrever uma nica linha de SQL. O Spaghetti* faz o trabalho sujo, enquanto voc se preocupa com o que realmente interessa. No momento, os modelos de dados do Spaghetti* funcionam apenas com MySQL, embora o suporte a outros bancos de dados j esteja previsto para a prxima verso. Isso tambm signica que, se no existir um driver para o banco de dados que voc usa, voc mesmo poder cri-lo e compartilhar com a comunidade do Spaghetti*.

Controladores nos Controllers que a mgica realmente acontece. aqui onde voc ir tratar as respostas do usurio, buscar e processar dados e retorn-los para as Views. Nada de cdigo HTML, nada de CSS, nada de JavaScript. nica e puramente cdigo PHP.

Mesmo voc estando no comando, o Spaghetti* ir lhe auxiliar dando acesso aos seus Models e facilitando o envio de dados para as Views. Voc se diverte programando, e o Spaghetti* o ajuda com o resto.

VisualizaesAs Views fazem parte da camada de apresentao de sua aplicao. Nessa camada voc se preocupa unicamente em mostrar os dados ao usurio, usando apenas algumas estruturas bsicas em PHP, evitando aquela tpica mistura de lgica e apresentao em um mesmo arquivo. Alm disso, tambm possvel usar comandos para a criao fcil de links, imagens e formulrios, sem que voc precise se preocupar com detalhes chatos de implementao. Escolhemos o MVC por ser um pattern que faz bastante sentido no desenvolvimento Web, alm de aumentar a produtividade, diminuir a repetio de cdigo, facilitar a correo de bugs e tornar a vida dos desenvolvedores um pouco mais divertida. E voc, est pronto para entrar brincadeira, e se unir a ns por um desenvolvimento melhor?

Configurando sua aplicaoGigantescos arquivos de congurao? No nesse framework. Qualquer aplicao do Spaghetti* j est pronta para ser desenvolvida em questo de segundos!Congurar o Spaghetti* realmente muito fcil. Embora algumas outras conguraes sejam possveis, a nica coisa que voc necessita para ter uma aplicao rodando denir as conguraes de seu banco de dados.

Congurando o banco de dadosPara congurar seu banco de dados, voc precisa editar o arquivo app/cong/database.php. O Spaghetti* j vem com uma congurao de exemplo, voc s precisa alterar os campos necessrios, e sua congurao car assim:

$database = array( "development" => array( "host" => "localhost", "user" => "username", "password" => "password", "database" => "spaghetti", "prex" => "" ) );

O Spaghetti* suporta conguraes diferentes para cada ambiente de desenvolvimento. No exemplo acima, denimos o ambiente development, mas tambm podemos denir quantos mais forem necessrios. Isso evita que voc sobrescreva conguraes, facilitando o

deploy da aplicao.

Escolhendo o AmbientePara escolher o ambiente que voc deseja usar, basta alterar a congurao environment no arquivo app/cong/settings.php:

Cong::write("environment", "development");

E o que mais?Apesar de voc poder customizar um pouco mais sua aplicao, voc no precisa mais nada para comear sua aplicao. O Spaghetti* prefere conveno em vez de congurao, e todo o resto deduzido atravs da estrutura do framework. Agora voc est pronto pra comear a trabalhar!

RotasURLs complicadas, sem sentido ou apenas longas demais so um problema comum. Entretanto, com as rotas do Spaghetti* a soluo simples e rpida, e voc nem mesmo precisar escrever mais do que algumas linhas!Nem sempre a estrutura padro controller/action/id a melhor ou mais indicada para sua aplicao. Embora faa sentido, voc pode precisar fazer suas prprias modicaes nessa estrutura. Esse o propsito do arquivo app/cong/routes.php.

Rotas PadroQuando voc abrir o arquivo de congurao de rotas, voc j encontrar uma chamada ao mtodo Mapper::connect(), denindo a rota padro de sua aplicao.

Mapper::connect("/", "/home");

A rota acima vincular a raiz de sua aplicao com o HomeController. Essa rota pode apontar para qualquer outro controller de sua aplicao, mas ela necessria pois o Spaghetti* precisa saber como proceder quando nenhum controller especicado na URL. Caso contrrio, ser chamada a classe Controller, que apenas uma classe base, e no um

controller propriamente dito.

Denindo novas rotasA denio de novas rotas modicar a resposta de sua aplicao de acordo com a URL acessada. As rotas devem ser denidas no mesmo arquivo app/cong/routes.php, pois ele chamado antes de qualquer processamento do Spaghetti*. Para conectar novas rotas a determinadas URLs, utilizamos o mtodo

Mapper::connect(), que deve receber dois parmetros: o padro a ser comparado e a rota que esse padro deve seguir. Ou seja, o padro ser a URL acessada, e a rota ser o caminho que essa URL ter. Com a rota abaixo, por exemplo, a URL /posts/denindo-novas-rotas aponta para /posts/view/denindo-novas-rotas:

Mapper::connect("/posts/:any", "/posts/view/$1");

O Mapper::connect() tem suporte a expresses regulares, tornando a comparao ainda mais poderosa. Entretanto, para evitar que voc tenha que escrever expresses, o Spaghetti* j possui algumas strings mgicas para os casos mais comuns: :any corresponde a qualquer caracter, incluindo barras :num corresponde a qualquer nmero, mas no inclui barras :part corresponde a qualquer caracter, seja ele dgito ou nmero, mas no considera barras Para recuperar essas ocorrncias depois, usamos a mesma sintaxe usada em expresses regulares: $1 retorna a primeira ocorrncia, $2 retorna a segunda ocorrncia, e assim sucessivamente.

Nota: Para que expresses regulares sejam retornadas depois, necessrio que estejam entre parnteses.

Denindo prexosVrias aplicaes necessitam de reas distintas dentro de sua estrutura. Mais do que apenas controllers diferentes, s vezes se torna necessrio realizar as mesmas aes, mas por usurios com permisses diferentes. Isso acontece quando necessria uma seo para administrao, por exemplo. Para esse tipo de necessidade, o Spaghetti* conta com prexos, atravs do mtodo Mapper::prex():

Mapper::prex("admin");

Quando um prexo denido, o Spaghetti* passa a chamar actions diferentes. Quando a URL /admin/users for chamada, ser chamada a

action admin_index de UsersController, em vez de apenas index.Com essas aes distintas, possvel manter nveis de permisso, alm da possibilidade de alterar o comportamento de cada ao.

Nota: Prexos tambm esto sujeitos a ao de rotas, ou seja, uma rota pode redirecionar um prexo e causar problemas em sua aplicao.

Caso voc queira denir vrios prexos, tambm possvel faz-lo com apenas uma chamada ao mtodo, passando vrios argumentos:

Mapper::prex("admin", "user");

Atravs da criao de mltiplos prexos voc pode segmentar sua aplicao, criando vrias reas distinta