SlideShare a Scribd company logo
1 of 37
Download to read offline
User Interface
PHP Advanced - 16 de Setembro de 2008
      Bruno Pedro <bpedro@tarpipe.com>
PHP Advanced




                 Conteúdo
  • Template View Pattern
  • Smarty
  • Componentes
  • Projecto
  • Resumo
User Interface        2
PHP Advanced




   Template View Pattern




                 fonte: Fowler, M., Patterns of Enterprise Application Architecture, p. 350




User Interface                         3
PHP Advanced




   Template View Pattern
  • Separação real entre lógica e apresentação
  • A informação aparece nas páginas através
        de marcadores (tags) específicos
  • Toda a lógica antes da apresentação não
        escreve nem devolve HTML
  • Solução ideal para equipas em que existem
        programadores e Web designers

User Interface            4
PHP Advanced




     Model, Helper e View
     Model             Helper                      View


                                         <html>
                                         <body>
                     Calculator Helper
                   sum                   12 + 5 =
      Calculator   multiply              {$calc->sum x=12 y=5}
                   ...
                                         </body>
                                         </html>




User Interface                    5
PHP Advanced




     Model, Helper e View

  • Divisão facilita a separação entre lógica e
        apresentação
  • Possibilidade de delegar tarefas em cada
        uma das camadas a equipas diferentes
  • Diminui a complexidade do código,
        facilitando a sua manutenção

User Interface             6
PHP Advanced




                 Model




User Interface     7
PHP Advanced




                 Model

  • Implementa a lógica do negócio:
   • acesso à informação (bases de dados);
   • algoritmos específicos;
   • cálculo numérico;
   • acesso a Web Services.
User Interface        8
PHP Advanced




                 Helper




User Interface     9
PHP Advanced




                 Helper

  • Implementa a lógica funcional:
   • input do utilizador;
   • paginação de resultados;
   • adaptação e agregação de informação.

User Interface       10
PHP Advanced




                 View




User Interface    11
PHP Advanced




                  View

  • Implementa a lógica de apresentação:
   • interface com o utilizador;
   • aparência e estética das páginas;
   • selecção da informação a apresentar.

User Interface        12
PHP Advanced




                  Smarty
  • Motor de templates com sintaxe simples
  • Utiliza objectos
  • Permite compilar templates, melhorando o
        seu desempenho
  • Bastante versátil e modular

User Interface           13
PHP Advanced




                  Utilização
  • Código pode ser obtido em
        http://smarty.php.net/
  • Para começar é necessário instanciar um
        objecto Smarty




User Interface             14
PHP Advanced




                 Configurações
  • $smarty->template_dir: directório onde o
        Smarty vai interpretar os templates
  • $smarty->compile_dir: directório onde o
        Smarty vai gravar os templates compilados
  • $smarty->cache_dir: directório onde é
        gravada a cache
  • $smarty->caching: possibilidade de ligar ou
        desligar a cache
User Interface             15
PHP Advanced




                  Variáveis
  • Passagem de variáveis que poderão ser
        usadas pelo template




User Interface            16
PHP Advanced




                  Variáveis
  • {$var} - mostra o conteúdo da variável
  • {$array[5]} - mostra o conteúdo do 5º
        elemento do array
  • {$array.name} - mostra o conteúdo da
        posição ‘name’ do array
  • {$obj->name} - mostra o conteúdo do
        atributo ‘name’ do objecto

User Interface              17
PHP Advanced




                 Modificadores
  • {$name|capitalize}: apresenta em maiúsculas
        as primeiras letras de todas as palavras
  • {$today|date_format}: formata a
        apresentação de uma data e hora
  • {$title|lower}: converte em minúsculas
  • {$title|upper}: converte em maiúsculas
  • {$body|wordwrap:30}: quebra um texto a
        uma largura específica
User Interface             18
PHP Advanced




                 Modificadores
  • É possível combinar modificadores
             {$title|capitalize|wordwrap:10}

           {$text|strip_tags|lower|truncate}



