PHP Experience 2016 - [Palestra] 20×20: PHP Freakshow – O estranho, o esquisito e o raro

iMasters
iMastersjornalista, web editor, web writer, tradutora (en-pt/pt-en) at iMasters
PHP FREAKSHOW
LEONARDO TUMADJIAN
PHP EXPERIENCE 2016
ANTES DE COMEÇARMOS:
Contribua com sua comunidade mais próxima, se tiver um tempo ;)
Como contribuir?
ATENÇÃO!
O conteúdo a seguir pode conter cenas fortes, códigos sujos, violência contra as boas práticas, esquisitices, loucuras e muito mais..
Em caso de fortes problemas cardíacos prefira: Design Patterns, SOLID, DDD e etc..
Não tente fazer isso em casa, e muito menos no trabalho, obrigado!
WELLCOME!
Sejam bem vindos ao PHP Freak Show, o show já vai começar, preparem-se.
VARIÁVEIS VARIÁVEIS!
$freak = 'ola';
$ola = 'como'; 
$como = 'vai'; 
$vai = 'voce'; 
$voce = 'cara';
$cara = 'zoeira'; 
$zoeira = 'never ends!'; 
echo $$$$$$$freak; // Imprime: never ends!?
// ... class Robot 
private $precious1 = 'Nooo 1'; 
protected $precious2 = 'Nooo 2'; 
public function __get($prop) 
{ 
    return $this­>$prop; // <­ Explodindo o encapsulamento! 
} 
// ... 
$robot = new Robot(); 
echo $robot­>precious1; // Nooo 1 
echo $robot­>precious2; // Nooo 2
AGORA A ABERRAÇÃO:
Ainda mais...
// ... 
$obj = 'myRobot'; 
$class = 'Robot'; 
$param1 = 'Robotron'; 
$param2 = 5532;        
$method = 'say'; 
$word = 'Hello Humans'; 
$$obj = (new $class($param1, $param2))­>$method($word); // Imprime Hello Humans 
// ...
STANDARD PHP LIBRARY
USAREMOS:
1. ArrayIterator
2. ArrayAccess(Interface)
PRIMEIRA LOUCURA
class Writer extends ArrayIterator 
{ 
    public function offsetGet($index)  
    {
        echo $index . ' '; 
        return $this; 
    }
} 
$whiter = new Writer(); 
$whiter['Hello']['World']; // Imprime: Hello World 
$whiter['But']['when']['this']['is']['over?']; // Imprime: But when this is over?
SEMPRE PODE PIORAR!
POSSO?
class Crazy implements ArrayAccess  
{ 
    // ... some code here 
    public function offsetGet($offset)  
    {
        $this­>phrase[] = $this­>tagIn() . $offset . $this­>tagOut(); 
        return $this; 
    }
    // ... 
    public function color($colorHex) 
    {
        $last = &$this­>phrase[count($this­>phrase)­1]; 
        $last = '<div style="color: ' . $colorHex .'">' 
                . $last . '</div>'; 
        return $this; 
    }
    // ... more code bellow 
}
AGORA VAMOS USA-LA?
E agora? Onde está seu deus?
// Using the class Crazy! Roda no PHP 7! 
(new Crazy) 
    ['só da']­>color('brown') 
    ['loco'] 
    ['aqui']­>color('red') 
    ['olha o que'] 
    ['esse barba'] 
    ['esta']­>color('blue') 
    ['fazendo']
    ['que']­>color('red') 
    ['maluco'] 
    ['das']­>color('green') 
    ['ideias'] 
­>write();
VARIADICS
PHP 5.6+
$class = 'Robot'; 
$method = 'talk'; 
$arr = ['hello', 'world']; 
// Old but GOLD 
call_user_func_array([new $class, $method], $arr);
// OR WARNING PHP 5.6+ 
$robot = (new $class)­>$method(...$arr);
MÉTODOS MÁGICOS
O mago
Aos Javeiros!
Usando o método __call
class DataMaker
{ 
    protected $matrix; 
    // ... 
    public function __call($name, $args)  
    {
        $this­>matrix[$name] = $args[0]; 
        return $this; 
    }
    // ... 
}
$dados = (new DataMaker) 
        ­>nome('Leonardo') 
        ­>telefone('11 95555­2233') 
        ­>endereco('Rua Teste 123') 
        ­>teste('colocando char especial') 
        ­>toClass('Customer'); 
         
