понял, говоришь поверхностно. Видимо у самого опыт как у меня ) может чуть больше )ну да, лет этак на 20 больше ). Говорю поверхностно по тому что в целом по уму вообще не так делают, но объяснять тебе в течение года как работать с фреймворками в зависимости от ситуации будет напряжно. Будет эффективнее помочь с направлением решения конкретно твоей кривоватой реализации коротко и по существу, а понимание правильного кода придет с опытом.
А почему кошмар, я записываю так чтоб понятно было ) латиница ) транслит.Используйте нормальные англицкие слова, "тут так принято" ) и скилл поднимите в языке, и выглядеть солиднее будете в глазах коллег ).
Выходит можно сделать один актион, но в нем как-то подгружать к каждому урлу свой шаблон.Да, так можно ) и
$this->template->content = $content; достаточно добавить 1 раз в конце. А какой шаблон и заголовок определить в начале. Тогда все будет аккуратно и не будет дублироваться.
все жмакают на кнопку, чтобы оказаться как можно выше по структуреТо есть у вас важно кто нажал раньше? Или это не обязательно учитывать? Если важно - пишите тупо табличку с [юзер_ид - микротайм](что займет микросекунды), после чего можете спокойно в любой момент перерасчитать последовательно всю вашу структуру в течение часа или двух.
Транзакции здесь вопхнул, чтобы это все была одна неделимая операция, так как если спишутся баллы и не активируется тариф, то будет неправильно и наоборот...Ну, спорно, хотя и оправдано, но в данном случае в транзакцию надо было обернуть ТОЛЬКО эти 2 операции - списание и зачисление, это поможет избежать лишних блокировок на связанных таблицах. Вообще вероятность сбоя в режиме транзакции в следствие блокировки таблиц с последующим вылетом скрипта, имхо, выше чем вероятность сбоя при обычном неблокирующем инсерте.
var_dump(scandir($dir)); что дает?