#php #iterator #directory
#php #итератор #каталог
Вопрос:
эй, ребята, это отлично работает:
$dir = new DirectoryIterator(get_template_directory().'/images/headers/');
однако у меня нет только /headers, но у меня есть каталоги / headers / summer и headers / winter, которые я хочу использовать в качестве пути в зависимости от текущего сезона.
$summer = array(3,4,5,6,7,8,9);
$path = null;
if ( in_array(date('n'), $summer) ) {
$path = get_template_directory().'/images/headers/summer/';
} else {
$path = get_template_directory().'/images/headers/winter/';
}
$dir = new DirectoryIterator($path);
Что в этом плохого? Моя страница будет пустой, если я использую это!
Комментарии:
1.
get_template_directory()
это специфичная для WordPress функция, не должна иметь значения для кода — просто возвращает абсолютный путь к каталогу.
Ответ №1:
Я думаю, что есть 3 возможности..
-
$path не существует, проверьте с помощью
if(!is_dir($path)) die('no dir
there'); -
ваша функция get_template_directory выдает фатальный
-
вы используете PHP4, где класс DirectoryIterator не существует
Ответ №2:
Я думаю, что это должно работать нормально, мне действительно интересно, почему вы получаете белый экран. Обычно это происходит, когда вы получаете неустранимую ошибку и ваш error_reporting установлен неправильно.
Пожалуйста, установите для вашего error_reporting значение E_ALL:
error_reporting(E_ALL);
ini_set('display_errors', true);
Это должно отображать любую возникающую ошибку.
Ответ №3:
Похоже, у вас не включено сообщение об ошибках. Сделайте error_reporting(E_ALL)
в своем скрипте или найдите ошибку в журналах apache.
Позже на странице может появиться ошибка, потому что вы предполагаете разные вещи о содержимом (возможно, пустой каталог?) или неправильные права в каталоге (от http://www.php.net/manual/en/directoryiterator.construct.php ):
Throws an UnexpectedValueException if the path cannot be opened.
Но без подробностей об ошибке, это только предположение.