Archive for August, 2006

Brasil e Índia empatados no número de desenvolvedores PHP

Tuesday, August 29th, 2006

De acordo com a pesquisa realizada pela Evans Data Corporation, a Europa Oriental é o local onde existem mais desenvolvedores usando PHP, cerca de 39%.
Brasil e Índia estão empatados com cerca de pouco mais de 31%.
Cerca de 25% dos desenvolvedores chineses utilizam PHP e na américa do norte a taxa é de 35%.

A pesquisa que também engloba o uso de AJAX verificou que o AJAX é mais utilizado nos mercados emergentes do que nos mercados desenvolvidos.

A notícia original em inglês encontra-se aqui.

Série design patterns com PHP: II - Factory

Wednesday, August 23rd, 2006

Olá. Fiquei algum tempo sem postar nada aqui relacionado a TI, pois estive com alguns problemas pessoais que me consumiram muito tempo. Porém, agora estou publicando o segundo artigo da séria Design patterns com PHP, desta vez, o padrão Factory.

Quem não viu ou quer ver novamente o artigo sobre singleton, o encontrará aqui.

Eu espero conseguir postar novos artigos com maior regularidade. Bom, vamos ao que interessa.

O que é design pattern?
São formas de se escrever código de programação utilizando conceitos de melhores práticas de programação que visam mostrar soluções para problemas comuns no desenvolvimento de software.

O que é o factory?
Basicamente, o pattern factory consiste em uma fábrica de objetos de classes que implementam uma mesma interface e quando precisamos de uma instância de uma destas classes, a factory nos retorna este objeto de forma dinâmica.

Quais os pré-requisitos para se aproveitar melhor este artigo?
Conhecimento dos conceitos de programação orientada a objetos.
Conhecimentos das funcionalidades OO do PHP5.

Vou tentar tornar este artigo bastante prático, para isso iremos criar uma interface e algumas classes.

A interface abaixo será implementa por algumas classes posteriormente.

Porntanto, supondo que exista a interface IBanco:

Interface IBanco {

public function connect();

}

A interface IBanco define o método connect() que deverá ser comum a todas as classes que a implementarem.

Vamos agora, criar mais três classes:

A primeira será a classe BancoMysql que será responsável pela comunicação com o SGBDR mySQL, a segunda será a classe BancoPostgres, que será responsável pela comunicação com o SGBDR PostgreSQL e por fim, a classe BancoOracle, que se comunicará com o SGBDR ORACLE.

BancoMysql.php:

include_once ‘Ibanco.php’;

class BancoMysql() implements IBanco {

public function connect() {

return new PDO('mysql:host=localhost;dbname=banco','root','');

}

}

BancoPostgres.php:

include_once ‘Ibanco.php’;

class BancoPostgres() implements IBanco {

public function connect() {
return new PDO('pgsql:host=localhost port=5432 dbname=banco user=username password=senha ');
}

}

BancoOracle.php:

include_once ‘Ibanco.php’;

class BancoOracle() implements IBanco {

public function connect() {

return new PDO(’OCI:dbname=accounts;charset=UTF-8′, ‘username’, ’senha’

‘);
}

}

Utilizamos a palavra reservada implements para informar que as classes acima implementam a interface IBanco.

Agora vamos criar a classe Factory que nos retornará um objeto de uma dessas classes sem que o usuário que está utilizando estas classes precise saber o nome real da classe.

Vejamos então a implementação desta classe:

include_once ‘BancoMysql.php’;

include_once ‘BancoPostgres.php’;

include_once ‘BancoOracle.php’;

class BancoFactory {

public function factory($banco) {

switch ($banco) {

case “mysql”:
return new BancoMysql();
break;

case “postgres”:
return new BancoMysql();
break;

case “oracle”:
return new BancoMysql();
break;
}

}

}

Na classe acima, de acordo com o parâmetro passado, é retornada uma instância de sua classe respectiva e se um dia houver uma mudança qualquer, por exemplo no nome da classe, você só precisará mudar em um lugar, na classe Factory.

Agora vamos executar esta classe:

include_once ‘BancoFactory.php’;

$bancoFactory = new BancoFactory();

// Criando instância da classe BancoMysql

$connMysql = $bancoFactory->factory(“mysql”);

print_r($connMysql->connect());

// Criando instância da classe BancoPostgres

$connPostgres = $bancoFactory->factory(“postgres”);

print_r($connPostgres->connect());

// Criando instância da classe BancoOracle

$connOracle = $bancoFactory->factory(“oracle”);

print_r($connOracle->connect());

Espero que este artigo tenha ajudado a esclarecer sobre o pattern Factory.

Referências:

PDO – Foi utilizado PDO para criar objetos referentes a cada banco.
http://www.php.net/pdo