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.
 
Arquivo de Códigos - Página Inicial
Códigos-fonte
» Códigos-fonte e exemplos completos
Linguagens
» ActionScript
» Adobe AIR
» Adobe Flex
» AJAX
» C
» C#
» C++
» CSS
» Delphi
» DHTML - Dynamic HTML
» HTML/XHTML
» Java
» JavaFX
» JavaScript
» Java Servlets
» JSP - Java Server Pages
» Perl
» PHP
» PHP-GTK
» Python
» Ruby
» Tcl/Tk
» VB.NET
Bancos de Dados
» IBM DB2
» MySQL
Frameworks
» CodeIgniter
» jQuery
» JSF - Java Server Faces
» Qt
» Ruby On Rails
» Struts
» Struts 2
» wxWidgets
» Zend Framework
Container/Servidor
» Apache Tomcat
» Apache Web Server
Ferramentas
» Apache Ant
» iTextSharp (iText#)
Referências
» CSS1 e CSS2
» JavaScript
Serviços On-Line
» Qual é meu IP?
» Tabela Cores HTML I
» Tabela Cores HTML II
» Lista de Mime Types
» Códigos Teclas Virtuais
Usuários On-Line
Visitantes: 47
PHP
O que há de novo no PHP 5?
40 dicas e truques sobre como trabalhar com datas e horas em PHP
60 dicas e truques sobre como trabalhar com strings e caracteres em PHP
PHP e a Orientação a Objetos - POO (Curso Completo)

DHTML
Curso completo de DHTML para iniciantes

CSS
Como definir uma imagem de fundo fixa na página
Definindo uma imagem de fundo para botões HTML
Você está aqui: Inicio -> Tutoriais -> PHP
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:

<?
$valor = 10;

function alterar(&$v){
  $v = 20;
}

alterar($valor);
echo $valor;
?>


1 - Introdução
2 - Novo modelo de orientação a objetos
 
 
Arquivo de Códigos - Página Inicial
Veja dicas, truques e anotações de Struts
Veja dicas, truques e anotações de outras linguagens
VB.NET - Como adicionar itens a uma ListBox em tempo de execução
C++ - Obtendo o conteúdo invertido de uma string usando rbegin() e rend()
.NET Framework - Entenda a classe StreamWriter
C# (CSharp) - Como obter a quantidade de dimensões de um array
VB.NET - Como adicionar itens a um ComboBox
PHP - Como contar a frequencia de palavras em uma string
PHP - Passos necessários para abrir um arquivo usando PHP
VB.NET - Exibir a hora atual formatada usando o método ToString
Java Servlets - Redirecionando o navegador para uma URL absoluta usando os métodos setStatus() e setHeader() da interface HttpServletResponse
PHP - Obtendo uma lista completa das variáveis de servidor disponíveis via $_SERVER

       

http://www.arquivodecodigos.net
:: Arquivo de Códigos - Softwares e Consultoria em Programaçã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 as notas legais antes de proceder com o acesso e leitura do
conteúdo disponibilizado nestas páginas.

Fale Conosco: (62) 3261-7018 / (62) 8185-0734

Desenvolvedor Responsável: Osmar J. Silva

Página Inicial Contatos Pesquisar Mapa do Site