我不确定这里有什么问题。出于某种原因,is_dir函数对我来说无法正常工作。
class A
{
private $path
public function setPath($path)
{
if(!is_dir(!$path)){
throw new Exception('Invalid path');
}
}
}
$obj = new A;
$obj->setPath('/usr/htdocs/site/');
在这行代码之后抛出异常无效路径。我检查了/ usr / htdocs / site / path存在。可能是什么问题?
答案 0 :(得分:1)
在路径变量
之前删除!
尝试这样:
if(!is_dir($path)){
throw new Exception('Invalid path');
}
答案 1 :(得分:0)
!$ path表示如果有任何内容!$ path,则为false。所以它将是!is_dir(false)。
我认为你的代码将是if(!is_dir($ path)){... NOT if(!is_dir(!$ path)){
小更新:
正如@NiettheDarkAbsol所说,is_dir将字符串(目录名称)作为参数,所以false [从!$ path获取($ path应该是' / usr / htdocs / site /'在这种情况下,所以!$ path应该是bool false)]将被转换为字符串'' (空)。
''''在大多数常用的文件系统中是无效的目录名称。因此,is_dir将无法通过该无效名称找到任何目录。因此,它将返回false,这会触发异常抛出,报告路径无效。
感谢@NiettheDarkAbsol告诉我剩下的事情。