|
0 / 0 / 0
Регистрация: 12.12.2013
Сообщений: 27
|
|
Нужен класс для работы с файлами09.11.2015, 09:21. Показов 1947. Ответов 11
Метки нет (Все метки)
Требуется PHP класс работы с файлами: в первую очередь - синтаксис и алгоритмы. Готовая реализация - будет замечательно.
Не смотря на всю кажущуюся простоту, этот вопрос считаю достаточно сложным. Мне не удалось найти готового скрипта. Во-первых, в PHP существует несколько инструментов работы с файлами (fopen() и file_get_contents()) и класс должен самостоятельно выбирать оптимальный; Во-вторых, по одному из параметров класс должен определять необходимость "целостности данных", то есть исключить возможность одновременного редактирования файла; В-третьих, он должен работать с файлами различных типов; В-четвертых, он должен исправлять ошибки отсутствия файлов с учетом того, что новый файл не всегда должен создаваться. Это должен быть класс "на все случаи жизни" и обеспечивать оптимальный код, с учетом того, что прямой доступ к к файлам скриптам будет запрещен. Один объект - один файл. Класс, методы которого повторяют стандартные функции PHP неприемлем!
0
|
|
| 09.11.2015, 09:21 | |
|
Ответы с готовыми решениями:
11
Нужен класс для работы с файлами Класс для работы с файлами Класс для работы с файлами |
|
172 / 167 / 75
Регистрация: 21.11.2014
Сообщений: 1,490
|
|
| 09.11.2015, 09:24 | |
|
Ну раз Вы все описали - может и напишете тогда?
0
|
|
|
0 / 0 / 0
Регистрация: 12.12.2013
Сообщений: 27
|
||
| 09.11.2015, 09:34 [ТС] | ||
0
|
||
|
172 / 167 / 75
Регистрация: 21.11.2014
Сообщений: 1,490
|
|
| 09.11.2015, 09:36 | |
|
Ну можно вместе попробовать.. точнее "коллективным разумом". Найдите максимально приближенное к тому, что Вы хотели бы получить и "расколупать" его дальше
1
|
|
|
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,904
|
||
| 09.11.2015, 10:16 | ||
|
1
|
||
|
0 / 0 / 0
Регистрация: 12.12.2013
Сообщений: 27
|
|
| 09.11.2015, 19:08 [ТС] | |
|
Спасибо за участие!
Проблема в том, что, при отсутствии опыта, тяжело определить потребность. Хочу минимум кода в скрипте обращающемся к классу и максимальной прозрачности. Например, открытие файла происходит, при создании объекта, при этом в параметрах указываю, как я хочу с ним работать. Допустим, я хочу его редактировать, но не блокировать, чтобы не тормозить другие сценарии. Тогда объект сам определит, был ли изменен файл в промежутке до записи. Или мне "пофигу" кто, что писал, я командую и зачем мне fopen(). С другой стороны, иногда мне нужно открыть файл независимо от того, был ли он создан, или открыть "сессию" работы с файлом и уже после решать, нужно ли создавать файл, в случае отсутствия. В общем, я хочу максимально просто открыть файл, получить разностороннюю информацию о файле и принять решение, будет ли выполняться действие. Оптимизация скрипта не самое главное, поэтому, если вы меня запустите в нужном направлении и расскажите, как это будет выглядеть, где и что должно храниться, буду примного благодарен. Привожу, что сам "накропал", может поможет вам получить представление о том, что я хочу.
0
|
|
|
0 / 0 / 0
Регистрация: 12.12.2013
Сообщений: 27
|
||
| 10.11.2015, 19:02 [ТС] | ||
|
"Папа нарисуй куклу... Нет, это девочка. Нарисуй куклу". Примерно так и со мной?
Любительские скрипты полны примеров, где: там и сям работаем с файлами и каждый раз поразному. Там заблокировать забыли, в итоге "летит" правильная блокировка, здесь еще что-либо. Из обнаруженных мною скриптов, они просто транслируют функционал PHP, что совершенно не решает проблемы. В PEAR не совсем разобрался, но и решения проблем, так же не увидел. Решил: Инсталлятор запрещает использовать функции и конструкции вида MyClass::Method(). Файл, БД и т.д. - это ресурс. Доступ к ресурсу, только через объект. Отдельно хочу создать глобальный, с точки зрения ресурса данного вида, объект, через который можно получить доступ к образу ресурса (объекта) до создания самого объекта (в черновике - трайт "IfaceIsFile"). Исходя из этой информации, скрипт должен будер решать, будет ли он работать с ресурсом и как. Это стратегия системы. Исходя из этого, класс должен предоставлять некоторую информацию о ресурсе еще до создания объекта, конструктор объекта должен выполнить всю черновую работу и гарантировать корректную работу методов, алгоритм работы и доступность которых может изменяться, в зависимости от того, как был создан ресурс (текстовый файл или бинарный, простое редактирование или гарантировать сохранность данных). Например, когда два пользователя редактирую одну страницу, важно проверять, не была ли она изменена в процессе редактирования (дишь для примера), когда же администратор редактирует конфигурацию системы, вероятно ему пофиг, что там меняют другие пользователи. ГЛАВНОЕ: этот класс, уверен, успешно созданный с вашим участием (скорее, вами), будет методикой создания остальных ресурсов системы. Добавлено через 9 часов 38 минут Обещались помочь... Видимо, со мной все совсем плохо
0
|
||
|
172 / 167 / 75
Регистрация: 21.11.2014
Сообщений: 1,490
|
|
| 11.11.2015, 09:23 | |
|
Проблема в том, что тут и правда помогают. А Вы просите написать за Вас
0
|
|
|
0 / 0 / 0
Регистрация: 12.12.2013
Сообщений: 27
|
|||
| 11.11.2015, 18:31 [ТС] | |||
Тема остается актуальной. Добавлено через 1 час 35 минут Хорошо, давайте так: Нужно ли получать информацию до открытия файла и какую. Это важно, потому что очередной скрипт может потребовать дополнительной информации, что потребует доработки класса или "пофиг все предписания, работаю напрямую". Например, у меня контент каждой страницы хранится в отдельном файле. Тогда, прежде, чем отрывать файл, мне важно знать, сущестует ли он. Иначе, если файл открывается для редактирования, будет создана не существующая страница. Вероятно, нужно знать и права на файл, с учетом того, что в Линукс и Виндовс они различно определяются. Каков общий список информации, необходим ли дополнительный или это вообще бред? В приведенном примере трайт "IfaceIsFile" кеширует запрашиваемую информацию, чтобы не выполнять действий повторно. Нужен ли он и как выполнять это правильно? Конструктор, вероятно наиболее ответственная часть. Простая блокировка не всегда гарантирует исключения одновременного редактирования (открыл - считал - отредактировал строку - блокировал - записал). Кроме того, существуют ситуации, когда файл проходит через несколько сеансов. Тогда, вероятно, можно контролировать факт изменения файла (дата изменения - считывание - редактирование - дата изменения - запись). Как что и где? Решительный шаг вперед, результат уверенного пинка взад. Ну где же он? Был бы готовый аналог - подсмотрел бы.
0
|
|||
|
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,904
|
|||||
| 11.11.2015, 22:41 | |||||
|
В общем, как я писал ранее, никто не будет писать (и добавлю, продумывать) код за вас. Тем более только вы знаете, что именно он должен делать. Да и непонятно, зачем вообще эта надстройка нужна. Я бы ещё понял, если бы нужна, например, функция считывания CSV-файла и конвертации данных в массив, но в вашем случае вообще не вижу необходимости в классе. Надеюсь, он нужен не потому, что
0
|
|||||
|
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
|
|||||
| 11.11.2015, 23:07 | |||||
|
nawatar-ru, во-первых как уже было сказано за тебя никто делать ничего не будет. А во-вторых я несколько раз перечитал "тз" и так и не понял что нужно. И у меня такое впечатление, что ты сам тоже не понимаешь чего хочешь.
И самое главное - такой класс никому не нужен, особенно в php. В пхп для работы с файлами мне хватило file_get/put_contents, fcsvget/put, и xml приходилось брать читать/писать в файлы, уже точно не помню через что делал. В других языках тоже не найдешь такого "класса для работы с файлами". Как правило чтение/запись в файл реализована через входные/выходные потоки, которые потом могут быть связаны с чем угодно, в том числе и файлами.
0
|
|||||
|
0 / 0 / 0
Регистрация: 12.12.2013
Сообщений: 27
|
||
| 13.11.2015, 07:34 [ТС] | ||
0
|
||
| 13.11.2015, 07:34 | |
|
Помогаю со студенческими работами здесь
12
Полный класс для работы с INI-файлами (поддерживает Юникод) Нужен готовый класс для работы с массивами Нужен класс на C++ Visual Studio для работы с веб Элементарный класс для работы с файлами, компилятор выдает ошибку, что не так с private Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Рецензия / Мнение
Это мой обзор планшета X220 с точки зрения школьника.
Недавно я решила попытаться уменьшить свой. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|