SlideShare uma empresa Scribd logo
1 de 29
Baixar para ler offline
Yet Another Framework
         (Yaf)
um framework que roda como uma extensão
Introdução
Introdução
Um framework similar ao ZF , escrito e
C e que funciona como uma extensão
do PHP

PHP 5.2.1

Padrão MVC

Rápido+++
Instalação
Instalação
PECL:
pecl install yaf


Código fonte:
wget http://pecl.php.net/get/yaf
tar -zxvf yaf
cd yaf
phpize
./configure
make
make install
Configurando
Configurando
- yaf.library: caminho de inclusão global para o autoloader

- yaf.action_prefer: ação padrão

- yaf.use_spl_autoload: ativando, força o Yaf a retornar
FALSE caso não encontre a classe necessária e utilizará
outro auto loader além do Yaf_Loader

- yaf.environ: define o ambiente, o padrão é "product",
para ser utilizado no INI

- yaf.use_namespace: se o PHP 5.3+ estiver disponível,
força o uso de Namespace para trabalhar com as classes
Estrutura
Estrutura
- application            - public
  - bin                    .htaccess
  - configs                index.php
     application.ini     - library
  - controllers          .htaccess
     Index.php
  - layouts
      - scripts
         default.phtml
  - models
      Users.php
  - plugins
  - views
      - index
         index.phtml
  - Bootstrap.php
Estrutura
- application/configs/application.ini:

[yaf]
; ------------------------------------------------------------------------------
; Application config
; ------------------------------------------------------------------------------
application.directory = APPLICATION_PATH
application.library = APPLICATION_PATH "/../library"
application.baseUri = "/index"

; ------------------------------------------------------------------------------
; Bootstrap
; ------------------------------------------------------------------------------
application.bootstrap = APPLICATION_PATH "/Bootstrap.php"

...
Estrutura
- application/configs/application.ini:

[yaf]
...
; ------------------------------------------------------------------------------
; Autoloader namespaces
; ------------------------------------------------------------------------------
application.namespaces[] = 'Doctrine'
application.namespaces[] = 'Symfony'
application.namespaces[] = 'Application'

; ------------------------------------------------------------------------------
; Tratamento de erros, jogando para o controlador de Erro
; ------------------------------------------------------------------------------
application.dispatcher.catchException = 1
application.dispatcher.throwException = 1
...
Estrutura
- application/configs/application.ini:

[yaf]
...

; ------------------------------------------------------------------------------
; Database Configuration
; ------------------------------------------------------------------------------
db.adapter                     = pdo_mysql
db.params.host                  = localhost
db.params.user                  = root
db.params.password =
db.params.dbname                = dbteste
db.params.charset               = utf8
db.params.persistence = true

...
Estrutura
- application/configs/application.ini:

[yaf]
...
; Template engine
layout.dir = APPLICATION_PATH "/layouts/scripts"
layout.file = default.phtml

; Rotas (urls personalizadas)
;a rewrite route match request /
;routes.inicio.type          = "rewrite"
;routes.inicio.match          = "/"
;routes.inicio.route.controller = index
;routes.inicio.route.action     = index

[production:yaf]

[development:yaf]
Estrutura
- application/controllers/Index.php

class IndexController extends YafController_Abstract
{
   /**
    * Construtor
    */
   public function init()
   {}

    /**
     * Default action
     */
    public function indexAction()
    {}
}
Estrutura
- application/layouts/scripts/default.phtml:

<html>
  <head>
     <title>Teste Yaf</title>
  </head>
  <body>
     <?= $this->content ?>
  </body>
</html>
Estrutura
- application/models/Users.php:

class UsersModel
{
   ...
}
Testes de Performance
Testes de Performance
Hardware

●   CPU: Intel Core i5 750 (2.67GHz x4)
    RAM: 4GB

●
Ambiente

