SimpleTest的使用CodeIgniter - 将无法识别文件 - 变量死吗?(Simple

2019-10-30 06:30发布

我试图使用SimpleTest的使用CodeIgniter,利用提供的代码maroonbytes 。 我使用LAMP和NetBeans 6.9。

该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 /共享/梨')

该道路是错误的- 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')
    {   ...  }

我该如何解决这个问题? 顺便说一句,这是试图解决我的其他职务 ,我将更新; 似乎最大的努力使离散的问题。


更新1:我一直在使用Web开发插件(火狐)与POST项实验。 我相信这是在代码中使用不当。 它似乎仍然NetBeans在显示在调试一些字符串变量犹豫不决; 这是令人沮丧的。

更新2:在我看来,是有效的代码处理在同一地点的NetBeans停止显示变数停止。 我通过test.php的步进。 我中途功能,add_test($文件,&$测试)。 此功能与if语句打开; 即完成好,我能看到的变量。 然后,一个新的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处理故障。 做那些存在吗? 我可能会尝试上传和主机服务尝试 - 为诊断线索而已,cheerlessly,因为没有调试能力CI是不感兴趣的我。


更新3:我什么都试过了WAMP的PC上。 同一浏览器的结果(再加上一些“过时”的错误,是与PHP 4比5)。 我想我可以在PC机上调试(如果Xdebug的正在工作),但似乎没有多大意义。

Answer 1:

你有没有改名basic_test_v.php到basic_test_view.php? 该代码期望您的文件将被命名和存储的权利。

更新1(是即时通讯无聊)

我已经撬开了一行代码,因为它让我过去码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的更深入的了解之后,我可以告诉你,你的测试文件应被命名为这样的:

%名称%_%类型%_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);
}

如果你是以下文件名公约都应该运行得很好(我和Zend Server CE中,Xdebug的测试,它的的MacBook,SimpleTest的和NetBeans 6.9)



Answer 2:

如果你试图加载的是一个观点,你有没有尝试过使用$this->load->view('basic_test_view');



文章来源: SimpleTest with CodeIgniter — won't identify file — variables die?