User Interface             19
PHP Advanced




             Funções - capture
  • Grava numa variável o conteúdo que
        estiver entre os tags
  • Exemplo:



User Interface             20
PHP Advanced




             Funções - foreach
  • Implementa um iterador de arrays
  • Exemplo:




User Interface        21
PHP Advanced




                 Funções - if
  • Implementa uma condição
  • Exemplo:




User Interface        22
PHP Advanced




                 Funções - include
  • Inclui outro ficheiro Smarty
  • O outro ficheiro é interpretado
  • Todas as variáveis ficam disponíveis no
        ficheiro incluido
  • Exemplo:
        {include file=”ficheiro2.html”}

User Interface             23
PHP Advanced




                 Funções - literal
  • Permite não interpretar um bloco de
        código
  • Bastante útil quando temos JavaScript
        dentro dos templates
        {literal}
        Este bloco não é interpretado.
        {/literal}

User Interface            24
PHP Advanced




 Outras funcionalidades
  • Muitos outros modificadores e funções
  • Caching parcial e dependente de
        identificador
  • Configurações de segurança
  • Filtros de templates
  • Extensível através de plugins
User Interface         25
PHP Advanced




                     Separação
                 Lógica                        Apresentação


                                                 <html>
                                                 <body>
                      Calculator Helper
                     sum                         12 + 5 =
 Calculator          multiply                    {$calc->sum x=12 y=5}
                     ...
                                                 </body>
                                                 </html>




User Interface                            26
PHP Advanced




                 Componentes
  • User
   • Registo
   • Autenticação
   • Configurações
  • Data
   • Obtenção e gravação de dados
  • RSS
User Interface        27
PHP Advanced




                  User
                      User
                 firstName
                 lastName
                 username
                 save()
                 load()
                 auth()
                 addConf()
                 ...



User Interface         28
PHP Advanced




                  Data

                      Data
                 source
                 ...
                 save()
                 load()
                 search()
                 ...




User Interface         29
PHP Advanced




                   RSS

                       RSS
                 source
                 ...
                 get()
                 getItem()
                 ...




User Interface         30
PHP Advanced




                 Projecto

  • Página de registo
   • nome
   • username
   • password
   • confirmação de password
User Interface      31
PHP Advanced




                 Projecto

  • Página de autenticação
   • username
   • password

User Interface        32
PHP Advanced




                 Projecto

  • Configurações
   • adicionar URL de RSS
   • remover URL de RSS
   • listar URLs configurados

User Interface       33
PHP Advanced




                 Projecto

  • Visualização de dados
   • listagem dos itens dos vários RSS
   • ordenação
   • paginação

User Interface        34
PHP Advanced




                 Resumo

  • Template View Pattern
  • Model, Helper e View
  • Smarty
  • Componentes a implementar
  • Implementação de User Interface
User Interface       35
PHP Advanced




                 Questões?




User Interface       36
PHP Advanced




                 Mais informação

  • O meu blog: http://unfoldingtheweb.com/

  • Manual de PHP: http://www.php.net/

User Interface          37

More Related Content

What's hot

What's hot (12)

PHP e Redis
PHP e RedisPHP e Redis
PHP e Redis
 
Curso Linguagem de Programação I - PHP Básico
Curso Linguagem de Programação I - PHP BásicoCurso Linguagem de Programação I - PHP Básico
Curso Linguagem de Programação I - PHP Básico
 
PHP Day - PHP para iniciantes
PHP Day - PHP para iniciantesPHP Day - PHP para iniciantes
PHP Day - PHP para iniciantes
 
Mini Curso de PHP
Mini Curso de PHPMini Curso de PHP
Mini Curso de PHP
 
CURSO DE PHP PARA INICIANTES - AULA 1
CURSO DE PHP PARA INICIANTES - AULA 1CURSO DE PHP PARA INICIANTES - AULA 1
CURSO DE PHP PARA INICIANTES - AULA 1
 
Programação Web com PHP 7.x
Programação Web com PHP 7.xProgramação Web com PHP 7.x
Programação Web com PHP 7.x
 
