Jump to content

Лайт Фрог


Ялекс
 Share

Recommended Posts

Написал небольшой скрипт, который организует работу сайта без БД.

Сайт проекта (Upd: Простите, сервер периодически падает, поэтому иногда сайт будет в дауне)

Лично мне нравиться когда у меня нет ограничений на использование PHP, а быстро править сайты с помощью встроенного в Notepad++ FTP вообще сказка. Может кому ни будь пригодиться.

Хотелось узнать ваше мнение.

Edited by Ялекс
Link to comment
Share on other sites

Напишу некоторые замечания по самому скрипту, которые я пока что обнаружил:

1) мне не совсем понравилась архитектура проекта. Он какой-то половинчастый: наполовину классы (точнее всего один-два и обчелся), наполовину функции. Мне такое решение не нравится и я бы делал либо процедурно-ориентированным либо объектно-ориентированным

2) использование исключений это хорошо, но по всей видимости исключения используются только для того, чтобы выдать 404-ю ошибку либо вконце сказать echo 'Error: ' . $e->getMessage();. Это плохое использование исключений. Если они не типизированны (я имею в виду для каждого типа ошибок свой класс исключений), то от них мало толку (кроме прерывания конструктора). К тому же хотелось бы чтобы где-то был лог ошибок, чтобы можно было посмотреть на ошибки

3) кэширование - это хорошое дело, но только в том случае, если контент генерится динамически. В твоем случае (насколько я понимаю скрипт предназначен для сайтов-визиток) от кэширования много времени не выиграешь, поскольку основной контент берется из статичных страниц, а парсинг xml происходит в любом случае.

4) я не совсем до конца понял назначение некоторых свойств и методов класса Page, а точнее Page::parent и Page::__get(). Т.е. я приблизительно понял для чего они нужны, но хотелось бы уточнить

5) метод Page::find() можно сделать статическим - он ни как не изменяет состояние объекта, а только создает и возвращает новый объект класса Page. Сниппет contactform может дать сбой, если хелпер Email при отправке вернет false.

Link to comment
Share on other sites

Отлично. Хорошие замечания.

1) иногда нужно совмещать функциональное и объектное программирование. Вообще этот скрипт - это просто упрощенная версия Frog CMS. Да и я сам не вижу смысла создавать отдельный класс, к примеру, для функции redirect(). По сути, PHP ведь от функционального программирования никуда не ушло...

2) Да, я буду развивать более продуманную систему исключений. Просто я еще не уделил этому внимание. И лог ошибок необходим, согласен!

3) Кэширование - все страницы парсятся Textile и от этого скорость падает в разы. Если большая страница, то её парсинг может занять 1 секунду, а это уже значительные потери во времени.

4) Все атрибуты для каждой страницы из XML переходят в переменные объекта, но когда пытаешься проверить не существующую переменную, то ПХП может ругнуться, что такой переменной нет. Чтобы не проверять постоянно empty($this->attr), я просто "магическим" методом __get проверяю наличие переменной.

5) Про find спасибо. Наверное я так и сделаю! Про Email тоже посмотрю. Спасибо.

Link to comment
Share on other sites

1) каждый делает как хочет и может совмещать или не совмещать объектно-ориентированное и процедурно-ориентированное. Но мне такое решение не нравится. А все одинокие функции можно объединить в в какой-нибудь служебный класс

3) если Textile долго парсит текст, то зачем этот кастыль нужен? Можно взять что-то похожее на стандартые bb-коды или разрешить теги в страницах.

4) мне это больше всего напоминает черный ящик: есть своего рода конфиг (map.xml), но никто не знает что в нем есть и какие данные он должен предоставить и неизвестно вообще инициализирует он свойства класса или нет

P.S. Я думаю никто из посетителей не должен знать о внутренней структуре сайта и его содержимом.

P.P.S. Твое TODO я от скуки набрасал за пол часа.

Link to comment
Share on other sites

Тю, опэнсаурс... Тем более, что идеи там не мои, я лишь где то упростил, где то расширил, и добавляю туда свои новшества.

Блин, я тоже хочу "идеигенератор" :unsure: А то охото, что нибудь сделать хорошего, а мыслей нету.. :)

P.S.

Скрипт завтра гляну..

Edited by Vialls
Link to comment
Share on other sites

Больше половины методов (функций) были взяты из Frog CMS (класс Page). Просто я переписал многое: была работа с БД, стала работа с файлами на диске. Просто это как ответвление от Frog CMS.

xPoint, тэги итак можно использовать, и PHP можно использовать. Никто не мешает.

1) Постой, а функции ПХП, например file() или header()? Это функциональное программирование? Почему нет класса Header::set(...) ? PHP еще не дорос чтобы полностью считаться объектно-ориентированным, поэтому нужно избавиться от предрассудков, что везде нужно использовать ООП и только ООП.

