Php метод не вызывается

1

Я пытаюсь отлаживать этот код некоторое время, и похоже, что метод build не вызывается. Я помещал в него эхо, var_dumps и все другие знаки, но ничего не получал.

Полный код php

class Auto_slideshow {

  private $_img_dir;

  //constructor sets directory containing the images
  function __construct($dir) {
    //Directory source from webroot
    $_img_dir = $dir;
  }

  //Iterates through directory and constructs HTML img list
  public function build() {

    //use SPL for directory iteration
    $iterator = new DirectoryIterator($_img_dir);

    $html = '';
    $i = 1;

    //Iterate through directory
    foreach ($iterator as $file) {

      //set a variable to add class of "show" on first element
      $showClass = $i === 1 ? ' class="show"' : null;

      //exclude '.' and '..' files
      if(!$iterator->isDot()) {

        //set src attribute for img tag
        $src = $_img_dir . $iterator->getFilename();

        //Grab sizes of images
        $size = getimagesize($_img_dir . $iterator->getFilename());
        var_dump($src);
        //create img tags
        $html .= '<img src="' . $src . '" ' . $size[3] . $displayNone . ' />' . "\r\n";

        $i++;
      }
    }

    return $html;
  } 
}

html call

<center>
    <div class="imagecontainer" id="auto-slideshow">
    <?php
    $show = new Auto_slideshow("../CMSC/images/master/slidestock/");
    $show->build();
    ?>
</div>
</center>

Я также попробовал print $show->build(); , как показал учебник, что тоже не сработало.

Обновить

Я изменил $_img_dir на $this->$_img_dir' and called the method by echo show-> build(); ' и метод все еще не вызывается.

Это вопрос метода, который даже не работает, даже до тех пор, пока он не найдет изображения.

Обновление 2

Если я удалю весь PHP-код в html, остальная часть страницы загрузится просто отлично. Как и сейчас, html загружается только в div, который содержит php, а затем останавливает все после него.

  • 1
    $_img_dir не назначен. Вы должны использовать $this->_img_dir если хотите присвоить значения свойствам класса.
  • 0
    Я думаю, что когда вы объедините ответы @jeroen и Kevins, у вас будет рабочее решение, если ваш img_dir существует;)
Теги:
methods

3 ответа

2
Лучший ответ

Исправьте и обновите приведенный ниже код:

Конструктор:

$this-> _ img_dir = $ dir;

build Функция:

$ iterator = new DirectoryIterator ($this-> _ img_dir);

$ src= $this-> _ img_dir. $iterator-> GetFileName();

$ size = getimagesize ($this-> _ img_dir. $iterator-> getFilename());

Вы можете назвать это:

echo $show-> build();

  • 0
    Это сбивает страницу.
  • 0
    Неважно, я оставил $. Но он по-прежнему не загружает изображения.
3

Вы использовали var_dump() вне цикла?

Проблема в том, что ваша переменная останется NULL:

  //constructor sets directory containing the images
  function __construct($dir) {
    //Directory source from webroot

    // This is a local variable that will be gone when the constructor finishes:
    $_img_dir = $dir;
  }

Тебе нужно:

  //constructor sets directory containing the images
  function __construct($dir) {
    //Directory source from webroot
    $this->_img_dir = $dir;
     ^^^^^^ here
  }
  • 0
    Это ломает страницу и ничего не загружается.
  • 1
    @CodyHarness Тогда у вас наверняка есть опечатка где-то. И, очевидно, вам нужно использовать ту же переменную $this->_img_dir в другом вашем методе.
Показать ещё 3 комментария
3

Вы возвращаете текст, который хотите отобразить, но не отображаете его:

echo $show->build();

Ещё вопросы

Сообщество Overcoder
Наверх
Меню