2016-05-24 2 views
0

Я хочу отобразить номер таблицы, которую я получаю из формы HTML, в этом методе: private function getComanda();.Класс ООП частный/защищенный

Я пользуюсь общественностью function displayMethod(), чтобы позвонить частным function getComanda().

Я хочу, чтобы номер таблицы отображался в таблице классов в public function setMasa($nr_masa), который имеет switch. Он ничего не отображает.

Когда я пытаюсь отобразить номер таблицы с этой функцией от Shop класс, public function getProperty(), он работает. Я застрял, может ли кто-нибудь помочь?

Я попытался сделать function getProperty() как private, так и protected и не дал никаких результатов, но если я изменю его на публичный, он делает.

Это HTML код:

<html> 
<body> 
<form action="" method="post"> 
    <p>Preturi:</p><br/> 
    Nr-Masa: <input type="text" name="nr_masa" /><br/> 
    <input type="submit" value="Trimite" name="submit_masa" /> 
</form> 
</body> 
</html> 

Класс магазин, где:

$nr_masa=number of table; $_masa1=table1  

class Shop 
{ 
    protected $nr_masa; 
    private $_masa1; 

    public function setComanda($nr_masa) 
    { 
     $this->_nr_masa = $nr_masa; 
    } 

    public function displayMethod() 
    { 
     $this->_masa1=$this->getComanda(); 
     print $this->_masa1; 
    } 

    private function getComanda() 
    { 
     return "<br /><br />Table number:" . $this -> _nr_masa . "<br />"; 
    } 

    public function getProperty() 
    { 
     return $this -> _nr_masa . "<br />"; 
    } 
} 

class Table extends Shop 
{ 
    public function setMasa($nr_masa) 
    { 
     switch($nr_masa) { 
      case "1"; 
       echo "Masa Nr.1 a fost rezervata"; 
       echo $this -> displayMethod(); 
       break; 
      case "2"; 
       echo "Masa Nr.2 a fost rezervata"; 
       echo $this -> displayMethod();; 
       break; 
      case "3"; 
       echo "Masa Nr.3 a fost rezervata"; 
       echo $this -> displayMethod(); 
       break; 
      case "4"; 
       echo "Masa Nr.4 a fost rezervata"; 
       echo $this -> displayMethod(); 
       break; 
      default: 
       echo "Masa nu exista"; 
     } 
    } 
} 



$TabelData = new Table; 
$ShopData = new Shop; 

if (isset($_POST['submit_masa'])) { 
    $nr_masa = $_POST["nr_masa"]; 
    $TabelData -> setMasa($nr_masa); 
    $ShopData -> setcomanda($nr_masa); 
} 
+0

' $ ShopData' и '$ TabelData' - разные объекты и ничего не знают друг друга. –

+0

Я пробовал, но я действительно не понимаю, о чем вы спрашиваете: /. (Имена методов, такие как 'getProperty' и' displayMethod', не очень полезны, не говоря уже о неанглийских именах, таких как 'masa' и' comanda'. Думаю, вам нужно перефразировать ваш вопрос. Каков ваш желаемый результат и что вы получаете? Также уменьшите код до строгого минимума, чтобы воспроизвести вашу проблему. Единственный намек, который я могу сейчас дать, - прочитать руководство по видимости http://php.net/manual/en/language.oop5.visibility.php – Pevara

ответ

2

вы используете print в функции displayMethod(), а затем с помощью echo в функции setMasa

public function displayMethod() 
{ 
    $this->_masa1=$this->getComanda(); 
    return $this->_masa1;    <-- replace print with return; 
} 
Смежные вопросы