PHP: Как обнулить результат класса - PullRequest
0 голосов
/ 07 февраля 2020

У меня есть функция, которая выглядит следующим образом:

class ProcessFile {
    function Function1() {
        ...
    }
    function Function2() {
        ...
    }
    ...
}

Я хотел бы использовать эту функцию, только если расширение файла не равно 'pdf':

if (substr(strrchr(strtolower($filename),'.'),1) != 'pdf') {
   $file = new ProcessFile($filename);
} else {
   $file = null; // Just a test
}

Моя проблема то, что позже на странице, я вызываю некоторые функции, подобные этим во многих местах:

if (!empty($file->Function1())) {
   $var = $file ->Function1();
}

, который выдает ошибку:

PHP Фатальная ошибка: Uncaught Error: Call функции-члену Function1 () со значением NULL

Я хотел бы избежать выполнения всех вызовов в первом тесте «if». Как я могу «обнулить» результат ProcessFille или проверить, существует ли функция-член перед ее чтением?

Ответы [ 2 ]

1 голос
/ 07 февраля 2020

Вы можете использовать isset($file) для проверки того, что $file не равно нулю:

if (isset($file)) {
   $var = $file ->Function1();
}
1 голос
/ 07 февраля 2020

Используйте is_object () в выражении if:

if (is_object($file)) {
   $var = $file ->Function1();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...