●   Debian 6.0.3 x86_64 (2.6.32-39)
    apache 2.2.16 (mpm-prefork, mod-php5)
    php 5.3.8
    php-apc 3.1.9 (Otimizado para include/require)
    Copy all projects to /dev/shm/* (Otimização para leitura/escrita)

Applicação
    "Hello world", utilizando a estrutura MVC, sem banco.
Testes de Performance
ApacheBench (ab -c200 -n50000)
Testes de Performance
System LoadAvg por 1min rodando o ApacheBench (-c 100 -n 30000)
Testes de Performance
Memória
Testes Unitários
Testes Unitários
Autor
Autor
        Desenvolvedor a 10+ anos

        Freelancer

        Evangelista PHP

        Evangelist Software Livre
Dúvidas?
Contato
E-mail: mrprompt@gmail.com
Twitter: @mrprompt
Site: http://about.me/mrprompt
Fontes
Site oficial: http://www.yafdev.com/
Benchmark: http://www.laruence.com/2011/12/02/2333.html
Pecl: http://pecl.php.net/package/yaf
Manual: http://php.net/yaf
Obrigado :)

Mais conteúdo relacionado

Mais procurados

Memcached, Gearman e Sphinx
Memcached, Gearman e SphinxMemcached, Gearman e Sphinx
Memcached, Gearman e SphinxElton Minetto
 
Django deploy - Como servir aplicações Django em produção
Django deploy - Como servir aplicações Django em produçãoDjango deploy - Como servir aplicações Django em produção
Django deploy - Como servir aplicações Django em produçãoArtur Felipe Sousa
 
Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...
Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...
Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...Felipe Blini
 
Deploy automático em projeto PHP - PHPSPIMA 2016
Deploy automático em projeto PHP - PHPSPIMA 2016Deploy automático em projeto PHP - PHPSPIMA 2016
Deploy automático em projeto PHP - PHPSPIMA 2016Felipe Klerk Signorini
 
Entre na fila. Processamento distribuído usando Gearman
Entre na fila. Processamento distribuído usando GearmanEntre na fila. Processamento distribuído usando Gearman
Entre na fila. Processamento distribuído usando GearmanElton Minetto
 
Automatizar backup no pf sense [dica]
Automatizar backup no pf sense [dica]Automatizar backup no pf sense [dica]
Automatizar backup no pf sense [dica]João Augusto
 
O bom, o mau, o vilão... e o node.js
O bom, o mau, o vilão... e o node.jsO bom, o mau, o vilão... e o node.js
O bom, o mau, o vilão... e o node.jsNuno Paz
 
JBoss-WildFly - Avançado
JBoss-WildFly - AvançadoJBoss-WildFly - Avançado
JBoss-WildFly - AvançadoAdriano Schmidt
 
Desenvolvimento web no Linux
Desenvolvimento web no LinuxDesenvolvimento web no Linux
Desenvolvimento web no LinuxEduardo Rozario
 
Video Distribution in the Internet (pt_BR)
Video Distribution in the Internet (pt_BR)Video Distribution in the Internet (pt_BR)
Video Distribution in the Internet (pt_BR)Marcello Azambuja
 

Mais procurados (20)

05 servidor dhcp
05   servidor dhcp05   servidor dhcp
05 servidor dhcp
 
07 - Atividade III
07 - Atividade III07 - Atividade III
07 - Atividade III
 
Memcached, Gearman e Sphinx
Memcached, Gearman e SphinxMemcached, Gearman e Sphinx
Memcached, Gearman e Sphinx
 
FISL11 2010 - Automação de Datacenters
FISL11 2010 - Automação de DatacentersFISL11 2010 - Automação de Datacenters
FISL11 2010 - Automação de Datacenters
 
Django deploy - Como servir aplicações Django em produção
Django deploy - Como servir aplicações Django em produçãoDjango deploy - Como servir aplicações Django em produção
Django deploy - Como servir aplicações Django em produção
 
Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...
Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...
Monitoramento de serviços com Zabbix + Grafana + Python - Marcelo Santoto - D...
 
Rest workshop
Rest workshopRest workshop
Rest workshop
 
Deploy automático em projeto PHP - PHPSPIMA 2016
Deploy automático em projeto PHP - PHPSPIMA 2016Deploy automático em projeto PHP - PHPSPIMA 2016
Deploy automático em projeto PHP - PHPSPIMA 2016
 
Zabbix livro para ubuntu
Zabbix livro para ubuntuZabbix livro para ubuntu
Zabbix livro para ubuntu
 
Entre na fila. Processamento distribuído usando Gearman
Entre na fila. Processamento distribuído usando GearmanEntre na fila. Processamento distribuído usando Gearman
Entre na fila. Processamento distribuído usando Gearman
 
Vamos conversar sobre cache
Vamos conversar sobre cacheVamos conversar sobre cache
Vamos conversar sobre cache
 
Automatizar backup no pf sense [dica]
Automatizar backup no pf sense [dica]Automatizar backup no pf sense [dica]
Automatizar backup no pf sense [dica]
 
Escalando Sites com Nginx
Escalando Sites com NginxEscalando Sites com Nginx
Escalando Sites com Nginx
 
O bom, o mau, o vilão... e o node.js
O bom, o mau, o vilão... e o node.jsO bom, o mau, o vilão... e o node.js
O bom, o mau, o vilão... e o node.js
 
Slides nginx
Slides nginxSlides nginx
Slides nginx
 
De 1 a 1.000.00 de usuários
De 1 a 1.000.00 de usuáriosDe 1 a 1.000.00 de usuários
De 1 a 1.000.00 de usuários
 
JBoss-WildFly - Avançado
JBoss-WildFly - AvançadoJBoss-WildFly - Avançado
JBoss-WildFly - Avançado
 
Servidores WEB
Servidores WEBServidores WEB
Servidores WEB
 
Desenvolvimento web no Linux
Desenvolvimento web no LinuxDesenvolvimento web no Linux
Desenvolvimento web no Linux
 
Video Distribution in the Internet (pt_BR)
Video Distribution in the Internet (pt_BR)Video Distribution in the Internet (pt_BR)
Video Distribution in the Internet (pt_BR)
 

Destaque

Distribua seu código
Distribua seu códigoDistribua seu código
Distribua seu códigoThiago Paes
 
PHP além do ambiente LAMP
PHP além do ambiente LAMPPHP além do ambiente LAMP
PHP além do ambiente LAMPThiago Paes
 
Desenvolvendo em php cli
Desenvolvendo em php cliDesenvolvendo em php cli
Desenvolvendo em php cliThiago Paes
 
Integração Contínua com PHPCI
Integração Contínua com PHPCIIntegração Contínua com PHPCI
Integração Contínua com PHPCIThiago Paes
 
Distribua seu código
Distribua seu códigoDistribua seu código
Distribua seu códigoThiago Paes
 
Integração contínua - Você não tem dsculpa para não usar
Integração contínua - Você não tem dsculpa para não usarIntegração contínua - Você não tem dsculpa para não usar
Integração contínua - Você não tem dsculpa para não usarThiago Paes
 

Destaque (6)

Distribua seu código
Distribua seu códigoDistribua seu código
Distribua seu código
 
PHP além do ambiente LAMP
PHP além do ambiente LAMPPHP além do ambiente LAMP
PHP além do ambiente LAMP
 
Desenvolvendo em php cli
Desenvolvendo em php cliDesenvolvendo em php cli
Desenvolvendo em php cli
 
Integração Contínua com PHPCI
Integração Contínua com PHPCIIntegração Contínua com PHPCI
Integração Contínua com PHPCI
 
Distribua seu código
Distribua seu códigoDistribua seu código
Distribua seu código
 
Integração contínua - Você não tem dsculpa para não usar
Integração contínua - Você não tem dsculpa para não usarIntegração contínua - Você não tem dsculpa para não usar
Integração contínua - Você não tem dsculpa para não usar
 

Semelhante a Yaf - Um framework que roda sob uma extensão

Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...Tchelinux
 
GlassFish e Maven: Java EE sem dor!
GlassFish e Maven: Java EE sem dor!GlassFish e Maven: Java EE sem dor!
GlassFish e Maven: Java EE sem dor!Bruno Borges
 
Testes em aplicações JEE: Montando sua infra de testes automatizados
Testes em aplicações JEE: Montando sua infra de testes automatizadosTestes em aplicações JEE: Montando sua infra de testes automatizados
Testes em aplicações JEE: Montando sua infra de testes automatizadosDiego Santos
 
Zend Framework 2 é legal ! Mas como ele funciona ?!
Zend Framework 2 é legal ! Mas como ele funciona ?!Zend Framework 2 é legal ! Mas como ele funciona ?!
Zend Framework 2 é legal ! Mas como ele funciona ?!Alefe Variani
 
Introdução ao Zend Framework 2
Introdução ao Zend Framework 2Introdução ao Zend Framework 2
Introdução ao Zend Framework 2Elton Minetto
 
PHPSC Conference 2010 - Desenvolvimento de Extensões PECL
PHPSC Conference 2010 - Desenvolvimento de Extensões PECLPHPSC Conference 2010 - Desenvolvimento de Extensões PECL
PHPSC Conference 2010 - Desenvolvimento de Extensões PECLErick Belluci Tedeschi
 
TechDay - Sistemas WEB em Java - Rogério N. Jr.
TechDay - Sistemas WEB em Java - Rogério N. Jr.TechDay - Sistemas WEB em Java - Rogério N. Jr.
TechDay - Sistemas WEB em Java - Rogério N. Jr.Rogério Napoleão Jr.
 
Analise frameworks php
Analise frameworks phpAnalise frameworks php
Analise frameworks phpIgor Moura
 
Introdução ao zend framework
Introdução ao zend frameworkIntrodução ao zend framework
Introdução ao zend frameworkMarcos Oliveira
 
Cakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHPCakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHPArlindo Santos
 
As grandes novidades do JSF 2.0!
As grandes novidades do JSF 2.0!As grandes novidades do JSF 2.0!
As grandes novidades do JSF 2.0!Diego Santos
 
Gerenciamento de projetos com o Apache Ant
Gerenciamento de projetos com o Apache AntGerenciamento de projetos com o Apache Ant
Gerenciamento de projetos com o Apache AntDenis L Presciliano
 
Gerenciamento de projetos com o Apache Ant
Gerenciamento de projetos com o Apache AntGerenciamento de projetos com o Apache Ant
Gerenciamento de projetos com o Apache AntDenis L Presciliano
 
Gerenciamento de Configurações - Puppet
Gerenciamento de Configurações - PuppetGerenciamento de Configurações - Puppet
Gerenciamento de Configurações - PuppetRoberto Scudeller
 

Semelhante a Yaf - Um framework que roda sob uma extensão (20)

Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
Iniciando com Yii Framework - Volmar Machado da Silva Neto (Rede Pampa de Com...
 
GlassFish e Maven: Java EE sem dor!
GlassFish e Maven: Java EE sem dor!GlassFish e Maven: Java EE sem dor!
GlassFish e Maven: Java EE sem dor!
 
Testes em aplicações JEE: Montando sua infra de testes automatizados
Testes em aplicações JEE: Montando sua infra de testes automatizadosTestes em aplicações JEE: Montando sua infra de testes automatizados
Testes em aplicações JEE: Montando sua infra de testes automatizados
 
Zend Framework 2 é legal ! Mas como ele funciona ?!
Zend Framework 2 é legal ! Mas como ele funciona ?!Zend Framework 2 é legal ! Mas como ele funciona ?!
Zend Framework 2 é legal ! Mas como ele funciona ?!
 
Introdução ao Zend Framework 2
Introdução ao Zend Framework 2Introdução ao Zend Framework 2
Introdução ao Zend Framework 2
 
PHPSC Conference 2010 - Desenvolvimento de Extensões PECL
PHPSC Conference 2010 - Desenvolvimento de Extensões PECLPHPSC Conference 2010 - Desenvolvimento de Extensões PECL
PHPSC Conference 2010 - Desenvolvimento de Extensões PECL
 
Dev Ext PHP
Dev Ext PHPDev Ext PHP
Dev Ext PHP
 
Maverick v1.0
Maverick v1.0Maverick v1.0
Maverick v1.0
 
TechDay - Sistemas WEB em Java - Rogério N. Jr.
TechDay - Sistemas WEB em Java - Rogério N. Jr.TechDay - Sistemas WEB em Java - Rogério N. Jr.
TechDay - Sistemas WEB em Java - Rogério N. Jr.
 
Analise frameworks php
Analise frameworks phpAnalise frameworks php
Analise frameworks php
 
Introdução ao zend framework
Introdução ao zend frameworkIntrodução ao zend framework
Introdução ao zend framework
 
Palestra
PalestraPalestra
Palestra
 
Cakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHPCakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHP
 
As grandes novidades do JSF 2.0!
As grandes novidades do JSF 2.0!As grandes novidades do JSF 2.0!
As grandes novidades do JSF 2.0!
 
Gerenciamento de projetos com o Apache Ant
Gerenciamento de projetos com o Apache AntGerenciamento de projetos com o Apache Ant
Gerenciamento de projetos com o Apache Ant
 
Gerenciamento de projetos com o Apache Ant
Gerenciamento de projetos com o Apache AntGerenciamento de projetos com o Apache Ant
Gerenciamento de projetos com o Apache Ant
 
I educar-manual-de-instalaao
I educar-manual-de-instalaaoI educar-manual-de-instalaao
I educar-manual-de-instalaao
 
Desenvolvimento de Extensões PECL
Desenvolvimento de Extensões PECLDesenvolvimento de Extensões PECL
Desenvolvimento de Extensões PECL
 
Gerenciamento de Configurações - Puppet
Gerenciamento de Configurações - PuppetGerenciamento de Configurações - Puppet
Gerenciamento de Configurações - Puppet
 
Tutorial struts
Tutorial strutsTutorial struts
Tutorial struts
 

Yaf - Um framework que roda sob uma extensão