2015-12-16 1 views
2

Я пытаюсь отобразить часть таблицы, используя само созданный объект. При попытке доступа к методу в классе я получаю:Ловкая фатальная ошибка: объект класса dayDaytimeFields не может быть преобразован в строку

Catchable fatal error: Object of class dayDaytimeFields could not be converted to string in /Applications/MAMP/[...]/test.php on line 85

Line 85:

$testObj->renderFields(); 

Это мой код:

<table class="table table-striped table-bordered table-hover"> 
    <caption>Week Planner</caption> 
    <thead> 
    <tr> 
     <th></th> 
     <th>Breakfast</th> 
     <th>Lunch</th> 
     <th>Dinner</th> 
    </tr> 
    </thead> 
    <tbody> 

    <?php 
     class dayDaytimeFields { 

      public $dayDaytime; 

      public $week = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']; 
      public $weekShort = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']; 

      public $dayTime = ['Breakfast', 'Lunch', 'Dinner']; 
      public $dayTimeShort = ['BrF', 'Lun', 'Din']; 

      public function renderFields() { 

       for ($i = 0; $i < count($this->$week); $i++) { 

        echo "<tr><th>" . $this->$week[$i] . "</th>"; 

        for ($j = 0; $j < count($this->$dayTime); $j++) { 
         $this->dayDaytime = $this->$weekShort[$i] . $this->$dayTimeShort[$j]; 
         echo "<td><input type='text' name='" . $this->dayDaytime . "' id='" . $this->dayDaytime . "'></td>"; 
        } 

        echo "</tr>"; 
       } 
      } 
     } 
    ?> 

    <?= 
     $testObj = new dayDaytimeFields(); 
     $testObj->renderFields(); 
    ?> 

    </tbody> 
</table>   

Это мой первый шаг в ООП, поэтому любой дополнительный ввод (например, как улучшить код) высоко оценивается :-)

+2

'<=' является эхом синтаксиса стенографии и как сообщение об ошибке? говорит вам, что вы пытаетесь «эхо» 'DayDaytimeFields', который« не может быть преобразован в строку в /Applications/MAMP/[...]/test.php в строке 85 » – PeeHaa

+0

, кроме @PeeHaa, упомянутых выше, у вас больше ошибок , вам не хватает '$ this->' во множестве мест – bansi

+1

PeeHaa и Darragh Enright вы смогли помочь с самой очевидной проблемой. Спасибо! @bansi, не могли бы вы заметить другие ошибки? Я уже исправил забытые операторы $ this->. Но таблицы еще нет :-) – Lex

ответ

3

У вас есть проблема здесь:

<?= 
    $testObj = new dayDaytimeFields(); 
    $testObj->renderFields(); 
?> 

Прежде всего, <?= тег представляет собой сокращенную:

<?php echo 

Таким образом, вы в основном делают это:

<?php echo $testObj = new dayDaytimeFields(); ?> 

Который запуск ваша захватывающая фатальная ошибка; ваш класс dayDaytimeFields, очевидно, не имеет метода __toString(), поэтому вы не можете автоматически echo его.

На самом деле, было бы точнее сказать, что ваш код интерпретируется следующим образом:

<?php echo $testObj = new dayDaytimeFields(); $testObject->renderFields(); ?> 

Если вы реализовали метод __toString(), она будет называться и ее возвращаемое значение будет напечатано.

Однако будет вызываться второе утверждение $testObject->renderFields(), но его значение не будет отражено.

Сделайте это вместо того, чтобы, при условии, что вы хотите echo возвращаемого значения из $testObj->renderFields():

<?php 

$testObj = new dayDaytimeFields(); 
echo $testObj->renderFields(); 

// etc. 

Надеется, что это помогает :)

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

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