2009-05-20 10 views
1

У меня есть функция:Почему «возврат fopen» терпит неудачу?

function open($file){ 
    return fopen($file, 'w'); 
} 

Это затем вызывается:

function write($file,$text){ 
    $h = $this->open($file); 
    fwrite($h,$text); 
} 

Это не работает. Он возвращает, что fwrite получил недопустимый поток ресурсов.

Это:

function open($file){ 
    $h = fopen($file, 'w'); 
    return $h; 
} 

работает отлично, но я не могу понять, почему назначения переменных первые работ и непосредственно возвращения FOPEN() не делает.

+0

Я предполагаю, что все это определено в классе? Не могли бы вы показать весь класс (или, по крайней мере, соответствующие части) вместе? Трудно помочь, когда они не соответствуют контексту. –

+0

Да, вам нужно предоставить дополнительную информацию о том, где находится этот фрагмент кода, потому что в настоящее время для меня работают оба пути – codingbear

ответ

0

Возможно, это связано только с тем, что вы работаете в области действия объекта, поэтому он слишком рано очищает поток ресурсов - поскольку он передает поток ресурсов byref, если у вас есть переменная set, вместо этого вместо этого используется переменная попытки сделать это в потоке ресурсов - так что это сработает.

1

Это связано с тем, что вы находитесь внутри объекта? Для меня работает следующий скрипт:

<?php 
     function open($file) { 
       return fopen($file, 'w'); 
     } 

     function write($file, $text) { 
       $h = open($file); 
       fwrite($h, $text); 
     } 

     write("test.txt", "hello\n"); 

?>

Я запускаю PHP 5.2.8 на Mac OS X 10.5.7.

0

объявить

уаг $ файл

затем

$ this-> Файл = Еореп (...)

возвращение $ this-> файл ;

это будет работать, потому что переменная $ file имеет ссылочную позицию.

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