2017-09-23 46 views
0

何时会执行下面的else语句?如果$ system_path无效,原因是它将转到else语句。然而,在这种情况下,else语句似乎没有意义。什么是else语句代表codeigniter index.php中的第196行

https://github.com/bcit-ci/CodeIgniter/blob/develop/index.php线196

if (($_temp = realpath($system_path)) !== FALSE) 
{ 
    $system_path = $_temp.DIRECTORY_SEPARATOR; 
} 
else 
{ 
    // Ensure there's a trailing slash 
    $system_path = strtr(
     rtrim($system_path, '/\\'), 
     '/\\', 
     DIRECTORY_SEPARATOR.DIRECTORY_SEPARATOR 
    ).DIRECTORY_SEPARATOR; 
} 

回答

0

if/else该块的一点是要构造一个字符串,它使任何类型的意义在下面的if块使用。该块与

if(! is_dir($system_path)) 

如果realpath()返回false,那么$system_path书面无法解决开始。但那可能并不意味着路径不存在。也许开发人员知道'realpath()'无法解决的问题。 else部分为开发人员带来了疑问。它提供的值为$system_path,并将其格式化为is_dir($system_path)

关闭我的头顶我想不到一个例子,其中realpath()会失败,但$system_path确实存在。但开发人员是一个有创意的人。

+0

是的,我知道这一点。但正如我所说,如果$ system_path不存在。 else语句似乎没有意义。我猜这在其他块代码中必须有其他含义。 –

+0

我修改了我的答案。它有帮助吗? – DFriend

+0

感谢您的灵感。我发现当'$ system_path'写成windows风格时,例如'$ system_path =“。\\ some_path \\ system”',它只能在windows环境下工作。 else语句代码'$ system_path = strtr( rtrim($ system_path,'/ \\'), '/ \\', DIRECTORY_SEPARATOR.DIRECTORY_SEPARATOR ).DIRECTORY_SEPARATOR;'用于解决平台问题。 –