Smarty + PHP
Smarty + PHPSmarty + PHP
Smarty + PHP
 
Minicurso PHP básico
Minicurso PHP básicoMinicurso PHP básico
Minicurso PHP básico
 
PHP, Smarty e o Template View Pattern
PHP, Smarty e o Template View PatternPHP, Smarty e o Template View Pattern
PHP, Smarty e o Template View Pattern
 
PHP Jedi - Boas Práticas e Alta Performance
PHP Jedi - Boas Práticas e Alta PerformancePHP Jedi - Boas Práticas e Alta Performance
PHP Jedi - Boas Práticas e Alta Performance
 
Php 07 Cakephp
Php 07 CakephpPhp 07 Cakephp
Php 07 Cakephp
 
Slides
SlidesSlides
Slides
 

Viewers also liked

Cinch-manual
Cinch-manualCinch-manual
Cinch-manualitmamman
 
Chelsea Flower Show 2006
Chelsea Flower Show 2006Chelsea Flower Show 2006
Chelsea Flower Show 2006itmamman
 
Emir'sPowerPoint
Emir'sPowerPointEmir'sPowerPoint
Emir'sPowerPointemir452
 
Utveckla elevernas språk
Utveckla elevernas språkUtveckla elevernas språk
Utveckla elevernas språkitmamman
 
Motiverade elever i en digital tid - utdrag ur föreläsning
Motiverade elever i en digital tid - utdrag ur föreläsningMotiverade elever i en digital tid - utdrag ur föreläsning
Motiverade elever i en digital tid - utdrag ur föreläsningitmamman
 
Wordpress: Tio tips
Wordpress: Tio tipsWordpress: Tio tips
Wordpress: Tio tipsitmamman
 
Sociala medier och undervisning
Sociala medier och undervisningSociala medier och undervisning
Sociala medier och undervisningitmamman
 
Activity Streams And Contexts
Activity Streams And ContextsActivity Streams And Contexts
Activity Streams And ContextsBruno Pedro
 

Viewers also liked (9)

Cinch-manual
Cinch-manualCinch-manual
Cinch-manual
 
Chelsea Flower Show 2006
Chelsea Flower Show 2006Chelsea Flower Show 2006
Chelsea Flower Show 2006
 
Emir'sPowerPoint
Emir'sPowerPointEmir'sPowerPoint
Emir'sPowerPoint
 
Utveckla elevernas språk
Utveckla elevernas språkUtveckla elevernas språk
Utveckla elevernas språk
 
Motiverade elever i en digital tid - utdrag ur föreläsning
Motiverade elever i en digital tid - utdrag ur föreläsningMotiverade elever i en digital tid - utdrag ur föreläsning
Motiverade elever i en digital tid - utdrag ur föreläsning
 
Wordpress: Tio tips
Wordpress: Tio tipsWordpress: Tio tips
Wordpress: Tio tips
 
Sociala medier och undervisning
Sociala medier och undervisningSociala medier och undervisning
Sociala medier och undervisning
 
OAuth checklist
OAuth checklistOAuth checklist
OAuth checklist
 
Activity Streams And Contexts
Activity Streams And ContextsActivity Streams And Contexts
Activity Streams And Contexts
 

Similar to User Interface (in portuguese)

Workshop Ruby on Rails dia 2 ruby-pt
Workshop Ruby on Rails dia 2  ruby-ptWorkshop Ruby on Rails dia 2  ruby-pt
Workshop Ruby on Rails dia 2 ruby-ptPedro Sousa
 
Uma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web APIUma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web APIComunidade NetPonto
 
Integração Contínua com Cruise Control e phpUnderControl
Integração Contínua com Cruise Control e phpUnderControlIntegração Contínua com Cruise Control e phpUnderControl
Integração Contínua com Cruise Control e phpUnderControlDiego Tremper
 
Programando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um FrameworkProgramando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um FrameworkPablo Dall'Oglio
 
