2
respostas

Notice: Use of undefined constant - assumed ' ' in C:\xampp\htdocs\design-patterns-II\Calculadora\RaizQuadrada.php on line 21

Quando executo o código:

$raizquadrada = new RaizQuadrada(new Soma(new Numero(3), new Numero(6)));

    echo "Raiz Quarada: " .  $raizquadrada->avalia() . "<br><br>";

RaizQuadrada.php

<?php

    class RaizQuadrada implements Expressao {

        private $esquerdo;

        function __construct(Expressao $esquerdo) {
            $this->esquerdo = $esquerdo;    
        }

        public function avalia() {
            return (int) sqrt($this->esquerdo->avalia());
        }

        public function expressao() {
            return 'raizQ {' . $this->esquerdo->expressao() . '}';
        }

    } 

?>

Está exibindo:

Notice: Use of undefined constant   - assumed ' ' in C:\xampp\htdocs\design-patterns-II\Calculadora\RaizQuadrada.php on line 21
Raiz Quadrada:  3

Mas se rodo assim:

    $raizquadrada = new RaizQuadrada(new Numero(9));
    echo "Raiz Quarada: " .  $raizquadrada->avalia() . "<br><br>";

Mostra assim, sem erro:

Raiz Quarada: 3

Qual é o problema?

2 respostas

Oi Carlos, tudo bom?

Realmente, bem estranho mesmo. Olhando por cima aqui não encontrei nenhum motivo plausível... Como está sua classe Soma e sua class Numero? Compartilha aqui com a gente =)

Abraço

<?php

    class Numero implements Expressao {

        private $numero;

        function __construct($inteiro) {
            $this->numero = $inteiro;    
        }


        public function avalia() {
            return $this->numero;
        }

        public function expressao() {
            return " " . $this->numero . " ";
        }
    }

?>
<?php

    class Soma implements Expressao {

        private $esquerdo;
        private $direito;

        function __construct(Expressao $esquerdo, Expressao $direito) {
            $this->esquerdo = $esquerdo;    
            $this->direito = $direito;    
        }

        public function avalia() {
            $valorEsquerdo = $this->esquerdo->avalia();
            $valorDireito  = $this->direito->avalia();
            return $valorEsquerdo + $valorDireito;
        }

        public function expressao() {
            return "(" . $this->esquerdo->expressao() . " + " . $this->direito->expressao() . ")";
        }

    }

?>

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software