2010-07-25 3 views
0

Я пытаюсь использовать SimpleTest с CodeIgniter, используя код, предоставленный maroonbytes. Я использую LAMP и NetBeans 6.9.SimpleTest с CodeIgniter - не будет определять файл - переменные умирают?

Страница test.php загружается в мой браузер. У меня есть тест на заглушку, и он отображается в раскрывающемся списке. Когда я пытаюсь запустить его, я получаю 2 PHP ошибки:

Сообщение: include_once (/var/www/sparts3/main/tests/basic_test_v.php): не удалось открыть поток: Нет такого файла или каталог

Сообщение: include_once(): Ошибка открытия '/var/www/sparts3/main/tests/basic_test_v.php' для включения (include_path =».:/USR/доли/PHP:/usr/share/pear ')

Путь неправильный - basic_test_v.php находится в подпапках /тесты/мнения.

Отладчик указывает на это в test.php:

function add_test($file, &$test) 

По некоторым причинам NetBeans не раскрывает значение $ файла в этой точке. Означает ли это, что это пусто?

Я уже пропустил строку кода, потому что мне передается код 404 Страница не найдена. казалось, что отладчик GET заставлял валидатор терпеть неудачу. Поэтому я добавил критерий, на мой невежественный пути (я уверен, что это должно быть обработано исключение или что-то):

if ($this->uri->uri_string == '' || $this->uri->uri_string == 'XDEBUG_SESSION_START') 
    { ... } 

Как я могу решить эту проблему? BTW, это попытка решить my other post, который я буду обновлять; казалось бы, было бы лучше сделать это дискретным вопросом.


UPDATE 1: Я использую Web Developer надстройки (Firefox) поэкспериментировать с записями POST. Я считаю, что эти ошибки ошибочны в коде. По-прежнему кажется, что NetBeans отказывается показывать некоторые строковые переменные во время отладки; это расстраивает.

UPDATE 2: Мне кажется, что действительная обработка кода останавливается в той же точке. NetBeans перестает отображать переменные. Я перешагиваю test.php. Я частично выполняю функцию, add_test ($ file, & $ test). Эти функции открываются с помощью оператора if; который отлично заканчивается, и я вижу переменные.Тогда новое, если заявление:

if (file_exists($implementation)) 
{ 
    require_once ($implementation); ... 

Как только я на этой линии, 2 вещи:

  1. Переменные отображения в среде NetBeans гаснет для суперглобальным массивам
  2. код ведет себя, кроме как если $ реализация является пустой переменной

Я добавил состояние только над этими строками:

$implementation = 'http://var/www/sparts3/main/tests/views/basic_test_view.php'; 

Это ничего не меняет. Вывод браузера совпадает с тем, использую ли я NetBeans/Xdebug или нет.

Таким образом, он начинает выглядеть как сбой обработки PHP. Существуют ли эти? Я могу попробовать загрузить и попробовать из главной службы - только для диагностических подсказок и безрассудно, потому что CI без возможности отладки не интересует меня.


UPDATE 3: Я попробовал все из на WAMP ПК. Те же результаты браузера (плюс некоторые «устаревшие» ошибки, что-то связано с PHP 4 и 5). Я думаю, что могу отлаживать этот ПК (если Xdebug работает), но, похоже, мало смысла.

ответ

1

Вы переименовали basic_test_v.php в basic_test_view.php? код ожидает, что ваши файлы будут названы и сохранены правильно.

UPDATE 1 (да им скучно)

Я уже jimmied строку кода , потому что он получает меня мимо Код 404 Страница не найдена. казалось, что отладчик GET вызывал ошибку. Поэтому я добавил критерий, на мой невежественный образом (я уверен, что это должно быть обработано исключение или что-то):

if ($this->uri->uri_string == '' || $this->uri->uri_string == 'XDEBUG_SESSION_START') { ... } 

Как я могу решить эту проблему? Кстати, это попытка решить мой пост, который я буду обновлять; Кажется, лучше всего сделать это дискретным вопросом .

«Право» решение этого вопроса: установить $config['uri_protocol'] = "AUTO"; в $config['uri_protocol'] = "PATH_INFO"; и $config['enable_query_strings'] = FALSE; к $config['enable_query_strings'] = TRUE; в config.php (читай комментарий выше этих параметров, они очень полезные)

После более глубокий взгляд на test.php я могу сказать вам, что ваши тестовые файлы должны быть названы так:

% name% _% type% _test.PHP (где% тип% в единственном числе)

, чтобы сделать его более ясным, здесь пример:

мы получили контроллер приветствовать размещенное в файле welcome.php тест для этого контроллера должен быть назван welcome_controller _test.php и хранится в тестах/контроллерах/

сценарий test.php пытается загрузить тестовый файл и проверенный файл автоматически. Но, по-моему, это нужно исправить.

Я изменил функцию get_loader_id и add_test нравится следующим

function get_loader_id($file, $type) { 
    $loader_id = str_replace("_{$type}_test.php", "", basename($file)); 
    return $loader_id; 
} 
function add_test($file, &$test) { 
    $implementation = ''; 
    if (preg_match('/_controller/', $file)) { 
     $controller = get_loader_id($file, 'controller'); 
     $implementation = APPLICATION . 'controllers/' . $controller . '.php'; 
    } elseif (preg_match('/_model/', $file)) { 
     $model = get_loader_id($file, 'model'); 
     $implementation = APPLICATION . 'models/' . $model . '_model.php'; 
    } elseif (preg_match('/_view/', $file)) { 
     $view = get_loader_id($file, 'view'); 
     $implementation = APPLICATION . 'views/' . $view . '.php'; 
    } elseif (preg_match('/_helper/', $file)) { 
     $helper = get_loader_id($file, 'helper'); 
     $implementation = APPLICATION . 'helpers/' . $helper . '.php'; 
    } elseif (preg_match('/_library/', $file)) { 
     $library = get_loader_id($file, 'library'); 
     $implementation = APPLICATION . 'libraries/' . $library . '.php'; 
    } 
    if (file_exists($implementation)) { 
     require_once ($implementation); 
    } 
    $test->addFile($file); 
} 

, если вы следуете схеме именования файлов все должно работать нормально (я это проверял на MacBook с Zend Server CE, XDebug , simpletest и netbeans 6.9)

+0

Спасибо за работу и совет по нескольким пунктам. Пусть ваша скука когда-нибудь вознаградит окружающих. – Smandoli

+0

приветствуются – teemitzitrone

0

Если вы пытаетесь загрузить изображение, вы пытались использовать $this->load->view('basic_test_view');?