var_dump($dados);
RETORNO:
object(Customer)[2] 
  public 'nome' => string 'Leonardo' (length=8) 
  public 'telefone' => string '11 97379­7752' (length=13) 
  public 'endereco' => string 'Rua Teste 123' (length=13) 
  public 'teste' => string 'colocando char especial' (length=23)
ALGUMAS IDEIAS USANDO UM ROUTER:
// A crazy Router interface 
(new GET)['/ola']
        ­>controller('Carro') 
        ­>action('hello'); 
         
// A Fluid Interface Programming 
request('POST') 
    ­>to('/cliente') 
    ­>controller('Carro') 
    ­>action('hello'); 
// Pratical Router 
$post = new Post;
$post['/hello'] = function ($name) { 
    return 'Hello ' . $name; 
};
BOM ACHO QUE ACABAMOS..
// freak instanciator 
function __($class, array $parms=[]) { 
    return new $class(...$parms);
}
__('FreakPower') 
    [function () { 
        echo '1'; 
    }][function () { 
        echo '2'; 
    }][function () { 
        echo '3'; 
    }][function () { 
        echo '4'; 
    }][function () { 
        echo '5'; 
    }]
­>fire(); // Dispara as closures aleatoriamente, Imprime, ex: 43152
Hey! espera! não, não faça isso!
UTILIDADE PÚBLICA..
Owesome solution by Ocramius
$reader = function & ($object, $property) { 
    $value = & Closure::bind(function & () use ($property) { 
        return $this­>$property; 
    }, $object, $object)­>__invoke(); 
    return $value;
};
$kitchen = new Kitchen(); 
$cake    = & $reader($kitchen, 'cake'); // $this­>cake is private 
$cake    = 'sorry, I ate it!'; 
var_dump($kitchen);
Reference: Accessing private PHP class members without reflection
ESPERO QUE TENHAM GOSTADO
“Yolo lo!” ―Mago do Age of Empires
use function yoloy; 
yoloyolisp(y('yoloyolo', 
    y('lambda', y('request'),  
        y('new', YoLoresPONsE::clASS, y('quote', "yolo u{1f640}")) 
    )
));
https://yolophp.computer/
https://github.com/igorw/yolo
OBRIGADO!
HTTPS://JOIND.IN/TALK/328B5
SLIDES E EXEMPLOS EM:
HTTPS://GITHUB.COM/LEOQBC/PHP-FREAKSHOW2
1 of 21

Recommended

Php Freak Show por Leonardo Tumadjian by
Php Freak Show por Leonardo TumadjianPhp Freak Show por Leonardo Tumadjian
Php Freak Show por Leonardo TumadjianLeonardo Tumadjian
633 views29 slides
TestFest - Respect\Validation 1.0 by
TestFest - Respect\Validation 1.0TestFest - Respect\Validation 1.0
TestFest - Respect\Validation 1.0Henrique Moody
1.6K views43 slides
O que você precisa saber para modelar bancos de dados NoSQL - Dani Monteiro by
O que você precisa saber para modelar bancos de dados NoSQL - Dani MonteiroO que você precisa saber para modelar bancos de dados NoSQL - Dani Monteiro
O que você precisa saber para modelar bancos de dados NoSQL - Dani MonteiroiMasters
1.4K views40 slides
Postgres: wanted, beloved or dreaded? - Fabio Telles by
Postgres: wanted, beloved or dreaded? - Fabio TellesPostgres: wanted, beloved or dreaded? - Fabio Telles
Postgres: wanted, beloved or dreaded? - Fabio TellesiMasters
603 views51 slides
Por que minha query esta lenta? - Suellen Moraes by
Por que minha query esta lenta? - Suellen MoraesPor que minha query esta lenta? - Suellen Moraes
Por que minha query esta lenta? - Suellen MoraesiMasters
370 views12 slides
Relato das trincheiras: o dia a dia de uma consultoria de banco de dados - Ig... by
Relato das trincheiras: o dia a dia de uma consultoria de banco de dados - Ig...Relato das trincheiras: o dia a dia de uma consultoria de banco de dados - Ig...
Relato das trincheiras: o dia a dia de uma consultoria de banco de dados - Ig...iMasters
298 views9 slides