BarCamp 2007 - CodeIgniter e OncologiaPediátrica.org
BarCamp 2007 - CodeIgniter e OncologiaPediátrica.orgBarCamp 2007 - CodeIgniter e OncologiaPediátrica.org
BarCamp 2007 - CodeIgniter e OncologiaPediátrica.orgjqrd
 
Segurança (in portuguese)
Segurança (in portuguese)Segurança (in portuguese)
Segurança (in portuguese)Bruno Pedro
 
Desenvolvimento Web Avançado usando PHP
Desenvolvimento Web Avançado usando PHPDesenvolvimento Web Avançado usando PHP
Desenvolvimento Web Avançado usando PHPelliando dias
 
Fundamentos da Programação PHP OO - Aula 3
Fundamentos da Programação PHP OO - Aula 3Fundamentos da Programação PHP OO - Aula 3
Fundamentos da Programação PHP OO - Aula 3Thyago Maia
 
Pense no futuro: PHP com Zend Framework
Pense no futuro: PHP com Zend FrameworkPense no futuro: PHP com Zend Framework
Pense no futuro: PHP com Zend FrameworkFlávio Lisboa
 
Implementando PSR-3 com Monolog @ PHP Community Summit 2019
Implementando PSR-3 com Monolog @ PHP Community Summit 2019Implementando PSR-3 com Monolog @ PHP Community Summit 2019
Implementando PSR-3 com Monolog @ PHP Community Summit 2019Gabriel Machado
 
Criando relatórios com PHP - PHP Conference Brasil 2013
Criando relatórios com PHP - PHP Conference Brasil 2013Criando relatórios com PHP - PHP Conference Brasil 2013
Criando relatórios com PHP - PHP Conference Brasil 2013Pablo Dall'Oglio
 
Desenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephpDesenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephpRodrigo Aramburu
 
Integração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlIntegração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlManuel Lemos
 
Integracao Contínua com CruiseControl e phpUnderControl
Integracao Contínua com CruiseControl e phpUnderControlIntegracao Contínua com CruiseControl e phpUnderControl
Integracao Contínua com CruiseControl e phpUnderControlDiego Tremper
 

Similar to User Interface (in portuguese) (20)

Workshop Ruby on Rails dia 2 ruby-pt
Workshop Ruby on Rails dia 2  ruby-ptWorkshop Ruby on Rails dia 2  ruby-pt
Workshop Ruby on Rails dia 2 ruby-pt
 
Ruby On Rails Regis
Ruby On Rails RegisRuby On Rails Regis
Ruby On Rails Regis
 
Uma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web APIUma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web API
 
Integração Contínua com Cruise Control e phpUnderControl
Integração Contínua com Cruise Control e phpUnderControlIntegração Contínua com Cruise Control e phpUnderControl
Integração Contínua com Cruise Control e phpUnderControl
 
Python 08
Python 08Python 08
Python 08
 
Novidades do PHP 5.3 e 6
Novidades do PHP 5.3 e 6Novidades do PHP 5.3 e 6
Novidades do PHP 5.3 e 6
 
Programando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um FrameworkProgramando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um Framework
 
Zend Framework
Zend FrameworkZend Framework
Zend Framework
 
BarCamp 2007 - CodeIgniter e OncologiaPediátrica.org
BarCamp 2007 - CodeIgniter e OncologiaPediátrica.orgBarCamp 2007 - CodeIgniter e OncologiaPediátrica.org
BarCamp 2007 - CodeIgniter e OncologiaPediátrica.org
 
Segurança (in portuguese)
Segurança (in portuguese)Segurança (in portuguese)
Segurança (in portuguese)
 
Desenvolvimento Web Avançado usando PHP
Desenvolvimento Web Avançado usando PHPDesenvolvimento Web Avançado usando PHP
Desenvolvimento Web Avançado usando PHP
 
Fundamentos da Programação PHP OO - Aula 3
Fundamentos da Programação PHP OO - Aula 3Fundamentos da Programação PHP OO - Aula 3
Fundamentos da Programação PHP OO - Aula 3
 
