Use of undefined constant

319
26 июня 2017, 20:49

На localhost код работает, а на хостинге возникает ошибка:

Use of undefined constant listPages – assumed ‘listPages’

$directory = $_POST['folder'];
function listPages($path, $name)
{
    global $directory;
    if (mb_substr($name, 0, 9) != 'elements-')
        return;
    echo '…';
}
listFolder($directory, ['html'], listPages);

function listFolder($folder, $allowedExts, $callback)
{
    if ($callback == null)
        return;
    $file_parts = array();
    $ext = '';
    $title = '';
    $l = strlen($folder);
    if ($l == 0  || substr($folder, $l-1, 1) != '/')
        $folder .= '/';
    $dir_handle = @opendir('../'.$folder) or die("There is an error with your directory! '$folder'");
    while ($file = readdir($dir_handle))
    {
        if ($file == '.' || $file == '..')
            continue;
        $file_parts = explode('.', $file);
        $ext = strtolower(array_pop($file_parts));
        $name = array_shift($file_parts);
        if (in_array($ext, $allowedExts))
            $callback($folder.$file, $name);
    }
    closedir($dir_handle);
}

В чем может быть проблема?

Answer 1

передавай listPages как строку. В отличие от JS, в PHP надо делать callback именно так:

function listPages($path, $name) {
    echo 'listPages function. <br/> path: '.$path.', name: '. $name;
}
function listFolder($folder, $allowedExts, $callback) {
    echo 'listFolder function. <br/><br/>';
    $callback($folder, "test.txt");
}
listFolder('/var/www/test/', ['html'], 'listPages');
READ ALSO
Как сделать переход на страницу

Как сделать переход на страницу

Подскажите, как присвоить item[id] для перехода на след страничку, и куда вставит код?

317
Дерево сценариев в telegram-боте php

Дерево сценариев в telegram-боте php

Всем приветДелаю чат-бота для телеграм

504
Записать запросы в табличку базы данных

Записать запросы в табличку базы данных

Вопрос такой: создал табличку в ней поле 'text' в него хочу поместить текст запросов к этой же базе через точку с запятойчто-бы потом можно было...

260