Подскажите задания для новичков

fixxxer

К.О.
Партнер клуба
fixxxer
на селект да, на апдейт и прочее из CRUD можно обойтись: тразакция + действия с нужными моделями в поведении, которое вешается на нужную главную модель, все банально просто.
Я знаю, как обойтись, но это довольно грустно все это писать каждый раз.
Плюс, тут архитектурный просчет, нормально на уровне AR сделать невозможно - всякие "решения" с гитхаба с парсингом information schema это еще хуже.
Нужен table gateway, зря решили сделать "проще".
 

Ragazzo

TDD interested
fixxxer
архитектурный просчет в чем?вот чего на мой взгляд действительно не хватает это автотранзакции, чтобы все запросы были в одной транзакции и не проверять каждый раз есть ли текущая активная транзакция.
 

Ragazzo

TDD interested
fixxxer
все из рельсов не перетащишь :D итак скопс оттуда взяли)
 

AmdY

Пью пиво
Команда форума
Ragazzo
почему же, есть же кальки на это дело, вполне себе юзабельные, вот только на LSB, недавно дебажил одну такую, проще застрелиться.
 

AmdY

Пью пиво
Команда форума
https://github.com/kla/php-activerecord https://github.com/kla/php-activerecord/blob/master/test/RelationshipTest.php или извратный http://www.redbeanphp.com, есть ещё какая-то хорошая либа, но не могу найти закладку.

fixxxer
Что бы ты выбрал между смарти 3 и твигом и пару слов почему, а то я ни со вторым дела не имел, а вот первый сильно изменился с ветки 2 и я теряюсь в выборе. есть ли существенная разница из-за объектности твига?
 

Ragazzo

TDD interested
AmdY
гляну первые два, а вот редбин это же вообще жесть, не?когда то давно на хабре про него статья была, ну я скачал, посмотрел... такой ужас там.
 

fixxxer

К.О.
Партнер клуба
AmdY
Твиг. За удобство расширения, консистентность API, удобство отладки и невозможность получить фатал еррор шаблоном (это, конечно, влечет некоторые проблемы с производительностью - решается вот этим: http://derickrethans.nl/twig-extension.html).
Смарти как был большим хаком так и остался.
 

AmdY

Пью пиво
Команда форума
fixxxer
Собственно проблема в том, что я пока могу использовать твиг как смарти, максимум, что использование наследования. помнится ты бросал код где для описание вида форм использовал макросы. Если не влом, собери пару юзкейсов твига, отличных от типично самрти-подхода.
 

fixxxer

К.О.
Партнер клуба
Макросы в QuickForm2
http://svn.php.net/viewvc/pear/packages/HTML_QuickForm2/trunk/docs/examples/renderers/templates/array-twig.tpl?revision=325495&view=markup

Вывод дерева (обезличенный продакшен код ({% url .. %} - мой кастомный тэг, вставляет вызовы UrlBuilder-а в момент компиляции)
http://pastebin.com/PdVbMM2b

Наследование: с обычным все понятно, horizontal reuse позволяет реюзать код, когда, например, встречаются 1, 2 и 3-колоночные варианты одинаковых в остальном страниц - пример с сайдбаром в доке вполне наглядный.

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

Человеческое консистентное апи для всего: фильтров, функций, compile-time тэгов (где можно нормально работать, а не конвертить, как в смарти, обратно уже изговнянные приведением к кускам пхп-кода параметры). Можно легко сделать свой загрузчик - например, так я читаю из моделей пользовательские шаблоны. Внутри твига все сделано на том же API, в отличие от смарти. Легко через Environment протащить что угодно, в отличие от, опять же, смарти, где я не находил ничего лучше, чем срать в internal config properties.

Еще можно посмотреть рецепты всяких полезных штучек.

P.S. Какой милый оффтоп обо всем получается. :)
 
  • Like
Реакции: AmdY

Ragazzo

TDD interested
fixxxer
А я думал QuickForm2 умер ( его вроде поддерживал и сделал кто-то тут из phpclub.
 

fixxxer

К.О.
Партнер клуба
Его Sad Spirit делает. Не знаю, насколько пациент (в смысле QuickForm2 :)) жив или мертв - но пример макросов там вполне наглядный.
У меня по другому - {{ form.input() }}, {{ form.select() }} итд - банально, а копипастить много =)
 

