I am having difficulty comparing two numbers in php

0

I'm a beginner in php and I'm trying to compare two numbers, but when I send the numbers to my other page it ends up giving an error, I would like help and if possible a very detailed explanation of what my error was.

Error:

  

Warning: Missing argument 1 for Major :: greater () e Notice: Undefined variable

Page:

<?php require_once 'maior.php'; ?>    
<!DOCTYPE html>
<html>
<head>
  <title>Exemplo</title>
  <meta charset="utf-8">
</head>
<body>
  <form action="" method="post">
    <p>
      <label>Informe o primeiro número</label><br/>      
      <input type="text" placeholder="Primeiro número" name="primeiroNumero" value="">
    </p>    
    <p>
      <label>Informe o segundo número</label><br/>
      <input type="text" placeholder="Segundo número" name="segundoNumero" value=""><br>
    </p>    
    <input type="submit"></input><br>
  </form>        
  <?php
    $post = filter_input_array(INPUT_POST);

    if (isset($post)) {    
      $primeiroNumero = $post["primeiroNumero"];
      $segundoNumero = $post["segundoNumero"];                
   ?><br/>
 <div>
 <?php
   $maior = new Maior();
   $maior->maior($primeiroNumero, $segundoNumero);
 ?>
</div>
<?php } ?>
</body>
</html>

Page 2, contains the comparison and is where the browser says the error is:

<?php
class Maior {    
     function maior($primeiroNumero, $segundoNumero){
        if ($primeiroNumero > $segundoNumero){
            echo "O primeiro número é maior que o segundo";
        }
        elseif($segundoNumero > $primeiroNumero){
            echo "O segundo número é maior que o primeiro";
        }
        else
            echo "Os números tem os mesmo valores";
    }   
}
    
asked by anonymous 22.05.2017 / 22:34

2 answers

1

The method has the same name as the class, so it is interpreted as a method the magic method __construct . Change the name of the maior() or class method to no longer get this error.

Edit: See more about builders at: link

Note: for good practice, set the visibility of the method, eg

   public function comparaValores($primeiroNumero, $segundoNumero){}
    
22.05.2017 / 22:52
0

It seems that your variable in the main code has the same name as the method and also the constructor in your class is missing. Try to save the following codes:

<?php
class Maior{

    public $primeiroNumero;
    public $segundoNumero;

    public function __construct($primeiroNumero,$segundoNumero){
       $this->primeiroNumero = $primeiroNumero;
       $this->segundoNumero = $segundoNumero;
    } 

    public function maior() {

        if($this->primeiroNumero > $this->segundoNumero){
            return "O primeiro número é maior que o segundo";
        }
        elseif($this->segundoNumero > $this->primeiroNumero){
            return "O segundo número é maior que o primeiro";
        }
        else{
            return "Os números tem os mesmo valores";
         }
    }   
}
?>

and on your home page:

    $most = new Maior(10,15);
    $valueMaior = $most->maior();
    echo $valueMaior;
    
22.05.2017 / 22:57