⊗ppOpAdPBR 23 of 107 menu

Passagem de objetos por referência em OOP no PHP

Suponha que temos a seguinte classe User:

<?php class User { public $name; public $age; public function __construct($name, $age) { $this->name = $name; $this->age = $age; } } ?>

Suponha que criamos um objeto desta classe:

<?php $user = new User('john', 30); ?>

Agora imagine a seguinte situação: você deseja atribuir o valor da variável $user a alguma outra variável, por exemplo, $test.

Se não estivéssemos falando de objetos, mas de primitivos, ou seja, strings, números, arrays, etc., então a variável $test receberia uma cópia do valor da variável $user.

Isso significa que alterações em qualquer uma das variáveis posteriormente não alterariam o valor da outra variável. Vejamos um exemplo:

<?php $user = 1; $test = $user; // a variável $test agora tem 1 $test = 2; // a variável $test agora tem 2, e $user ainda tem 1 ?>

Com objetos é diferente - ao atribuir a outra variável, os objetos não são copiados, mas sim passados por referência: isso significa que ambas as variáveis têm como valor o mesmo objeto. Isso tem uma consequência importante: se alterarmos algumas propriedades do objeto usando uma variável, a segunda variável terá as mesmas alterações.

Vamos ver na prática. Vamos criar um objeto de usuário:

<?php $user = new User('john', 30); ?>

Vamos atribuir o objeto a outra variável:

<?php $test = $user; ?>

Vamos alterar a propriedade name na variável $test

<?php $test->name = 'eric'; ?>

Vamos verificar se o objeto compartilhado foi alterado. Vamos exibir a propriedade name da variável $user:

<?php echo $user->name; // exibirá 'eric'! ?>

Crie uma classe Product, na qual existirão as seguintes propriedades: name, price.

Crie um objeto da classe Product, armazene-o na variável $product1.

Atribua o valor da variável $product1 à variável $product2. Verifique que ambas as variáveis referem-se ao mesmo objeto.

Português
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Nós usamos cookies para o funcionamento do site, análises e personalização. O processamento de dados é realizado de acordo com a Política de Privacidade.
aceitar todas configurar rejeitar