Precisa de um freelancer, códigos-fonte e exemplos completos? Bem-vindo(a) ao meu site. Além de realizar alguns serviços como freelancer eu tenho alguns códigos-fonte e exemplos completos de Java, Delphi, PHP, Python, C/C++, Hibernate, JPA, Spring, JSP, Servlets, Ruby, Ruby On Rails e muitas outras linguagens e frameworks. Veja como falar comigo clicando aqui.
O que há de novo no PHP
5 - Novo modelo de orientação a objetos
O modelo de orientação
a objetos no PHP 3 e PHP 4 apresentava muitas limitações.
A maior delas (que levou a outras limitações)
era o fato de que a semântica de cópia de objetos
era a mesma dos tipos nativos. Quando atribuíamos uma
variável (que apontava para um objeto) a outra variável,
uma cópia do objeto era criada. Isso não somente
causava um impacto na performance como também causava
comportamentos estranhos e muitos bugs em aplicações
escritas em PHP 3 e 4, pois os desenvolvedores pensavam que
ambas variáveis apontavam para o mesmo objeto, o que
não era verdade. As variáveis apontavam para cópias
distintas do mesmo objeto. Alterações feitas em
uma cópia não alterava a outra. Veja um exemplo:
class Person{
var $name;
function getName(){
return $this->name;
}
function setName($name){
$this->name = $name;
}
function Person($name){
$this->setName($name);
}
}
function changeName($person, $name){
$person->setName($name);
}
$person = new Person("Carlos");
changeName($person, "Maria");
print $person->getName();
Em PHP 4, este código exibiria:
Carlos
O motivo é que passamos o objeto $person para a função
changeName por valor, e assim, $person é copiado e changeName
trabalhará em uma cópia do objeto, e não
no objeto original.
Uma saída que a maioria dos desenvolvedores adotavam
era usar o símbolo "&" para forçar
a passagem por referência. Assim:
function changeName(&$person,
$name){
$person->setName($name);
}
Agora o resultado desejado seria alcançado em PHP 3 e
PHP 4.
Em PHP 5, a infraestrutura do modelo de objetos foi reescrita
para trabalhar com referências a objetos (object handles).
A menos que você explicitamente clone um objeto usando
a palavra-chave clone, você nunca precisará
criar cópias de seus objetos. Em PHP 5 você não
mais precisa passar objetos por referência ou atribuí-los
por referência.
Obs: Passagem por referência e atribuição
por referência ainda é suportada, caso você
realmente queira alterar o conteúdo de uma variável
(seja ela objeto ou outro tipo de dados).
Veja um trecho de código onde um valor primitivo é
passado por referência a uma função:
Todo o conteúdo deste site,
quando não devidamente observado, pertence a seus idealizadores
e não
poderá ser usado para outras finalidades senão estudo e
aprimoramento de técnicas de programação.
Certifique-se de ler asnotas legaisantes de proceder com
o acesso e leitura do
conteúdo disponibilizado nestas páginas.