AmdY

Пью пиво
Команда форума
fixxxer
похоже придётся полностью вычитывать доку, ведь даже вызов метода выполнить не получилось.
PHP:
// работает
 {{ table.getAction('delete') }}
// не работает
{{ if table.getAction('delete') }}
{{ endif }}
Спасибо большое, пойду-ка спать и завтра возьмусь за twig
 

AmdY

Пью пиво
Команда форума
Ух, не заснул, зато проблему решил, нужно было другие квантификаторы использовать
PHP:
{% if table.getAction('delete') %}!!{% endif %}
 

fixxxer

К.О.
Партнер клуба
{{ }} == {$ } (считай, что макросы это такой closure с toString)
{% %} == { }
 

Ragazzo

TDD interested
AmdY
fixxxer
Раз уж совсем оффтоп, то вроде как "производительность программиста" ночью хуже, чем днем, ну сбивать биоритмы и т. д., и т. п. нельзя иначе только хуже, вроде) сначала так кажется что вот успею успею все, не буду спать ночами, а в итоге себе же хуже, не?
 

Фанат

oncle terrible
Команда форума
Фанат
поэтому getExpr использовать здесь не стоит
Вот интересно. Почему-то конечный код из тебя надо вытягивать клещами. "Так делать не надо!" А как делать надо - молчок.
при том что мою библиотеку освоит любой, кто знает SQL. В твоей надо каким-то образом (телепатическим?) получать сокровенное знание - что имел в виду автор, создавая тот или иной магический метод.

Ты, конечно, можешь игнорировать мои вопросы, но это не сделает твою библиотку соответствующей твоим же заявлениям.
Сколько ни говори "халва", но во рту слаще не станет.

И от твоих заявлений про расширяемость расширяемой она тоже не станет.
Это именно то, о чём я говорю - авторы фреймворков выдумают себе религию, и начинают проповедовать, как та воспитательница в анекдоте про Вовочку и Советский Союз.

"А между ног у него была страшная действительность", прямо в соседних параграфах:
(1)При желании insert можно перепоределить
(2)Для таких случаев есть возможность писать прямые запросы в формате sql.
Ну и по какому месту пойдёт (1) в случае использования (2)?

Я не то чтобы придираюсь к тебе лично. Меня убивает, что все создатели серебряных пуль беззастенчиво врут сами себе. "У нас всё расширяется! Только вот здесь костылёчек, вот тут подпорочка, там мегахак" - а в итоге получается эталонный говнокод. Гладко было на бумаге, да забыли про овраги...
 

Redjik

Джедай-мастер
AmdY
fixxxer
Раз уж совсем оффтоп, то вроде как "производительность программиста" ночью хуже, чем днем, ну сбивать биоритмы и т. д., и т. п. нельзя иначе только хуже, вроде) сначала так кажется что вот успею успею все, не буду спать ночами, а в итоге себе же хуже, не?
Не - фигня все это, раз в месяц можно, если выспаться утром хорошенько - день + ночь на кофе - успеваешь перед дедлайном как за 2 дня примерно... если себя в руках держать =)))
 

AmdY

Пью пиво
Команда форума
Фанат
Я не вижу смысла это обсуждать, так как там такие элементарные вещи уже описаны в тестах
https://github.com/AmdY/SimplePhpFramework/blob/master/test/vendor/Frm/DBTest.php#L67
https://github.com/AmdY/SimplePhpFramework/blob/master/test/vendor/Frm/DBTest.php#L79

Ragazzo
Я категорически не могу работать раньше 11-ти, в десять голова совсем ещё не включается, на работе специально до говаривался, потому что явка к 10-ти. Даже в настольный футбол играть хорошо начинаю к 12-ти, а вот часа 3 ночи у меня пик, когда всё получается. При этом годами приучивал организм к стандартному рабочему графику, но толку нету. Думаю это индивидуально, хотя, большинство сов действительно надуманы.

Redjik
Перед дедлайном надо либо спать, либо уже праздновать, но ни в коем случае не писать код. Эх, у меня друг проджектменеджерит, так у его команды за неделю набегает один свободный день, при этом заказчик очень доволен скоростью разработки и утверждает что делают больше чем с предыдущим. Не знаю это управление ожиданиями или действительно от спокойного графика растёт производительность.
 
Сверху