[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: fopen в деструкторе
olgatcpip
Здравствуйте....

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

Дорогие друзья, у меня чудным образом не создавался файл.
Т.е. пишу
$h = fopen($this->session_filename,'w');
0 эмоций, файла нет

Опытным путем и за счет понижения самооценки заметила, что когда я делаю так:
function __destruct() { ...
$h = fopen('qqq','w'); // не работает!
....
}
ничег не работает... файлы не создаются, а я на грани срыва.
Поймите, ведь я миллион квадролион! раз пользовалась fopenом и не было проблем.

Т.е. если это ( $h = fopen('qqq','w'); ) вызвать не из деструктора, то нормуль, а иначе не нормуль

ткните меня носиком, где написано, что в деструкторе fopen($file,'w') - не создаст файл ?? пожалуйста.



Спустя 4 минуты, 13 секунд (29.03.2010 - 21:14) Adil написал(а):
а зачем в деструкторе fopen? обычно в деструкторе закрывают файлы и освобождают ресурсы..

Спустя 3 минуты, 12 секунд (29.03.2010 - 21:17) olgatcpip написал(а):
Nezabivaemiy да, но мне перед смертью нужно открыть файл записать в него пару ласковх и закрыть.

Спустя 7 минут, 53 секунды (29.03.2010 - 21:25) John_761 написал(а):
А почему не записать, а потом вручную вызвать деструктор? smile.gif

Спустя 56 секунд (29.03.2010 - 21:26) olgatcpip написал(а):
John_761 на мой взгляд незачем... но я сделала так: открыла в другом месте, записываю и закрываю в деструкторе...

Спустя 4 минуты, 52 секунды (29.03.2010 - 21:31) olgatcpip написал(а):
Хочется добавить...

Вот она разница в мужской и женской логикой!
В моей, женской: перед смертью чего нить создать....
В мужской, тех кто язык программирования делал: перед смертью не надышишься... т.е. освобождаем память, и ничего нельзя создать...

blink.gif

Спустя 49 минут, 16 секунд (29.03.2010 - 22:20) krasilich написал(а):

class TestDestructor {
function __construct()
{
echo 'Object created<br>';
}

function __destruct()
{
echo 'Object is dead<br>';
$fh = fopen('fileee.txt', 'w+');
fwrite($fh, 'test_string');
fclose($fh);
}
}


$t = new TestDestructor;
unset($t);


Код отработал без ошибок и сделал то, что от него и ждали: вывел две строки в поток и создал файл с тестовой строкой.
PHP 5.2.10

olgatcpip, как у тебя вызывается деструктор?

Спустя 9 минут, 2 секунды (29.03.2010 - 22:29) Adil написал(а):
krasilich Тут дело не версиях php. Ты еще до завершения скрипта сам уничтожаешь объет.
unset($t);


Но к тому же ты в ручную закрываешь открытый файл. Не сделай ты fclose() этот файл останется открытым. Что уничтожает сам смысл деструктора.. а что будет с другими открытыми файлами и подключениями, если их в ручную не закрывать?

P.S. хотя может это у меня вредная привычка все оставлять на плечи деструктору.. wink.gif

Спустя 10 минут, 44 секунды (29.03.2010 - 22:40) krasilich написал(а):
Nezabivaemiy
Не понял наезда если честно.
ТС'ом не было указанно как вызывается деструктор, ансетом, при завершении скрипта или еще как.

Чем мой вариант не демонстрация того, что в деструкторе можно записать файл?

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

Спустя 5 секунд (29.03.2010 - 22:40) olgatcpip написал(а):
krasilich? спасибо за пример. да работает.. твой пример...
а я тууупо вставила
echo 'Object is dead<br>';    
$fh = fopen('fileee.txt', 'w+');
fwrite($fh, 'test_string'); fclose($fh);
в свой конструктор и... не отработал...

Все, я решила, бросай программирование, не мое, уж слижком много свякого не понятного... пойду искать работу ..
Всем пока!

Спустя 2 минуты, 44 секунды (29.03.2010 - 22:43) Adil написал(а):
krasilich какой наезд? Я просто написал что дело не в версиях php, а я в явном уничтожении объекта до завершения скрипта.

Цитата (krasilich @ 29.03.2010 - 23:40)
Да, еще один момент, я проверил свой скрипт, убрав ансет, тоесть деструктор вызывался при завершении скрипта, и, знаете, скрипт все равно выдал то, что я и хотел получить. Две строки в браузере и файл. Единственное что, пришлось указывать абсолютный путь к файлу, с документ_рутом.



ну значит я не прав, пойду потестирую этот момент..

Спустя 1 минута, 20 секунд (29.03.2010 - 22:44) twin написал(а):
Цитата
уж слижком много свякого не понятного... пойду искать работу ..
Всем пока!

Мнда... Если бы я после каждого такого казуса искал работу, не хватило бы профессий на свете

Спустя 2 минуты, 1 секунда (29.03.2010 - 22:46) krasilich написал(а):
olgatcpip
Цитата
Все, я решила, бросай программирование, не мое, уж слижком много свякого не понятного... пойду искать работу ..
Всем пока!


Уж лучше замуж=))

Вообще может таки проблема в пути к файлу?
Путь абсолютный указан??

Спустя 5 минут, 46 секунд (29.03.2010 - 22:52) John_761 написал(а):
Дааа, странно smile.gif
krasilich, твой скрипт работает, без ансета работать перестает, но снова запускается, если указать абсолютный путь
интересно, в чем же смысл blink.gif

Спустя 7 минут, 40 секунд (29.03.2010 - 23:00) sergeiss написал(а):
Цитата (olgatcpip @ 29.03.2010 - 23:40)
пойду искать работу ..


Цитата (olgatcpip @ 29.03.2010 - 22:10)
то ли судьба говорит, что мне пора рожать детей, а не программировать


Ты уж определись, что тебе надо больше rolleyes.gif

Спустя 1 час, 24 минуты, 25 секунд (30.03.2010 - 00:24) krasilich написал(а):
Цитата (John_761 @ 29.03.2010 - 21:52)
Дааа, странно smile.gif
krasilich, твой скрипт работает, без ансета работать перестает, но снова запускается, если указать абсолютный путь
интересно, в чем же смысл blink.gif

Это тоже наезд???

Спустя 25 минут, 3 секунды (30.03.2010 - 00:49) John_761 написал(а):
Нет конечно, не наезд, просто не могу разобраться и понять почему так...


_____________
Ласковое слово и кошке приятно... Плюсик в карму сойдет wink.gif
*smarty дока - новая любовь
Моё рукотворение ругайте, хвалите smile.gif
Веду маленький блог
в этом блоге публикую новые работы
WMR217126627282 wink.gif

Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.