⊗ppOpIhCOM 29 of 107 menu

Chamando um método sobrescrito em POO em PHP

Ao sobrescrever um método, a classe filha perde acesso ao método sobrescrito da classe pai. No entanto, ainda é possível acessá-lo. Isso é feito usando a palavra-chave parent, que aponta para a classe pai.

Vamos ver um exemplo de quando podemos precisar de acesso ao método da classe pai. Suponha que temos a seguinte classe pai:

<?php class User { private $name; public function setName($name) { $this->name = $name; } public function getName() { return $this->name; } } ?>

Suponha que na classe filha sobrescrevemos o método da classe pai:

<?php class Student extends User { public function setName($name) { if (strlen($name) > 0) { $this->name = $name; } else { echo 'erro no nome do estudante'; } } } ?>

Pode-se notar que no método sobrescrito, quando a condição é atendida, essencialmente o código do método da classe pai é executado. Isso resulta em uma duplicação desnecessária de código.

Podemos nos livrar disso chamando o método da classe pai. Vamos fazer isso:

<?php class Student extends User { public function setName($name) { if (strlen($name) > 0) { parent::setName($name); // método da classe pai } else { echo 'erro no nome do estudante'; } } } ?>

Dado o seguinte código:

<?php class User { private $age; public function setAge($age) { if ($age >= 0) { $this->age = $age; } else { echo 'precisa de idade maior que 0'; } } } class Employee extends User { public function setAge($age) { if ($age <= 120) { if ($age >= 0) { $this->age = $age; } else { echo 'precisa de idade maior que 0'; } } else { echo 'precisa de idade menor que 120'; } } } ?>

Na classe Employee, corrija e simplifique o setter de idade, usando o método original da classe pai.

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