Pense no futuro: PHP com Zend Framework
Pense no futuro: PHP com Zend FrameworkPense no futuro: PHP com Zend Framework
Pense no futuro: PHP com Zend Framework
 
Implementando PSR-3 com Monolog @ PHP Community Summit 2019
Implementando PSR-3 com Monolog @ PHP Community Summit 2019Implementando PSR-3 com Monolog @ PHP Community Summit 2019
Implementando PSR-3 com Monolog @ PHP Community Summit 2019
 
Wicket 2008
Wicket 2008Wicket 2008
Wicket 2008
 
Criando relatórios com PHP - PHP Conference Brasil 2013
Criando relatórios com PHP - PHP Conference Brasil 2013Criando relatórios com PHP - PHP Conference Brasil 2013
Criando relatórios com PHP - PHP Conference Brasil 2013
 
Desenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephpDesenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephp
 
Integração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlIntegração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControl
 
Integracao Contínua com CruiseControl e phpUnderControl
Integracao Contínua com CruiseControl e phpUnderControlIntegracao Contínua com CruiseControl e phpUnderControl
Integracao Contínua com CruiseControl e phpUnderControl
 
Apache Wicket
Apache WicketApache Wicket
Apache Wicket
 

More from Bruno Pedro

What are Web APIs
What are Web APIsWhat are Web APIs
What are Web APIsBruno Pedro
 
Growing your business with an API
Growing your business with an APIGrowing your business with an API
Growing your business with an APIBruno Pedro
 
Product growth with an API
Product growth with an APIProduct growth with an API
Product growth with an APIBruno Pedro
 
How to grow your business with an API
How to grow your business with an APIHow to grow your business with an API
How to grow your business with an APIBruno Pedro
 
APIs Love to Chat
APIs Love to ChatAPIs Love to Chat
APIs Love to ChatBruno Pedro
 
How to Automate API Testing
How to Automate API TestingHow to Automate API Testing
How to Automate API TestingBruno Pedro
 
Asynchronous Microservices in nodejs
Asynchronous Microservices in nodejsAsynchronous Microservices in nodejs
Asynchronous Microservices in nodejsBruno Pedro
 
How to Automate API Discovery
How to Automate API DiscoveryHow to Automate API Discovery
How to Automate API DiscoveryBruno Pedro
 
Api Design & The Paris Subway
Api Design & The Paris SubwayApi Design & The Paris Subway
Api Design & The Paris SubwayBruno Pedro
 
The importance of /me
The importance of /meThe importance of /me
The importance of /meBruno Pedro
 
Maintainable consumers
Maintainable consumersMaintainable consumers
Maintainable consumersBruno Pedro
 
API Code Generation
API Code GenerationAPI Code Generation
API Code GenerationBruno Pedro
 
Bridging the Gap Between APIs and Customers
Bridging the Gap Between APIs and CustomersBridging the Gap Between APIs and Customers
Bridging the Gap Between APIs and CustomersBruno Pedro
 
Who's using your API?
Who's using your API?Who's using your API?
Who's using your API?Bruno Pedro
 
Is OAuth Really Secure?
Is OAuth Really Secure?Is OAuth Really Secure?
Is OAuth Really Secure?Bruno Pedro
 
Link extraction and classification
Link extraction and classificationLink extraction and classification
Link extraction and classificationBruno Pedro
 
tarpipe WordPress plugin demo
tarpipe WordPress plugin demotarpipe WordPress plugin demo
tarpipe WordPress plugin demoBruno Pedro
 
Everything OAuth
Everything OAuthEverything OAuth
Everything OAuthBruno Pedro
 
The Executable Web
The Executable WebThe Executable Web
The Executable WebBruno Pedro
 

More from Bruno Pedro (20)

What are Web APIs
What are Web APIsWhat are Web APIs
What are Web APIs
 
Growing your business with an API
Growing your business with an APIGrowing your business with an API
Growing your business with an API
 
Product growth with an API
Product growth with an APIProduct growth with an API
Product growth with an API
 
