Как стать автором
Обновить

Комментарии 27

простите, но для чего эта статья?
если для того, чтобы показать, как работать с файлами — это какой-то слишком низкий уровень для хабра
если для разбора практического примера — ваш пример откровенно плох, я настоятельно рекомендую никому не реализовывать новостную ленту через файлы, если только (сюда подставить целый список условий типо «лень», «надо сделать для себя за 2 часа», «будет запущено на моей машине» и т.п.). я понимаю, что каждый волен делать так, как считает нужным, но не надо учить начинающий разработчиков плохому :)
Задача написать максимально простой и понятный код.

Когда стоит такая задача, не стоит использовать переменные с именами $files1, $a.

$files1=array_reverse($files1);

scandir() позволяет задать сортировку вторым параметром и избавиться от этой строки.

scandif($dir, 1)

для PHP версии < 5.4 и

scandif($dir, SCANDIR_SORT_DESCENDING)

для 5.4 и выше.

И вообще, вместо scandir можно использовать glob("*.txt") и тогда не понадобится $p == $all-2 и preg_match('/\d+\.txt/', $val), правда array_reverse придется оставить
Пробовал потом и с glob в итоге выбросил и то, и другой.
Параолимпийские игры по программированию.
Да ладно вам, мои первые скрипты наверняка выглядели также. Может лучше объяснить человеку, что плохо и почему, чем просто загнобить?
Для этого есть тостер и phpclub с Фанатом.
для этого есть тостер с фанатом и phpclub с фанатом — он вездесущ )
внезапно
Классический способ
1. Открыть браузер.
2. Набрать адрес или нажать на вкладку.
3. Опционально. набрать пароль или нажать подтвердить.
4. Набрать текст.
6. Нажать отправить.

Получаем 5-6 операций. Затраты времени на открытие браузера.

Способ с файлами
1. Открыть блокнот.
2. Набрать текст
3. Сохранить сразу в папку на сервере.


Для «сохранения сразу на сервере» не надо ли набрать адрес этого сервера и пароль?
Можно убрать из этой строчке «на сервере» и станет понятно и вопрос отпадет сам-собой.
Если сервер на рабочем компьютере, то набирать не надо адрес.
Тогда надо не адрес а путь к папке
Всплакнул, спасибо :')
Ох уж эти веб-технологии 90-х.
Что это делает на главной?
собирает минусы
Неудобно получилось, только я отправил просьбу по почте, чтобы повременить с публикацией, она состоялась, а я начал ее редактировать :)

Вчера, после отправки этой заметки через 10 минут пришла мысль в голову, что я поторопился, видимо, пересидел.
Но я решил все же лечь спать и переделать все утром, а потом написать модераторам.

Переписал, у брал scandir, хотел сначала glob использовать, потом решил подумать, как вообще выкинуть массивы и циклы.
снимай статью. с ней ты каждые 10 минут минусы получать будешь…
ЗЫ: уж тогда бы писал в xml и то прок был бы… чуть-чуть
Файлы можно хранить не в .txt а .html, что позволить прописывать для каждого файла, например, свои мета-теги.
Несложно будет добавить эту опцию в панель администратора.


Если вы не хотите использовать все плюшки PDO или MySQLi, SQLite, Firebird, MongoDB… А хотите хранить все данные в файлах, смотрите в сторону json_encode(), json_decode(). Так вы можете хранить данные, хотя бы, в массивах. Если вы хотите сэкономить место на HDD, пакуйте данные gzencode()/gzdecode()… И вам нужно, хотя бы, написать самый тривиальный шаблонизатор на основе str_replace()…

ЗЫ
Я не буду говорить на сколько ваш код ужасен и не применим в «нормальной» системе, думаю вы и так уже это знаете.
Как написал barker, спасибо, что напомнили о веб-сайтах 90х…
Вы правы, но я все же попробую объяснить. Есть очень много людей, которые заняты в разработке сайтов — в разной степени, разной сложности. Не спорю, есть уже некие стандарты и профессиональные отточеные решения, в случае с php — их масса.
Я сам новичок и очень медленно по мере сил вникаю в php, но наблюдаю за форумами и вопросами — они одни и те же.
«Как сделать пагинатор? Как сделать листалку? Как вывести новости на сайт с mysql? Как вывести на файлах? „
Фактически — это топ вопросов. На подобные вопросы часто появляется профессиональный ответ и профессиональный код, но в этом отчасти и кроется проблема. Многие, кто работает с готовыми решениями, часто не могут разобраться в профессиональном коде.
Я честно говоря, сам долго не понимал, с какой вообще стороны подступиться к программированию. Просто читать учебники? Хорошо, но если нет мотива сделать что-то конкретное, прочитанное так и останется в глубинах памяти. Вдобавок в учебниках много теории. А задача, субъективно на пером этапе изучения простая — понять хотя бы механизм, принцип. Я вижу пока только один вариант. 1. иметь мотив сделать что-то конкретное — пусть — это велосипед. 2. найти максимально простой пример, самый простой код, желательно, условно говоря, с псевдокодом на русском языке.
Часто наблюдая за развитием тем на форумах, видел, что многих отпугивает объем кода в профессиональных решениях. А как объяснить механизм? Опять же, субъективно, только самым простейшим решением. И такое решение, в случае со стандартными вопросами php — однозначно может вызвать негодование или усмешку профессионала. Но не реальное, практическое использование примера является задачей — “это лишь начало попытки реализовать идею новостей на файлах».

REZ1DENT3, спасибо за советы по json_encode(), json_decode(). Пока для реальных задач хватает Mysql.
Ладно, вдруг все же кому-то пригодится и у кого-то появится идея сделать что-то существенное, но простенькое.
Для тестирования чуток допиленное в архив:
https://yadi.sk/d/a1An-QyHg4prH
lolipop, спасибо…
Кстати куда круче была бы статья, если бы к примеру редактор мог бы писать обычный вордовский файл (со всем оформлением картинками и т.д.), а ты бы парсил его с сервака и заливал бы в бд. А потом бы по хэшсумме проверял, если файл изменился — значит пересканировать и обновить статью.
BupycNet, это интересная идея, но механизм получается довольно сложным. Но, думаю, что-то подобное уже реализовано. Кстати, как и подгрузка оформления из БД и даже самих скриптов с помощью eval.

Но интересно было сделать что-то совсем микро, и обязательно без бд. Я еще буду экспериментировать с этим.
Тут немного истории, я начал писать микро-движок с mysql для мобильного (Android) веб-сервера — Palapa web server (PHP+MYSQL+MSMTP) — сервер можно бесплатно скачать на Google Play Market. Вот тут-то и всплыли идеи из прошлого, на тему микродвижков.
Если интересно можете ознакомиться с моей же темой на http://4pda.ru/forum/index.php?showtopic=583136
И зачем люди годами вырабатывают лучшие практики? Не, мы сами с усами.
Ну уж если так хотелось не использовать массивы и scandir, почему было бы не использовать RecursiveDirectoryIterator?
его нужно знать для этого)
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории