php DirectoryIterator — путь, основанный на сезоне?

#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 возможности..

  1. $path не существует, проверьте с помощью if(!is_dir($path)) die('no dir
    there');

  2. ваша функция get_template_directory выдает фатальный

  3. вы используете 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.
  

Но без подробностей об ошибке, это только предположение.