How to grow your business with an API
How to grow your business with an APIHow to grow your business with an API
How to grow your business with an API
 
APIs Love to Chat
APIs Love to ChatAPIs Love to Chat
APIs Love to Chat
 
How to Automate API Testing
How to Automate API TestingHow to Automate API Testing
How to Automate API Testing
 
Asynchronous Microservices in nodejs
Asynchronous Microservices in nodejsAsynchronous Microservices in nodejs
Asynchronous Microservices in nodejs
 
How to Automate API Discovery
How to Automate API DiscoveryHow to Automate API Discovery
How to Automate API Discovery
 
Api Design & The Paris Subway
Api Design & The Paris SubwayApi Design & The Paris Subway
Api Design & The Paris Subway
 
The importance of /me
The importance of /meThe importance of /me
The importance of /me
 
Maintainable consumers
Maintainable consumersMaintainable consumers
Maintainable consumers
 
API Code Generation
API Code GenerationAPI Code Generation
API Code Generation
 
Bridging the Gap Between APIs and Customers
Bridging the Gap Between APIs and CustomersBridging the Gap Between APIs and Customers
Bridging the Gap Between APIs and Customers
 
Who's using your API?
Who's using your API?Who's using your API?
Who's using your API?
 
node-fs
node-fsnode-fs
node-fs
 
Is OAuth Really Secure?
Is OAuth Really Secure?Is OAuth Really Secure?
Is OAuth Really Secure?
 
Link extraction and classification
Link extraction and classificationLink extraction and classification
Link extraction and classification
 
tarpipe WordPress plugin demo
tarpipe WordPress plugin demotarpipe WordPress plugin demo
tarpipe WordPress plugin demo
 
Everything OAuth
Everything OAuthEverything OAuth
Everything OAuth
 
The Executable Web
The Executable WebThe Executable Web
The Executable Web
 