3) Просто Textile разметка очень проста и вместо <a href="...</a> достаточно написать "Ссылка":http://link.com/. Лично мне так удобней.

4) Почему же. Конфиг map.xml ты правишь руками, поэтому сам можешь представлять себе где у какой страницы какие параметры. Вообще то не понял что ты хотел донести этим пунктом.

Туду я накидал на завтра, чтобы не забыть. Оно у меня уже реализовано на другом проекте, просто пока что еще не вкидывал.

Link to comment
Share on other sites

1) Постой, а функции ПХП, например file() или header()? Это функциональное программирование? Почему нет класса Header::set(...) ? PHP еще не дорос чтобы полностью считаться объектно-ориентированным, поэтому нужно избавиться от предрассудков, что везде нужно использовать ООП и только ООП.

Нет, это не функциональное программирование. Это процедурно-ориентированное. PHP уже вполне дорос до того, чтобы можно было без предрассудков использовать ООП. Может быть в php поддержка объектной модели не такая сильная как скажем в Java, но не использовать возможности ООП я считаю все-равно, что не пользоваться лифтом а идти с десятого этажа пешком )).

3) Просто Textile разметка очень проста и вместо <a href="...</a> достаточно написать "Ссылка":http://link.com/. Лично мне так удобней.

ИМХО очередной велосипед, те же самые bb-коды. Лучше всего сделать админку, подключить в нее какой-нибудь WISYWYG-редактор и не париться об этом

4) Почему же. Конфиг map.xml ты правишь руками, поэтому сам можешь представлять себе где у какой страницы какие параметры. Вообще то не понял что ты хотел донести этим пунктом.

я говорил про использование метода __get(). В этом случае никто из объектов в скрипте заранее не знает о том: какая структура у map.xml, какие данные от него можно получить, что не нужно трогать (например служебная инфа или инфа, которая будет парситься в другом месте и в другое время) и т.д.

Link to comment
Share on other sites

Да, объект не знает заранее что может быть в ноде у map.xml. Просто если отсутствуют необходимые свойства, то берутся параметры "по умолчанию". Не знаю чем это плохо?

Я понимаю, что в PHP можно смело писать на ООП, но это лишняя писанина, лишние классы, а по сути ничего не поменяется: буду я вызывать Tools::memory_usage() или memory_usage().

Upd: Замечание по поводу открытости map.xml я учту. Закрою через .htaccess. Спасибо, xPoint!

Edited by Ялекс
Link to comment
Share on other sites

Да, объект не знает заранее что может быть в ноде у map.xml. Просто если отсутствуют необходимые свойства, то берутся параметры "по умолчанию". Не знаю чем это плохо?

Хорошо, представим, что map.xml остается таким как есть. Исходя из того, что никто не знает что из себя представляет map.xml, лучше вообще его закрыть. Например,организовать шлюз к которому будет обращаться Page при инициализации за нужными данными. Таким образом можно попробовать ввести несколько различных шлюзов (для xml, для ini, для базы и т.д.) и в зависимости от настроек брать инфу в одном из перечисленных источников.

Link to comment
Share on other sites

Я уже об этом кстати думал... Насчет одинаковой поддержки как INI, так и XML. Вот я еще поразмышляю насчет БД. Хочу все таки сделать расширяемость "ручками"... то есть чтобы немного покрутить, и сделать опрос, статьи, к примеру...

Link to comment
Share on other sites

А как насчет сайта, хочу услышать ваши отзывы.

Я внес кое какие изменения: в частности сделал градиентный бэкграунд, добавил форум.

Изменения в плане дизайна пошли на пользу?

Link to comment
Share on other sites

  • 2 weeks later...

Сайт думаю сойдет, но меня больше волнует кривая работа скрипта, я сделал все по инструкции, но вот какие проблы:

1) Кэш работает не зависимо от значения в конфиге.

2) Mod_rewrite при включении не открывает страницы, выдает ошибку 404.

3) Стили, картинки, ничего не грузиться.

Edited by vvsh
Link to comment
Share on other sites

Попробуй настроить .htaccess, изменить в нем RewriteBase, на ту, в которую ты установил скрипт (или вообще убери эту строчку).

Да, у нас на форуме уже обсуждали это, я исправлю в версии 0.6.

Пока что Лайт Фрог может быть интересен в познавательных целях, а до версии 1.0 он будет существенно изменен.

Вот например в версии 0.6 совсем по другому выглядит map.xml. Кэш я убрал, он скорей всего вообще исчезнет из ЛФ, так как в версии 0.7 планирую запустить редактор для управления страницами, который уже будет генерировать конечный HTML.

Edited by Ялекс
Link to comment
Share on other sites

Вышла промежуточная версия Лайт Фрог 0.6 альфа.

Скачать и протестировать её можно по ссылке: http://litefrog.org.ru/lf/forum/read.php?5,66

Буду признателен, если вы примете участие в тестировании скрипта.

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy