|
[StartUp] новый php FrameWork - приглашаю к разработке
|
|||
---|---|---|---|
#18+
Разработан прототип. Интересует ваше мнение относительно концепции фреймворка. Про команду Ищу архитектора в проект на постоянной основе. Не откажусь от удалённых консультантов. Варианты участия обсуждаются (в т.ч. доля в бизнесе). Так же приглашаю в команду всех, кто .. обычно состоит в команде: кодеры, верстальщики, дизайнеры, менеджеры. Приглашаю проживающих в сПб. Рассмотрю предложения от студий, желающих взять фреймворк на вооружение. Фреймворк пишется в первую очередь для собственных проектов и во вторую - для широкого внедрения. Основной проект: createrra.ru - соцсеть для стартапов. На его базе есть ещё несколько инфраструктурных проектов (расширяющих функционал Креатерры, но при этом самодостаточных, способных жить самостоятельно). Кратко по основным моментам фреймворка. Со стороны потребителя это выглядит как движок, на котором можно сделать социальную сеть, систему управления проектами, сайт или блог. Со стороны разработчика это выглядит как jQuery, только на PHP. При создании этого фреймворка я стремился оградить разработчика от общения со множеством классов и методов, предоставив удобные универсальные инструменты. Первый и основной из них — subject . Магическая функция s() обеспечивает доступ ко всем свойствам и методам сабжей (subject - это всё, что размещено на сайте: тексты, проекты, комментарии, фотографии). Запросить любой сабж можно указав его URL в запросе: s('//.img_a12_345') При этом не требуется никакой инициации: сабж со всем свойствами и методами будет доступен сразу, в любом месте сайта. Если нужно получить текущий сабж, то URL указывать не обязательно. Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
При выполнении запроса проводится проверка прав доступа. Если доступа нет, вернёт пустой результат Так же, можно предварительно проверить права: Код: php 1.
Подробнее про работу с этой функцией: Двигатель: общий вид Далее. Работа с текстом Фреймворк позволяет использовать разные редакторы текстов (можно ставить сразу несколько редакторов), создавать тексты разных форматов. Для разных случаев жизни можно назначать соответствующие форматы, открывать и закрывать доступ к редакторам. Имеется возможность вести историю изменений (при смене редактора или формата делается резервная копия). Тексты хранятся в двух видах: сырой текст (raw) и преобразованный: Имеется возможность вставлять свои теги. В частности, реализована быстрая вставка сабжей: Код: php 1. 2.
Далее, Widget При помощи виджетов реализуются все замыслы разработчика относительно дизайна и функциональности сайта: создаются модули, текстовые блоки, формы, обрабатываются запросы. Вызывается таким образом: wg('name','param'); Код: php 1. 2. 3. 4. 5. 6. 7. 8.
И так далее. Частично реализован кэш, работа с шаблонами, стилями. Есть интересные решения для работы с изображениями. Более подробно разобрать проект можем при встрече. Пишите вопросы/предложения здесь или на почту st.createrra собака ya.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2013, 22:50 |
|
[StartUp] новый php FrameWork - приглашаю к разработке
|
|||
---|---|---|---|
#18+
ArteNonMarte, Это всё замечательно, но это визуальная часть. Мне кажется, что разработчикам не хватает инструмента для описания бизнес-логики в большей степени, чем визуальной части. Правда подавляющее большинство об этом даже не догадывается. Вот тут я описал как можно описывать логику с помощью командного процессора. Главным плюсом является встроенная система безопасности, которая органично встраивается и является неотъемлемой частью процессора Ссылка на описание Там мне как раз не хватало фреймворка для визуальной части. Можно скооперироваться. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2013, 09:12 |
|
[StartUp] новый php FrameWork - приглашаю к разработке
|
|||
---|---|---|---|
#18+
Ну, это не только визуальная часть. Функция s() обращается непосредственно к ядру, запрашивая свойства и методы, при этом проводится проверка прав (функции безопасности). Для бизнес-логики у меня используется класс Widget (примеры обращения есть в первом посте). Внутри виджета запросы к свойствам и методам идут уже через функцию s(). У свойств и у методов разные способы настройки прав доступа. У методов можно настроить да/нет, а у свойств больше настроек: Код: php 1. 2. 3. 4. 5. 6. 7.
Свойства добавляются так же как и методы, при этом доступ задаётся тут же (наряду с прочими настройками): Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
При запросе свойства вызывается соответствующий класс. Например, для получения имени проекта вызывается класс title Если идёт запрос на редактирование, вызывается класс title.set Все [редкие] свойства хранятся в отдельной папке core/fields/ Наиболее популярные свойства хранятся в отдельном классе Значения свойства вычисляются и заносятся в кэш (если какое-то значение изменилось, кэш обновляется) Свойства могут быть типовыми, то есть получение и задание их значений обрабатывается одним классом. Например свойства титл и субтитл обрабатываются одним классом title. При добавлении свойства к сабжу можно указать тип - поле type, которое по умолчанию равно названию свойства: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
Права доступа можно вписать непосредственно, либо вызвать какой-то набор настроек. Так же можно сослаться на права другого свойства или метода или даже другого сабжа. Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
То есть, через свойства частично можно решать задачи бизнес-логики. Например, свойством некого проекта может быть список созданных в нём альбомов: Код: php 1. 2. 3. 4. 5. 6.
Правда для запроса вложенных сабжей у меня есть более удобная реализация: запрос коллекций. Если сабж существует и может быть вложен в другой сабж, то можно запросить коллекцию таким образом: Код: php 1. 2. 3. 4. 5.
Иерархия сабжей и их родственные связи задаются в конфиге. Код: php 1. 2. 3. 4. 5. 6.
Но вопросов по бизнес-логике у меня много, так что кооперация возможна. Единственное - хотелось бы заняться рефакторингом после того, как будет сформирована команда. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2013, 21:08 |
|
[StartUp] новый php FrameWork - приглашаю к разработке
|
|||
---|---|---|---|
#18+
и ещё: Сабжи управляются двумя классами, работающими в паре: Класс Action и его статичный брат act (имя Action было взято по традиции. В следующей версии фреймворка Action будет заменено на Subj, как наиболее подходящее по сути) Все сабжи наследуются от Action. Класс act осуществляет роутинг и непосредственно раздаёт сабжи по запросу. Важный момент: при вызове сабжа объект создаётся единожды. То есть, если мы запросим два десятка картинок, будет создан только один экземпляр класса Action_img, а не 20. Картинки будут храниться в массиве объекта act Код: php 1. 2.
Когда мы запрашиваем сабж, то он отдаётся из этого массива (после проверки прав, разумеется). Если его там нет, то он загружается. Точнее, берутся его свойства из кэша. Точнее, "популярные" свойства, у которых глубина запроса (depth) равна 1. Редкие свойства запрашиваются отдельно, что не происходит при вызове коллекции, а лишь при вызове конкретного сабжа, что позволяет регулировать нагрузку. То есть, у сабжа может быть 10, 100 или даже 1000 разнообразных свойств, но это не значит, что их нужно непременно загружать по первому требованию. То же и с методами (динамическая загрузка методов описана многократно). ... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2013, 21:46 |
|
|
start [/forum/topic.php?fid=33&fpage=18&tid=1547728]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
35ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
67ms |
get tp. blocked users: |
2ms |
others: | 34ms |
total: | 185ms |
0 / 0 |