User Interface (in portuguese)

  • 1. User Interface PHP Advanced - 16 de Setembro de 2008 Bruno Pedro <bpedro@tarpipe.com>
  • 2. PHP Advanced Conteúdo • Template View Pattern • Smarty • Componentes • Projecto • Resumo User Interface 2
  • 3. PHP Advanced Template View Pattern fonte: Fowler, M., Patterns of Enterprise Application Architecture, p. 350 User Interface 3
  • 4. PHP Advanced Template View Pattern • Separação real entre lógica e apresentação • A informação aparece nas páginas através de marcadores (tags) específicos • Toda a lógica antes da apresentação não escreve nem devolve HTML • Solução ideal para equipas em que existem programadores e Web designers User Interface 4
  • 5. PHP Advanced Model, Helper e View Model Helper View <html> <body> Calculator Helper sum 12 + 5 = Calculator multiply {$calc->sum x=12 y=5} ... </body> </html> User Interface 5
  • 6. PHP Advanced Model, Helper e View • Divisão facilita a separação entre lógica e apresentação • Possibilidade de delegar tarefas em cada uma das camadas a equipas diferentes • Diminui a complexidade do código, facilitando a sua manutenção User Interface 6
  • 7. PHP Advanced Model User Interface 7
  • 8. PHP Advanced Model • Implementa a lógica do negócio: • acesso à informação (bases de dados); • algoritmos específicos; • cálculo numérico; • acesso a Web Services. User Interface 8
  • 9. PHP Advanced Helper User Interface 9
  • 10. PHP Advanced Helper • Implementa a lógica funcional: • input do utilizador; • paginação de resultados; • adaptação e agregação de informação. User Interface 10
  • 11. PHP Advanced View User Interface 11
  • 12. PHP Advanced View • Implementa a lógica de apresentação: • interface com o utilizador; • aparência e estética das páginas; • selecção da informação a apresentar. User Interface 12
  • 13. PHP Advanced Smarty • Motor de templates com sintaxe simples • Utiliza objectos • Permite compilar templates, melhorando o seu desempenho • Bastante versátil e modular User Interface 13
  • 14. PHP Advanced Utilização • Código pode ser obtido em http://smarty.php.net/ • Para começar é necessário instanciar um objecto Smarty User Interface 14
  • 15. PHP Advanced Configurações • $smarty->template_dir: directório onde o Smarty vai interpretar os templates • $smarty->compile_dir: directório onde o Smarty vai gravar os templates compilados • $smarty->cache_dir: directório onde é gravada a cache • $smarty->caching: possibilidade de ligar ou desligar a cache User Interface 15
  • 16. PHP Advanced Variáveis • Passagem de variáveis que poderão ser usadas pelo template User Interface 16
  • 17. PHP Advanced Variáveis • {$var} - mostra o conteúdo da variável • {$array[5]} - mostra o conteúdo do 5º elemento do array • {$array.name} - mostra o conteúdo da posição ‘name’ do array • {$obj->name} - mostra o conteúdo do atributo ‘name’ do objecto User Interface 17
  • 18. PHP Advanced Modificadores • {$name|capitalize}: apresenta em maiúsculas as primeiras letras de todas as palavras • {$today|date_format}: formata a apresentação de uma data e hora • {$title|lower}: converte em minúsculas • {$title|upper}: converte em maiúsculas • {$body|wordwrap:30}: quebra um texto a uma largura específica User Interface 18
  • 19. PHP Advanced Modificadores • É possível combinar modificadores {$title|capitalize|wordwrap:10} {$text|strip_tags|lower|truncate} User Interface 19
  • 20. PHP Advanced Funções - capture • Grava numa variável o conteúdo que estiver entre os tags • Exemplo: User Interface 20
  • 21. PHP Advanced Funções - foreach • Implementa um iterador de arrays • Exemplo: User Interface 21
  • 22. PHP Advanced Funções - if • Implementa uma condição • Exemplo: User Interface 22
  • 23. PHP Advanced Funções - include • Inclui outro ficheiro Smarty • O outro ficheiro é interpretado • Todas as variáveis ficam disponíveis no ficheiro incluido • Exemplo: {include file=”ficheiro2.html”} User Interface 23
  • 24. PHP Advanced Funções - literal • Permite não interpretar um bloco de código • Bastante útil quando temos JavaScript dentro dos templates {literal} Este bloco não é interpretado. {/literal} User Interface 24
  • 25. PHP Advanced Outras funcionalidades • Muitos outros modificadores e funções • Caching parcial e dependente de identificador • Configurações de segurança • Filtros de templates • Extensível através de plugins User Interface 25
  • 26. PHP Advanced Separação Lógica Apresentação <html> <body> Calculator Helper sum 12 + 5 = Calculator multiply {$calc->sum x=12 y=5} ... </body> </html> User Interface 26
  • 27. PHP Advanced Componentes • User • Registo • Autenticação • Configurações • Data • Obtenção e gravação de dados • RSS User Interface 27
  • 28. PHP Advanced User User firstName lastName username save() load() auth() addConf() ... User Interface 28
  • 29. PHP Advanced Data Data source ... save() load() search() ... User Interface 29
  • 30. PHP Advanced RSS RSS source ... get() getItem() ... User Interface 30
  • 31. PHP Advanced Projecto • Página de registo • nome • username • password • confirmação de password User Interface 31
  • 32. PHP Advanced Projecto • Página de autenticação • username • password User Interface 32
  • 33. PHP Advanced Projecto • Configurações • adicionar URL de RSS • remover URL de RSS • listar URLs configurados User Interface 33
  • 34. PHP Advanced Projecto • Visualização de dados • listagem dos itens dos vários RSS • ordenação • paginação User Interface 34
  • 35. PHP Advanced Resumo • Template View Pattern • Model, Helper e View • Smarty • Componentes a implementar • Implementação de User Interface User Interface 35
  • 36. PHP Advanced Questões? User Interface 36
  • 37. PHP Advanced Mais informação • O meu blog: http://unfoldingtheweb.com/ • Manual de PHP: http://www.php.net/ User Interface 37