Люди, я сомневаюсь, что здесь я или мой компьютер здесь медленный.Странное поведение оператора if: всегда выполняется блок else
я следующий кусок кодирования:
class Whatever
{
...
private function requireFile($filePath)
{
if(is_array($filePath))
foreach($filePath as $singleFilePath)
if($this->requireFile($singleFilePath))
break;
elseif(($filePath = stream_resolve_include_path($filePath = $filePath . '.php')) !== false)
return require_once $filePath;
}
}
Помимо того, что уродливый код, он не работает, как ожидалось. Идея здесь заключается в том, чтобы этот метод принимал как строку, так и массив строк в качестве параметра, а в случае массива рекурсивно задумывался над каждой из строк.
Что происходит, когда при наличии массива в качестве параметра выполняются как блок if, так и блок elseif
, и, таким образом, заставить PHP-парсер кричать, что он принимает массив для преобразования строк в строку elseif
.
Я не понимая, почему добавление скобки if
блока (поместив их вокруг foreach
или внутри if
ничего не меняет) делает все, чтобы работать как шарм, так как существует только один оператор ниже if
и, таким образом, это не необходимо было их там:
class Whatever
{
...
private function requireFile($filePath)
{
if(is_array($filePath)) {
foreach($filePath as $singleFilePath)
if($this->requireFile($singleFilePath))
break;
} elseif(($filePath = stream_resolve_include_path($filePath = $filePath . '.php')) !== false)
return require_once $filePath;
}
}
Может ли кто-нибудь помочь мне здесь? Что не так в этом коде?
Редактировать: спасибо людям. Я думаю, ваши ответы доказывают, что это был я здесь медленный, ха-ха-ха. Месяцы далеко от программирования заставляет людей писать сумасшедшие вещи ...
Вам, кажется, не хватает открывающего и закрывающего кронштейнов оператора 'foreach'. – Dorvalla
Эти скобки не нужны, @Dorvalla, потому что в блоке 'foreach' есть только одна команда. –