Fórum Trabalhando com métodos mágicos __Get e Set em PHP #560430

21/08/2016

0

PHP

1º - Trabalhando com métodos mágicos (__Get e __Set) como faço para sobrescrever um método protegido (protected $salario;)? Como os métodos get e set era mais fácil eu era só sobrescrever o método get e na nova classe.
És o print do código a baixo quero o contabilista e o programador tenham o cálculo do salário efectuado de forma diferente, como faço usando o código abaixo?

2º - Posso trabalhar com os métodos get e set em vez dos mágicos (__get e __set), será não haverá problema no código?

3º - Quais as vantagens de um e de outro?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
// Criação da classe funcionário
        class Funcionario{
            private $nome;
            private $datanasc;
            private $identificacao;
            protected $salario;
 
             
            // Criação dos métodos __Get e __Set
            public function __get($valor){
                return $this->$valor;
            }
            public function __set($propriedade,$valor){
                $this->$propriedade = $valor;
            }
        }
?>


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
// Criação da classe contabilista
    class Contabilista extends Funcionario {
            private $CRC;
             
             
            public function __costruct($nome,$datanasc,$identificacao,$salario, $CRC){
                parent::__costruct($nome,$datanasc,$identificacao,$salario);
                 
            }
            public function __get($valor){
                return $this->$valor;
            }      
            public function __set($propriedade,$valor){
                $this->$propriedade = $valor;
            }
    }
?>


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
// Criação da classe programador
    class Programador extends Funcionario {
        private $lingprog;
         
        public function __costruct($nome,$datanasc,$identificacao, $salario,$lingprog){
            parent::__costruct($nome,$datanasc,$identificacao, $salario);
        }
        public function __get($valor){
            return $this->$valor;
        }
        public function __set($propriedade,$valor){
            $this->$propriedade = $valor;
        }
    }
         
?>


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">
<head>
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />
<title>Untitled Document</title>
</head>
<?php
    // Criação da página index
        include(\"Funcionario.class.php\");
        include(\"Contabilista.class.php\");
        include(\"Programador.class.php\");
         
        $objpessfis = new Contabilista();
        $objpessfis->nome = \"Carlos Buta\";
        $objpessfis->datanasc = \"15 de Junho de 1987\";
        $objpessfis->identificacao = \"002025701LA036\";
        $objpessfis->salario = 2090;
         
        echo \"<h2>Dados da Pessoa Física</h2>\";
        echo \"Nome: \".$objpessfis->nome;
        echo \"
\";
        echo \"Data de Nascimento: \".$objpessfis->datanasc;
        echo \"
\";
        echo \"BI: \".$objpessfis->identificacao;
 
        echo \"
\";
         
             
            $objempresa = new Programador();
            $objempresa->nome = \"Anacleto Bunga\";
            $objempresa->datanasc = \"01 de Dezembro de 2004\";
            $objempresa->identificacao = \"003215410LA021\";
$objempresa-> salario = 3560;
            $objempresa-> lingprog = \"PHP\";
     
             
            echo \"<h2>Dados do Programador</h2>\";
            echo \"Nome: \".$objempresa->nome;
            echo \"
\";
            echo \"Data de Nascimento: \".$objempresa->datanasc;
            echo \"
\";
            echo \"BI: \".$objempresa->identificacao;
            echo \"
\";
echo \"Salário: \".$objempresa->salario;
            echo \"
\";
 
            echo \"Linguagem de Programação: \".$objempresa-> lingprog;
             
         
        ?>
<body>
</body>
</html>
Anacleto Linux

Anacleto Linux

Responder

Posts

22/08/2016

Anacleto Linux

Há algo que não perguntei lá em cima: Com relação ao construtor das classes filhas é possível trabalhar assim ou tem outra forma melhor?

Obrigado a todos.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar