@php_raper

Не работает return в конструкции if?

Пример кода (кусок функции)

public function moveFile($file, $path)
    {
        if (move_uploaded_file( $file, $path))
        {
            //$path = "https://" . $_SERVER["SERVER_NAME"] . $path;
            return 1; //return $path
        }
 
    }


Возвращает NULL, хотя файл успешно загружается.

move_uploaded_file( $file, $path) - возвращает TRUE


то есть конструкция выполняется в ветку IF заходим.

Если написать
public function moveFile($file, $path)
    {
        if (move_uploaded_file( $file, $path))
        {
            //$path = "https://" . $_SERVER["SERVER_NAME"] . $path;
           echo 1;//echo $path
        }
 
    }


На экран выведет
1

соответственно если заменить 1 на $path изменений нет, нужно получить $path

public function moveFile($file, $path)
    {

        return (move_uploaded_file( $file, $path)) ? "https://" . $_SERVER["SERVER_NAME"] . $path : 'Ошибка загрузки';
 
    }


так ТОЖЕ возвращает NULL

и через IF / ELSE тоже NULL

ИТОГО что имеем:

return возращает всегда NULL,

if (move_uploaded_file( $file, $path))
        {
            //$path = "https://" . $_SERVER["SERVER_NAME"] . $path;
           echo <b>ЛЮБОЕ ВЫРАЖЕНИЕ</b>;
        }

работает нормально
  • Вопрос задан
  • 158 просмотров
Решения вопроса 2
usdglander
@usdglander Куратор тега PHP
Yipee-ki-yay
Если всё действительно так как вы говорите, то есть мнение что move_uploaded_file не всегда возвращает true. Просто вы смотрите в разные моменты.
Ответ написан
@FanatPHP
Чебуратор тега PHP
Идеальный пример реализации анекдота у таракана уши в ногах в реальной жизни.

Автор уже сам понял, что, разумеется, дело не в условном операторе (и не может быть). Но все равно упорно стучит по столу, и проверяет что угодно, но не возврат конкретной функции
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
ЧИТАЙ-ГОРОД Москва
от 140 000 до 210 000 ₽
DANYCOM Краснодар
от 50 000 до 100 000 ₽
ЭР-Телеком Пермь
от 80 000 ₽