ФорумПрограммированиеPHP для идиотов → правильно ли я пишу систему? Много вопросов, задаю их по очереди.

правильно ли я пишу систему? Много вопросов, задаю их по очереди.

  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 5 января 2010 г. 16:56, спустя 10 минут



    блочное кеширование - решает


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

    чтобы ШАБЛОНИЗАТОР ЗАПРАШИВАЛ КОНТРОЛЛЕР, а не КОНТРОЛЛЕР ЗАПРАШИВАЛ ШАБЛОН. просто раздели свою логику в приложении на плагины, то есть колонка "рсс новости" к примеру - плагин всего лишь, а вот например Static page = "/page.html" - это уже компонент(у меня), который в твоем случае является контроллером

    зы: надеюсь каша моего сообщения читабельна и ахуенна :)
    Сапожник без сапог
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 5 января 2010 г. 17:08, спустя 11 минут 53 секунды

    у меня примерно так, да не так. Я дергаю из шаблона плагины:

    {:object ContentMenu(
    'настройка1' : 'значение',
    'настройка2' : 'значение',
    ):}
    которые возвращают кешированные данные

    каша читабельна. Расскажи поподробнее. Вот есть у меня /peoples - вывод всех пользователей. И есть /peoples/koc - вывод информации обо мне. Есть контроллер PeoplesLister, который в зависимости от того, указан ли юзернейм или нет возьмет разные данные из БД и отрендерит их в соотв. шаблоны.

    {% extends 'main.htm' %}

    {% block body %}
    <table class="rc" id="default-container">
    <tr><td class="tl"></td><td class="tc"></td><td class="tr"></td></tr>
    <tr><td class="ml"></td><td class="mc">

    <h1><img src="images/page/txt/ru/peoples.png" alt="Люди на сайте" /></h1>

    <h2>Студенты:</h2>
    <ul class="bb">
    {% for student in students %}
    <li class="bb"><a href="[:student.url:]">[:student.name:]</a></li>
    {% endfor %}
    </ul>

    <h2>Преподаватели:</h2>
    <div style="padding-left: 20px;">Coming soon…</div>

    </td><td class="mr"></td></tr>
    <tr><td class="bl"></td><td class="bc"></td><td class="br"></td></tr>
    </table>
    {% endblock %}


    мне сделать этот вывод пользователей простой страничкой контента, у которой в шаблоне будет прописано {:object UsersList():} ???
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 5 января 2010 г. 17:18, спустя 9 минут 15 секунд

    если это не главная часть страницы, то да. если это так сказать PageContent, то кешировать на уровне контроллера.
    Сапожник без сапог
  • artoodetoo

    Сообщения: 5147 Репутация: N Группа: в ухо

    Spritz 5 января 2010 г. 17:33, спустя 15 минут 15 секунд

    возможно боян. Наследование шаблонов в Smarty: http://habrahabr.ru/blogs/php/37962/
    ιιlllιlllι унц-унц
  • artoodetoo

    Сообщения: 5147 Репутация: N Группа: в ухо

    Spritz 5 января 2010 г. 18:24, спустя 51 минуту 6 секунд

    На самом деле django-стиль мне нравится. Нравятся такие штуки:

    {% for item in items %}
    * {{ item }}
    {% else %}
    No item has been found.
    {% endfor %}

    В PHP нет такой простой и выразительной конструкции, а в шаблоне такое очень нужно. В django (значит и в twig) оно есть.
    Что касается "наследования" в контексте шаблонов, то непонятно чем оно лучше "композиции". Объясните если знаете.
    ιιlllιlllι унц-унц
  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz 5 января 2010 г. 21:35, спустя 3 часа 10 минут 40 секунд



    расскажи создателям Джанги

    тшшшш, а то щас сюда адворд наглянет и будет опять пропагандировать свою змеючку =)
    да ну нафиг, я понял что без толку, "сообщество php-маньяков"…
    Спустя 102 сек.
    пайтон/джанго офигенен, и я все время в этом убеждаюсь, а доказывать вам мне надоело… до кого-то донес свои эмоции, до кого-то нет… пришло ваше время решать с чем вам жить в дальнейшем
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 5 января 2010 г. 21:39, спустя 4 минуты 39 секунд

    с баблом!
    Спустя 22 сек.
    а жанго/питон/пыха/си это все средства цели.
    Сапожник без сапог
  • mario

    Сообщения: 6067 Репутация: N Группа: Джедаи

    Spritz 6 января 2010 г. 1:10, спустя 3 часа 30 минут 30 секунд


    с баблом!
    Спустя 22 сек.
    а жанго/питон/пыха/си это все средства цели.
    +1
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 6 января 2010 г. 17:13, спустя 16 часов 3 минуты 7 секунд

    Хорошо. Допустим, с этим вопросом мы разобрались. Переходим к следующему.

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

    Это разные страницы, урлы у них тоже разные. 1) Можно для каждой странички подключать файл с обработчиками "для нее", типа

    $(document).ready(function()
    {
    $('input[type="submit"]').click(checkFields);
    });


    2) можно этот код размещать в шаблонах и потом он будет в теле страницы
    3) еще вариант все спижевать в один файл, а в теле страницы делать только $(initLightbox); $(initBlogChecking);
    4) спижевать все в один файл, и чтоб в этом файле происходил разбор УРЛа, в зависимости от него то ли мы лайтбокс включали, либо же вешали проверку формы. Или это не на основе урла делать? А как тогда?
  • Trej Gun

    Сообщения: 5305 Репутация: N Группа: в ухо

    Spritz 6 января 2010 г. 19:26, спустя 2 часа 13 минут 33 секунды

    Абырвалг, самый хороший вариант спижевать все в один файл такой структуры


    Site = {
    initLightbox : function(){},
    initBlogChecking: function(){}
    }


    и на каждой странице вызывать то что нужно


    $(document).ready(function(){
    Site.initLightbox();
    });

  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 6 января 2010 г. 19:43, спустя 16 минут 55 секунд

    то есть ближе к варианту 3, только более структурированно:
    3) еще вариант все спижевать в один файл, а в теле страницы делать только $(initLightbox); $(initBlogChecking);

    хорошо, мне нравится. У кого еще какие мнения?
    Спустя 122 сек.
    напомнило:

      var SocialEngine = new SocialEngineAPI.Base();

    // Core
    SocialEngine.Core = new SocialEngineAPI.Core();
  • artoodetoo

    Сообщения: 5147 Репутация: N Группа: в ухо

    Spritz 6 января 2010 г. 20:05, спустя 21 минуту 50 секунд

    мой словарь обогатился новым словом спижевать :)

    хорошо, мне нравится. У кого еще какие мнения?

    я думаю не надо пытаться анализировать URL. скрипт на событие ready должен пытаться найти элементы с определенным id или class и по одной и по другой теме. мало ли в будущем ты куда эту функциональность добавишь…
    ιιlllιlllι унц-унц
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 8 января 2010 г. 19:10, спустя 1 день 23 часа 4 минуты

    мало ли в будущем ты куда эту функциональность добавишь…
    так и родился жукери =))
    Сапожник без сапог
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 21 января 2010 г. 11:32, спустя 12 дней 16 часов 21 минуту

    Чую, что делаю что-то не так. Вот я недавно поднимал тему множественного наследования.

    Что делаю: блоги и комментарии. Блоги могут быть общие на главной и блоги в группах (видимые всем или только участникам группы - зависит от видимости группы). Комментарии можно писать к записям в блоге и к фотографиям. Как общим так и к тем, что в группе.

    Гляньте плз исходник, как бы это лучше организовать?
    getToken у блогозаписей и комментариев отличается. Токен у основных блогов - main, у блога группы с id=5 groups/5
    1. dev.zip (29)
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 21 января 2010 г. 11:38, спустя 6 минут 42 секунды

    если там слишком непонятно, могу попробовать нарисовать UML'ку

Пожалуйста, авторизуйтесь, чтобы написать комментарий!