2015-03-13 4 views
3

** первый класс php, возможно, потребуется больше объяснений для понимания.Неустранимая ошибка: вызов функции-члена, не уверен, что вызывать переменную

Для моего класса PHP я должен создать класс, который будет вычислять Fibonacci. Итак, вот мой код, у меня есть класс с двумя функциями, которые пропускают 2 числа для примера фибоначчи. У меня есть одна форма, которая собирает числа и передает файл php (имя fibonacciClass.php):

Он также вызывает инициирование класса в конце.

<form method = "post" action = ""> 
<center> 
<table> 
<tr> 
    <th>Fibonacci Class</th> 
</tr> 
<tr> 
    <td>First Number:</td> 
    <td><input type="text" name="num1" /></td> 
</tr> 
<tr> 
    <td>Second Number:</td> 
    <td><input type="text" name="num2"/></td> 
    </tr> 
<tr> 
    <td>&nbsp;</td> 
    <td><input type="submit" name="submit" value="Calculate!" /></td> 
</tr> 

</table> 
</center> 

</form> 
<?php 

    require_once('fibonacci.php'); 

    if($_POST['submit']){ 

      $fibo = new fibonacci(); 

      $fibo ->checkFibo(); 

      $fibo ->getFibo(); 

    } 
?> 

Второй У меня есть файл класса, который содержит мои функции, вот где я получаю фатальную ошибку. Его одна строка: $ output = $ checkFibo-> getFibo ($ n1, $ n2);

<?php 

class fibonacci { 

//method to check numbers 
function checkFibo($n1=0,$n2=0){ 

    $n1 = $_POST['num1']; 
    $n2 = $_POST['num2']; 

    if($n1!=0 && $n2!=0){ 
     if($n2<$n1){ 
      echo "<p>Your second number must be greater than the first. Try again</p>";    
      $output=""; 
     } 
     else if($n1<0 || $n2<0){ 
      echo "<p>Please enter only positive numbers</p>"; 
     } 
     else if (!(is_numeric($n1)) || !(is_numeric($n2))){ 
      echo "<p>Please only enter numbers</p>"; 
      $output=""; 
     } 
     else{ 
      echo "<p>The result of your request is shown below.</p>"; 
      $output=$checkFibo->getFibo($n1,$n2); 
     } 
    } 
    else{ 
      echo "<p>Please enter a valid value(s) above (non zero)</p>"; 
      $output=""; 
    } 
     return $output; 

} 
// Method to calculate fibonacci 
function getFibo($n1 = 0, $n2 = 0) { 

    $n1 = $_POST['num1']; 
    $n2 = $_POST['num2']; 

    $max=$n2 * 100; 
    while($z<=$max){ 
      $z = $n1 + $n2; 
      $output.=($z."<br />"); 
      $n1 = $n2; 
      $n2 = $z; 
    } 
    return $output; 
} 

    } 


?> 

Точная ошибка я получаю по представить:

Fatal error: Call to a member function getFibo() on a non-object.

+0

Вы никогда не определяли '$ checkFibo'. – Raptor

+0

Вместо '$ checkFibo-> getFibo()' use '$ this-> getFibo()'. –

+1

@ NotoriousPet0, это было немного грубо, я администратор базы данных, PHP еще не мой в моей области знаний. У меня была одна ошибка, а не то, что я пришел сюда, прося завершить мое задание, иначе я бы согласился с тобой. – Julia

ответ

3

С классами, есть простор для функций-членов. Чтобы получить доступ к функциям члена класса, вы хотите использовать $this

$output = $this->getFibo($n1,$n2); 
+1

Большое спасибо, я очень благодарен! – Julia

Смежные вопросы