More Related Content

More from iMasters

Arquitetando seus dados na prática para a LGPD - Alessandra Martins by
Arquitetando seus dados na prática para a LGPD - Alessandra MartinsArquitetando seus dados na prática para a LGPD - Alessandra Martins
Arquitetando seus dados na prática para a LGPD - Alessandra MartinsiMasters
3.3K views30 slides
O papel do DBA no mundo de ciência de dados e machine learning - Mauro Pichil... by
O papel do DBA no mundo de ciência de dados e machine learning - Mauro Pichil...O papel do DBA no mundo de ciência de dados e machine learning - Mauro Pichil...
O papel do DBA no mundo de ciência de dados e machine learning - Mauro Pichil...iMasters
287 views11 slides
Desenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana Chahoud by
Desenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana ChahoudDesenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana Chahoud
Desenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana ChahoudiMasters
950 views58 slides
Use MDD e faça as máquinas trabalharem para você - Andreza Leite by
 Use MDD e faça as máquinas trabalharem para você - Andreza Leite Use MDD e faça as máquinas trabalharem para você - Andreza Leite
Use MDD e faça as máquinas trabalharem para você - Andreza LeiteiMasters
682 views42 slides
Entendendo os porquês do seu servidor - Talita Bernardes by
Entendendo os porquês do seu servidor - Talita BernardesEntendendo os porquês do seu servidor - Talita Bernardes
Entendendo os porquês do seu servidor - Talita BernardesiMasters
544 views13 slides
Backend performático além do "coloca mais máquina lá" - Diana Arnos by
Backend performático além do "coloca mais máquina lá" - Diana ArnosBackend performático além do "coloca mais máquina lá" - Diana Arnos
Backend performático além do "coloca mais máquina lá" - Diana ArnosiMasters
477 views40 slides

More from iMasters(20)

Arquitetando seus dados na prática para a LGPD - Alessandra Martins by iMasters
Arquitetando seus dados na prática para a LGPD - Alessandra MartinsArquitetando seus dados na prática para a LGPD - Alessandra Martins
Arquitetando seus dados na prática para a LGPD - Alessandra Martins
iMasters3.3K views
O papel do DBA no mundo de ciência de dados e machine learning - Mauro Pichil... by iMasters
O papel do DBA no mundo de ciência de dados e machine learning - Mauro Pichil...O papel do DBA no mundo de ciência de dados e machine learning - Mauro Pichil...
O papel do DBA no mundo de ciência de dados e machine learning - Mauro Pichil...
iMasters287 views
Desenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana Chahoud by iMasters
Desenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana ChahoudDesenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana Chahoud
Desenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana Chahoud
iMasters950 views
Use MDD e faça as máquinas trabalharem para você - Andreza Leite by iMasters
 Use MDD e faça as máquinas trabalharem para você - Andreza Leite Use MDD e faça as máquinas trabalharem para você - Andreza Leite
