Boas práticas de programação com Object Calisthenics
PHP não é coisa de moleque
1. PHP NÃO é coisa Felipe Ribeiro
http://feliperibeiro.com
de moleque! felipernb@gmail.com
2. Felipe Ribeiro
•Graduando (concluinte) em Ciência da Computação na
UFCG
•Zend Certified Engineer
•Desenvolvedor Web há 7 anos, atualmente trabalhando
para a startup Shoprizer.com
•Experiência em grids computacionais e sistemas
distribuídos
•Membro fundador do grupo PHP-PB
•Contribuidor do PHP no Google Summer of
Code 2009
11. Qualificação de profissionais
•PHP é fácil de aprender e sua flexibilidade permite que
seja utilizado das mais diversas maneiras (boas ou
ruins)
•Programadores Java normalmente precisam de uma
formação mais sólida (orientação a objeto, padrões de
projeto, eficiência de algoritmos, estruturas de dados, e
etc.)
•BONS programadores PHP também
precisam!!!
12. Marketing
•PHP não é produto de nenhum big player do mercado
enterprise
•Mas já despertou o interesse de:
•IBM
•Oracle
•Yahoo!
•Microsoft
•entre outros...
13. Marketing
•PHP está presente em mais de 25 milhões de sites
•Com tudo isso, pra que propaganda? A propaganda
somos nós e tudo o que nós fazemos!
20. Algoritmos de alta
complexidade
Indexação e busca
Recomendação de produtos
(Amazon) e músicas (Last.fm)
Folksonomia e ranking
(Delicious e Flickr)
Teoria dos Grafos (redes
sociais)
25. "PHP is not about purity in CS principles or
architecture; it is about solving the ugly web
problem with an admittedly ugly, but extremely
functional and convenient solution. If you are
looking for purity, you are in the wrong boat. Get
out now before you get hit by a wet cat!" -
Rasmus Lerdorf
26. interface Printer {
void print(Message message);
}
class SystemOutPrinter implements Printer {
class Message {
public void print(Message message) {
private String message;
System.out.println(message);
public Message(String message) {
}
this.message = message;
}
}
public void print(Printer printer) {
public class HelloWorld {
printer.print(this);
}
public static void main(String[] args) {
Message message = new Message("Hello,
public String toString() {
World!");
return message;
AbstractPrinterFactory factory =
}
AbstractPrinterFactory.getFactory();
}
m
Printer printer = factory.getPrinter();
e
message.print(printer);
abstract class AbstractPrinterFactory {
}
ld
public static AbstractPrinterFactory getFactory() {
r
}
return new SystemOutPrinterFactory();
o !
}
public abstract Printer getPrinter();
W A acia
lo AV rocr
}
class SystemOutPrinterFactory extends
e l J u
H
AbstractPrinterFactory {
public Printer getPrinter() {
ab
}
return new SystemOutPrinter();
e su
}
29. T!
E os
.N
a d
ic
rí st
é c te oft
so
ra ros
e ca ic
Is
ad os M
b ilid ut
ta rod
a es p
E
P.S.: O orkut foi reescrito em Java, mas esse shot é dos velhos tempos de .NET
66. PHP 5.3
•Namespaces
Definição Uso
// diretamente
namespace YahooNews;
$foo = new YahooNewsDir;
class Dir {
...
// importando o namespace
}
use YahooNews;
$foo = new NewsDir;
// renomeando a classe
use YahooNewsDir as YND;
$foo = new YND;
67. PHP 5.3
•Lambdas e closures
$lambda = function () {
echo "Hello World!n";
};
$lambda();
68. PHP 5.3
•Lambdas e closures
function getSomador($x) {
return function ($y) use ($x) {
return $x + $y;
};
}
$somador = getSomador(10);
echo $somador(5); //15
echo $somador(32); //42