Simpleetest с Codeigniter - не идентифицируйте файл - переменные умирают?

StackOverflow https://stackoverflow.com/questions/3327832

Вопрос

Я пытаюсь использовать Simpleetest с Codeigniteriter, используя код, предоставляемый Maroonbytes . Я использую лампу и NetBeans 6,9.

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

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

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

Путь неверно - basic_test_v.php находится в подпапке / tests / views .

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

function add_test($file, &$test)
.

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

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

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

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


Обновление 1: Я использую дополнение веб-разработчика (Firefox), чтобы поэкспериментировать с записями пост. Я верю, что они обращаются в кодекс. Это все еще появляется NetBeans, преследует некоторые строковые переменные при отладке; Это расстраивает.

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

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

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

  1. Дисплей переменных в NetBeans пропускается За исключением суперглобалов
  2. Код ведет себя так, как будто $ Реализация - это пустая переменная
  3. Я добавил оператор чуть выше этих строк:

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

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

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


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

Это было полезно?

Решение

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

<Сильное> Обновление 1 (да, я скучно)

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

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

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

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

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

% Имя% _% Тип% _test.php (где% Type% - это единственное число)

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

У нас есть контроллер Добро пожаловать в файл Welcomed.php Тест на этот контроллер должен быть назван WELOCHING_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)

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top