Use MDD e faça as máquinas trabalharem para você - Andreza Leite
iMasters682 views
Entendendo os porquês do seu servidor - Talita Bernardes by iMasters
Entendendo os porquês do seu servidor - Talita BernardesEntendendo os porquês do seu servidor - Talita Bernardes
Entendendo os porquês do seu servidor - Talita Bernardes
iMasters544 views
Backend performático além do "coloca mais máquina lá" - Diana Arnos by iMasters
Backend performático além do "coloca mais máquina lá" - Diana ArnosBackend performático além do "coloca mais máquina lá" - Diana Arnos
Backend performático além do "coloca mais máquina lá" - Diana Arnos
iMasters477 views
Dicas para uma maior performance em APIs REST - Renato Groffe by iMasters
Dicas para uma maior performance em APIs REST - Renato GroffeDicas para uma maior performance em APIs REST - Renato Groffe
Dicas para uma maior performance em APIs REST - Renato Groffe
iMasters595 views
7 dicas de desempenho que equivalem por 21 - Danielle Monteiro by iMasters
7 dicas de desempenho que equivalem por 21 - Danielle Monteiro7 dicas de desempenho que equivalem por 21 - Danielle Monteiro
7 dicas de desempenho que equivalem por 21 - Danielle Monteiro
iMasters475 views
Quem se importa com acessibilidade Web? - Mauricio Maujor by iMasters
Quem se importa com acessibilidade Web? - Mauricio MaujorQuem se importa com acessibilidade Web? - Mauricio Maujor
Quem se importa com acessibilidade Web? - Mauricio Maujor
iMasters480 views
Service Mesh com Istio e Kubernetes - Wellington Figueira da Silva by iMasters
Service Mesh com Istio e Kubernetes - Wellington Figueira da SilvaService Mesh com Istio e Kubernetes - Wellington Figueira da Silva
Service Mesh com Istio e Kubernetes - Wellington Figueira da Silva
iMasters604 views
Erros: Como eles vivem, se alimentam e se reproduzem? - Augusto Pascutti by iMasters
Erros: Como eles vivem, se alimentam e se reproduzem? - Augusto PascuttiErros: Como eles vivem, se alimentam e se reproduzem? - Augusto Pascutti
Erros: Como eles vivem, se alimentam e se reproduzem? - Augusto Pascutti
iMasters559 views
Elasticidade e engenharia de banco de dados para alta performance - Rubens G... by iMasters
Elasticidade e engenharia de banco de dados para alta performance  - Rubens G...Elasticidade e engenharia de banco de dados para alta performance  - Rubens G...
Elasticidade e engenharia de banco de dados para alta performance - Rubens G...
iMasters569 views
Construindo aplicações mais confiantes - Carolina Karklis by iMasters
Construindo aplicações mais confiantes - Carolina KarklisConstruindo aplicações mais confiantes - Carolina Karklis
Construindo aplicações mais confiantes - Carolina Karklis
iMasters477 views
Monitoramento de Aplicações - Felipe Regalgo by iMasters
Monitoramento de Aplicações - Felipe RegalgoMonitoramento de Aplicações - Felipe Regalgo
Monitoramento de Aplicações - Felipe Regalgo
iMasters709 views
Clean Architecture - Elton Minetto by iMasters
Clean Architecture - Elton MinettoClean Architecture - Elton Minetto
Clean Architecture - Elton Minetto
iMasters917 views
Mobile DevOps: O caminho do sucesso para desenvolvimento de aplicativos - Let... by iMasters
Mobile DevOps: O caminho do sucesso para desenvolvimento de aplicativos - Let...Mobile DevOps: O caminho do sucesso para desenvolvimento de aplicativos - Let...
Mobile DevOps: O caminho do sucesso para desenvolvimento de aplicativos - Let...
iMasters488 views
A nova geração de persistência de dados com grafos - Otávio Santana by iMasters
A nova geração de persistência de dados com grafos - Otávio SantanaA nova geração de persistência de dados com grafos - Otávio Santana
A nova geração de persistência de dados com grafos - Otávio Santana
iMasters428 views
Navegadores por de baixo dos panos - Ana Luiza Bastos by iMasters
Navegadores por de baixo dos panos - Ana Luiza BastosNavegadores por de baixo dos panos - Ana Luiza Bastos
Navegadores por de baixo dos panos - Ana Luiza Bastos
iMasters583 views
Automatizando Visual Regression Testing - Samanta Cicilia by iMasters
Automatizando Visual Regression Testing - Samanta CiciliaAutomatizando Visual Regression Testing - Samanta Cicilia
Automatizando Visual Regression Testing - Samanta Cicilia
iMasters445 views
Design UX - Quanto isso influencia seu projeto - Guilherme Sester Araujo by iMasters
Design UX - Quanto isso influencia seu projeto - Guilherme Sester AraujoDesign UX - Quanto isso influencia seu projeto - Guilherme Sester Araujo
Design UX - Quanto isso influencia seu projeto - Guilherme Sester Araujo
iMasters622 views

Recently uploaded

