|
|
|
|
|
для: TetRiska
(12.04.2011 в 22:39)
| | Ну в последнем варианте вроде все нормально, наличие $file проверяется при помощи is_file(), наличие $folder проверяется при помощи id_dir(), а $file_name мы создаем. | |
|
|
|
|
|
|
|
для: cheops
(12.04.2011 в 22:05)
| | тогда минус проверка, но и структура же поменяется?
function file_copy($file, $file_name, $folder){
if(is_file($file)){
if(!is_dir($folder)){
mkdir($folder, 0775, true);
}
if(copy($file,$folder.$file_name)) return $folder.$file_name;
}
}
|
| |
|
|
|
|
|
|
|
для: TetRiska
(12.04.2011 в 22:03)
| | Собственно это вопрос интерфейса - тут уже поступайте как вам удобнее. Хотя, конечно, так не принято делать, так как можно сделать вызов
и интерпретатор посчитает его правильным, хотя функция ничего сделать полезного не сможет. Я бы убрал вообще все = ''. | |
|
|
|
|
|
|
|
для: cheops
(12.04.2011 в 22:00)
| | тогда так оставлю. ведь не критично эту корректировку вносить? | |
|
|
|
|
|
|
|
для: TetRiska
(12.04.2011 в 21:58)
| | Тогда придется отменять все значения по умолчанию перед $folder, так как параметры со значениями по умолчанию могут идти только в конце, после обязательных параметров. Иначе невозможно будет однозначно определить какой аргумент к какому параметру относится. | |
|
|
|
|
|
|
|
для: cheops
(12.04.2011 в 20:59)
| | а вот один нюанс
function file_copy($file='', $file_name='', $folder=''){
|
может изменить на
function file_copy($file='', $file_name='', $folder){
|
т. е. не присваивать сразу $folder пустое значение? т.к. его может и не быть | |
|
|
|
|
|
|
|
для: cheops
(12.04.2011 в 20:59)
| | круто сократилось, спасибо огромное, буду тестировать
интересно про mkdir с 3-мя параметрами, что если указать третий, то он будет создавать на протяжении всего пути папки...не слышал даже | |
|
|
|
|
|
|
|
для: TetRiska
(12.04.2011 в 20:39)
| | Да, сейчас вроде все верно, только бы я еще вот эту конструкцию
$arr = explode('/', $folder);
$prev = null;
for($i=0;$i<count($arr);$i++){
if(!is_dir($prev . $arr[$i] . '/')){
mkdir($prev . $arr[$i] . '/', 0777);
}
$prev .= $arr[$i] . '/';
}
| сократил бы до
mkdir($folder, 0777, true);
| Третий параметр true позволяет создавать директории на всем протяжении пути, сколько бы их там не хватало. Одна строка встроенной функции всегда проще и надежнее - не будет соблазна потом поправить цикл и внести в него ошибку. | |
|
|
|
|
|
|
|
для: cheops
(12.04.2011 в 20:14)
| | блин эта спешка...ошибся снова, исправил is_file($file)
function file_copy($file='', $file_name='', $folder=''){
if($file != '' && is_file($file) == true && $file_name != ''){
if(!is_dir($folder)){
$arr = explode('/', $folder);
$prev = null;
for($i=0;$i<count($arr);$i++){
if(!is_dir($prev . $arr[$i] . '/')){
mkdir($prev . $arr[$i] . '/', 0777);
}
$prev .= $arr[$i] . '/';
}
}
if(copy($file,$folder.$file_name)) return $folder.$file_name;
}
}
|
теперь должно быть верно? | |
|
|
|
|
|
|
|
для: TetRiska
(12.04.2011 в 20:05)
| | >is_file($folder) == true
Зачем это условие? $folder - это директория, вероятно вы хотели проверить является ли файлом $file?
> if(is_dir($folder))return true;
Тогда у вас функция не дойдет до копирования файла - так как return - это выход из функции, лучше поставить проверку вида
if(!is_dir($folder))
{
// Создаем не существующую директорию
}
|
| |
|
|
|
|