Hmm, why would you put $nofile($2) && (!$isdir($nofile($2)) ?
$isdir($nofile($2)) will return $false if $nofile($2) is not a directory or $null.
Therefore you don't need to check for existance of $nofile($2) since $isdir($null) is $false, making !$isdir($null) $true.