5) Anexo do folder e da foto de distribuição do folder: Após elaborado o fold... by
5) Anexo do folder e da foto de distribuição do folder: Após elaborado o fold...5) Anexo do folder e da foto de distribuição do folder: Após elaborado o fold...
5) Anexo do folder e da foto de distribuição do folder: Após elaborado o fold...azulassessoriaacadem3
79 views3 slides
e) Se for feita a Derivada da função lucro, qual função é obtida? by
e) Se for feita a Derivada da função lucro, qual função é obtida?e) Se for feita a Derivada da função lucro, qual função é obtida?
e) Se for feita a Derivada da função lucro, qual função é obtida?azulassessoriaacadem3
25 views3 slides
FESTEJAR O PÃO-POR-DEUS NO LAR VALE FORMOSO.pdf by
FESTEJAR O PÃO-POR-DEUS NO LAR VALE FORMOSO.pdfFESTEJAR O PÃO-POR-DEUS NO LAR VALE FORMOSO.pdf
FESTEJAR O PÃO-POR-DEUS NO LAR VALE FORMOSO.pdfColégio Santa Teresinha
243 views11 slides
Ao refletir sobre a importância da idealização de práticas inovadoras na Educ... by
Ao refletir sobre a importância da idealização de práticas inovadoras na Educ...Ao refletir sobre a importância da idealização de práticas inovadoras na Educ...
Ao refletir sobre a importância da idealização de práticas inovadoras na Educ...azulassessoriaacadem3
53 views2 slides
a) Explique como ocorre a circulação do sangue dentro do coração (câmaras car... by
a) Explique como ocorre a circulação do sangue dentro do coração (câmaras car...a) Explique como ocorre a circulação do sangue dentro do coração (câmaras car...
a) Explique como ocorre a circulação do sangue dentro do coração (câmaras car...HelpEducacional
485 views3 slides
b) Caso n. 02: Considerando o disposto na NBC PG 01 – Código de Ética Profiss... by
b) Caso n. 02: Considerando o disposto na NBC PG 01 – Código de Ética Profiss...b) Caso n. 02: Considerando o disposto na NBC PG 01 – Código de Ética Profiss...
b) Caso n. 02: Considerando o disposto na NBC PG 01 – Código de Ética Profiss...azulassessoriaacadem3
46 views2 slides

Recently uploaded(20)

