Я пытаюсь отлаживать этот код некоторое время, и похоже, что метод 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, а затем останавливает все после него.
Исправьте и обновите приведенный ниже код:
Конструктор:
$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();
Вы использовали 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
}
$this->_img_dir
в другом вашем методе.
Вы возвращаете текст, который хотите отобразить, но не отображаете его:
echo $show->build();
$_img_dir
не назначен. Вы должны использовать$this->_img_dir
если хотите присвоить значения свойствам класса.