2012-02-20 3 views
2

В php docs говорится, что в случае успеха будет получено true или false, если оно не выполнено.Как определить, успешно ли выполнена функция php rename()?

rename('test/test1/','test/test2/test1/'); 

Как получить истину или ложь? Если я запустил точную функцию, и она будет успешной, папка будет перемещена в надежде и не будет выхода. Если он терпит неудачу, он просто распечатывает сообщение об ошибке.

Как проверить, есть ли true или false, чтобы я мог проверить, удалось ли переименовать функцию без сообщения об ошибке?

Правильно ли это?

error_reporting(0); 
if(rename('test/test1/','test/test1/test2/test1/')===true){ 
    print 'true'; 
} else{ 
    print 'false'; 
} 
+0

Правильно, да. Вы также можете подавить сообщение об ошибке с помощью 'if (@rename (...' . –

+2

Не понимаете ли вы, как работает возврат? – animuson

ответ

5

Вы бы просто сделать это, чтобы получить возвращаемое значение:

$success = rename($oldValue, $newValue); 

Вы можете делать все, что вам нужно со значением $success.

4

Проверка возвращаемого значения является простой проблемой, выполненной так же, как вы предлагаете (или, возможно, вы можете сохранить возвращаемое значение в переменную, если это удобно).

Однако, было бы лучше, чтобы не изменить глобальный уровень ошибок и использовать error control operator@ вместо:

if(@rename('test/test1/','test/test1/test2/test1/')===true) { 
    // successfuly rename 
} 
else { 
    // failed 
} 

В расширенном сценарии, вы также можете понять, что состояние ошибки было, если это возможность принятия мер по ее исправлению. Для этого вам понадобится сообщение об ошибке из предупреждения, которое будет выдано rename. Вы можете использовать подобную технику для того, что я описываю here, чтобы достичь этого.

Смежные вопросы