5) Anexo do folder e da foto de distribuição do folder: Após elaborado o fold... by azulassessoriaacadem3
5) Anexo do folder e da foto de distribuição do folder: Após elaborado o fold...5) Anexo do folder e da foto de distribuição do folder: Após elaborado o fold...
5) Anexo do folder e da foto de distribuição do folder: Após elaborado o fold...
e) Se for feita a Derivada da função lucro, qual função é obtida? by azulassessoriaacadem3
e) Se for feita a Derivada da função lucro, qual função é obtida?e) Se for feita a Derivada da função lucro, qual função é obtida?
e) Se for feita a Derivada da função lucro, qual função é obtida?
Ao refletir sobre a importância da idealização de práticas inovadoras na Educ... by azulassessoriaacadem3
Ao refletir sobre a importância da idealização de práticas inovadoras na Educ...Ao refletir sobre a importância da idealização de práticas inovadoras na Educ...
Ao refletir sobre a importância da idealização de práticas inovadoras na Educ...
a) Explique como ocorre a circulação do sangue dentro do coração (câmaras car... by HelpEducacional
a) Explique como ocorre a circulação do sangue dentro do coração (câmaras car...a) Explique como ocorre a circulação do sangue dentro do coração (câmaras car...
a) Explique como ocorre a circulação do sangue dentro do coração (câmaras car...
HelpEducacional485 views
b) Caso n. 02: Considerando o disposto na NBC PG 01 – Código de Ética Profiss... by azulassessoriaacadem3
b) Caso n. 02: Considerando o disposto na NBC PG 01 – Código de Ética Profiss...b) Caso n. 02: Considerando o disposto na NBC PG 01 – Código de Ética Profiss...
b) Caso n. 02: Considerando o disposto na NBC PG 01 – Código de Ética Profiss...
6- Sabendo que o caso do paciente 3 está sendo causado por uma condução elétr... by azulassessoriaacadem3
6- Sabendo que o caso do paciente 3 está sendo causado por uma condução elétr...6- Sabendo que o caso do paciente 3 está sendo causado por uma condução elétr...
6- Sabendo que o caso do paciente 3 está sendo causado por uma condução elétr...
3) Os AINEs são classificados de acordo com sua composição química. A esse re... by HelpEducacional
3) Os AINEs são classificados de acordo com sua composição química. A esse re...3) Os AINEs são classificados de acordo com sua composição química. A esse re...
3) Os AINEs são classificados de acordo com sua composição química. A esse re...
HelpEducacional132 views
5) Anexo do folder e da foto de distribuição do folder: Após elaborado o fold... by azulassessoriaacadem3
5) Anexo do folder e da foto de distribuição do folder: Após elaborado o fold...5) Anexo do folder e da foto de distribuição do folder: Após elaborado o fold...
5) Anexo do folder e da foto de distribuição do folder: Após elaborado o fold...
Ao refletir sobre a importância da idealização de práticas inovadoras na Educ... by azulassessoriaacadem3
Ao refletir sobre a importância da idealização de práticas inovadoras na Educ...Ao refletir sobre a importância da idealização de práticas inovadoras na Educ...
Ao refletir sobre a importância da idealização de práticas inovadoras na Educ...
3) Os AINEs são classificados de acordo com sua composição química. A esse re... by azulassessoriaacadem3
3) Os AINEs são classificados de acordo com sua composição química. A esse re...3) Os AINEs são classificados de acordo com sua composição química. A esse re...
3) Os AINEs são classificados de acordo com sua composição química. A esse re...
a) Explique um motivo da relevância da ferramenta para compreender a situação... by azulassessoriaacadem3
a) Explique um motivo da relevância da ferramenta para compreender a situação...a) Explique um motivo da relevância da ferramenta para compreender a situação...
a) Explique um motivo da relevância da ferramenta para compreender a situação...
4. No vídeo “Cadela aprende libras para entender comando dos donos” foi apres... by azulassessoriaacadem3
4. No vídeo “Cadela aprende libras para entender comando dos donos” foi apres...4. No vídeo “Cadela aprende libras para entender comando dos donos” foi apres...
4. No vídeo “Cadela aprende libras para entender comando dos donos” foi apres...
4. No vídeo “Cadela aprende libras para entender comando dos donos” foi apres... by azulassessoriaacadem3
4. No vídeo “Cadela aprende libras para entender comando dos donos” foi apres...4. No vídeo “Cadela aprende libras para entender comando dos donos” foi apres...
4. No vídeo “Cadela aprende libras para entender comando dos donos” foi apres...
1) Descreva como os AINEs não seletivos exercem seu mecanismo de ação, reduzi... by HelpEducacional
1) Descreva como os AINEs não seletivos exercem seu mecanismo de ação, reduzi...1) Descreva como os AINEs não seletivos exercem seu mecanismo de ação, reduzi...
1) Descreva como os AINEs não seletivos exercem seu mecanismo de ação, reduzi...
HelpEducacional68 views
REVISÃO PARA O PROVÃO DE HISTÓRIA.pptx by profesfrancleite
REVISÃO PARA O PROVÃO DE HISTÓRIA.pptxREVISÃO PARA O PROVÃO DE HISTÓRIA.pptx
REVISÃO PARA O PROVÃO DE HISTÓRIA.pptx
profesfrancleite48 views
3. Os vídeos “Filha de pais surdos dá lição de amor” e “Cadela aprende libras... by azulassessoriaacadem3
3. Os vídeos “Filha de pais surdos dá lição de amor” e “Cadela aprende libras...3. Os vídeos “Filha de pais surdos dá lição de amor” e “Cadela aprende libras...
3. Os vídeos “Filha de pais surdos dá lição de amor” e “Cadela aprende libras...
a) Explique como ocorre a circulação do sangue dentro do coração (câmaras car... by HelpEducacional
a) Explique como ocorre a circulação do sangue dentro do coração (câmaras car...a) Explique como ocorre a circulação do sangue dentro do coração (câmaras car...
a) Explique como ocorre a circulação do sangue dentro do coração (câmaras car...
HelpEducacional202 views
4) Explique a diferença dos coxibes em relação aos AINEs convencionais, consi... by HelpEducacional
4) Explique a diferença dos coxibes em relação aos AINEs convencionais, consi...4) Explique a diferença dos coxibes em relação aos AINEs convencionais, consi...
4) Explique a diferença dos coxibes em relação aos AINEs convencionais, consi...
HelpEducacional62 views

PHP Experience 2016 - [Palestra] 20×20: PHP Freakshow – O estranho, o esquisito e o raro