Этот сайт не наркоманов. Это сайт программистов.

Добро пожаловать на Пыху!

Логин:
Пароль:
 

Нет прописки? Зарегистрируйся!

Новости

Мы в твиттере!
Мы вконтакте!
Мы на яндексе!

Краснодарское время: 25 Май, 2012, 02:08:47

Страниц: [1] 2
Печать
Автор Тема: Blitz 0.7 и php-функции  (Прочитано 589 раз)
0 Пользователей и 1 Гость смотрят эту тему.
vasa_c    ↓ 
27 Июль, 2011, 01:03:08
НЕ ХУЕТА! ХУЕТА!

Группа: в ухо

Карма: 81
Сообщений: 2459
Сила слова: 3.29

Был у нас Blitz 0.6 и понадобилось вызывать в нём PHP-фукнции.
В 0.7 их можно вызывать в виде {{ php::function(args) }}, поэтому на него и перешли.
 
И тут ПЦ - половину функций стало возможно вызывать даже без "php::". Просто {{ function(args) }}.
И, что цуко характерно, они вызываются в первую очередь, а то, что у нас уже в наследниках Blitz были определены методы с такими же именами, им не интересно.
 
Где вообще об этом написано? Где Changelog нормальный этого блитца? Как это отключить нах, в настройках не видно?
Здесь были, кажется люди, которые с Blitцом работали.
Записан

phpdude    ↓ 
27 Июль, 2011, 01:04:30 , спустя 1 минуту 22 секунды
НЕ ХУЕТА! ХУЕТА!

я - ЭМО
Группа: в ухо

Карма: 345
Сообщений: д-о-х-у-я!
Сила слова: 1.66

Здесь были, кажется люди, которые с Blitцом работали.
их уволили, видимо сразу после перехода на 0.7  xD
Записан

забанен. могу забанить других, пишите в личку
BEER. Helping ugly people have sex since 1862.
mario    ↓ 
27 Июль, 2011, 01:46:16 , спустя 41 минуту 46 секунд
НЕ ХУЕТА! ХУЕТА!

wazzup
Группа: Джедаи

Карма: 67
Сообщений: 6162
Сила слова: 1.09

че профи обосрались!!!111???!111
Записан

с ув. mario.
Контакты
AlexB    ↓ 
27 Июль, 2011, 05:34:56 , спустя 3 часа 48 минут 40 секунд
НЕ ХУЕТА! ХУЕТА!

Группа: в ухо

Карма: 89
Сообщений: 3426
Сила слова: 2.6

1. 0.7 насколько я понимаю версия недоделанная, она с приставкой -dev и у меня с ней тоже были проблемы.
2. PHP функции в шаблоне - зло! У меня ни разу в них потребность не возникла, что мешает свою юзер-функцию сделать, если уж так понадобилось?
Записан

mario    ↓ 
27 Июль, 2011, 05:48:25 , спустя 13 минут 29 секунд
НЕ ХУЕТА! ХУЕТА!

wazzup
Группа: Джедаи

Карма: 67
Сообщений: 6162
Сила слова: 1.09

2. PHP функции в шаблоне - зло! У меня ни разу в них потребность не возникла, что мешает свою юзер-функцию сделать, если уж так понадобилось?
нам это не нужно, нам нужно, что бы их не было )
Спустя 35 секунд добавил
мы как раз таки и использовали свою функцию, но после перехода на 0.7, у нас поломалась наша пользовательская функция )
Записан

с ув. mario.
Контакты
vasa_c    ↓ 
27 Июль, 2011, 05:56:12 , спустя 7 минут 47 секунд
НЕ ХУЕТА! ХУЕТА!

Группа: в ухо

Карма: 81
Сообщений: 2459
Сила слова: 3.29

AlexB, спасибо.
 
PHP функции в шаблоне - зло! У меня ни разу в них потребность не возникла, что мешает свою юзер-функцию сделать, если уж так понадобилось?
Потому что дизайнера постоянно фантазии посещают. Типа, сделайте чтобы в футере в копирайте год всегда текущий был.
Писать каждый раз новый метод вида getCurrentYear() не охото.
Можно сделать, конечно, callPHPFunc($name, $args), но если уже есть возможность решили её использовать
Спустя 1 минуту 28 секунд добавил
И ещё у меня юнит-тесты (phpunit) зачастую вылетают с Segmentation Fault в тех местах, где Blitz используется.
В любой другой среде воспроизвести такую хрень не удалось.
Не сталкивался никто с таким?
Записан

adw0rd    ↓ 
27 Июль, 2011, 06:15:44 , спустя 19 минут 32 секунды
НЕ ХУЕТА! ХУЕТА!

эдво
Группа: в ухо

Карма: не нужна
Сообщений: 17629
Сила слова: 1.67


2. PHP функции в шаблоне - зло! У меня ни разу в них потребность не возникла, что мешает свою юзер-функцию сделать, если уж так понадобилось?
+1
Спустя 1 минуту 2 секунды добавил
Потому что дизайнера постоянно фантазии посещают. Типа, сделайте чтобы в футере в копирайте год всегда текущий был.
Писать каждый раз новый метод вида getCurrentYear() не охото.
А мы же в кинсбурге вроде делали что-то наподобие джанговкого context_processor'а?
Который может передавать какие-либо глобальные переменные в жаблон?
Спустя 1 минуту 19 секунд добавил
https://docs.djangoproject.com/en/dev/ref/settings/#std:setting-TEMPLATE_CONTEXT_PROCESSORS
Записан

Python, Django, Git, Emacs, Nginx, MySQL, SphinxSearch, FreeBSD/Linux
Мой блог * Кинсбург * Либург * Я на GitHub
vasa_c    ↓ 
28 Июль, 2011, 10:31:12 , спустя 16 часов 15 минут 28 секунд
НЕ ХУЕТА! ХУЕТА!

Группа: в ухо

Карма: 81
Сообщений: 2459
Сила слова: 3.29

А мы же в кинсбурге вроде делали что-то наподобие джанговкого context_processor'а?
Который может передавать какие-либо глобальные переменные в жаблон?
Здесь не глобальная переменная, здесь date('Y')
Записан

adw0rd    ↓ 
28 Июль, 2011, 12:49:42 , спустя 2 часа 18 минут 30 секунд
НЕ ХУЕТА! ХУЕТА!

эдво
Группа: в ухо

Карма: не нужна
Сообщений: 17629
Сила слова: 1.67

А что мешает:
Text

return {'CURRENT_YEAR': date('Y')}
 
?
Записан

Python, Django, Git, Emacs, Nginx, MySQL, SphinxSearch, FreeBSD/Linux
Мой блог * Кинсбург * Либург * Я на GitHub
vasa_c    ↓ 
28 Июль, 2011, 02:46:01 , спустя 1 час 56 минут 19 секунд
НЕ ХУЕТА! ХУЕТА!

Группа: в ухо

Карма: 81
Сообщений: 2459
Сила слова: 3.29

влом. и ты вообще забыл PHP
Записан

adw0rd    ↓ 
28 Июль, 2011, 02:57:41 , спустя 11 минут 40 секунд
НЕ ХУЕТА! ХУЕТА!

эдво
Группа: в ухо

Карма: не нужна
Сообщений: 17629
Сила слова: 1.67

Ну судя по моим последним коммитам в кинсбург я ещё его плмню )
Записан

Python, Django, Git, Emacs, Nginx, MySQL, SphinxSearch, FreeBSD/Linux
Мой блог * Кинсбург * Либург * Я на GitHub
fisher    ↓ 
13 Март, 2012, 08:33:40 , спустя 228 дней 17 часов 35 минут 59 секунд
НЕ ХУЕТА! ХУЕТА!

Карма: 3
Сообщений: 6
Сила слова: 50

В 0.7 API коллбеков устаканился не сразу. Сейчас действуют следующие правила:
1) Если в шаблоне стоит {{ this::method }} - это всегда метод объекта-шаблона
2) Если в шаблоне стоит {{ bla::method }} - зовём статический PHP-метод
3) Если просто {{ method }} то - по умолчанию зовем PHP, затем зовём метод объекта-шаблона. И есть новая настройка, php_callbacks_first которая меняет порядок вызова, если php_callbacks_first = 0, то сначала будет шаблон, а потом PHP. Вероятнее всего по умолчанию надо ставить php_callbacks_first = 0, сейчас 1, я просто хочу понять реакцию комьюнити. У меня было впечатление, что никто не морочился со своими функциями и все хотели PHP. Сам я программлю редко, но в компании у нас запрещены и функции, и PHP, и логика в шаблонах, но это долгий разговор.
 
Вот тикет про это дело
http://alexeyrybak.com/blitz/bt/view.php?id=281
 
Ставьте тикеты, если что-то не работает, или пишите на адрес blitz-php at googlegroups d0t com
Записан
AlexB    ↓ 
13 Март, 2012, 12:25:14 , спустя 3 часа 51 минуту 34 секунды
НЕ ХУЕТА! ХУЕТА!

Группа: в ухо

Карма: 89
Сообщений: 3426
Сила слова: 2.6


Если просто {{ method }} то - по умолчанию зовем PHP, затем зовём метод объекта-шаблона. И есть новая настройка, php_callbacks_first которая меняет порядок вызова, если php_callbacks_first = 0, то сначала будет шаблон, а потом PHP. Вероятнее всего по умолчанию надо ставить php_callbacks_first = 0, сейчас 1, я просто хочу понять реакцию комьюнити.
Привет, Алексей. На мой вкус, конечно 0. Это сохранит совместимость со всем ранее сделанным без подкручивания настроек.
 

У меня было впечатление, что никто не морочился со своими функциями и все хотели PHP. Сам я программлю редко, но в компании у нас запрещены и функции, и PHP, и логика в шаблонах, но это долгий разговор.
Я морочился. Например, для компактности шаблонов, сильно не хватает конструкции switch (А можно сделать???:)), посему была написана функция:
PHP

     /**
     * Реализация языковой конструкции switch.
     *
     * @param string $var - в идеале одно из значений
     * @param string $case - значения через разделитель без пробелов
     * @param string $value - строки вывода через разделитель (запятую по умолчанию)
     * @param string $default - строка для вывода, если $var не совпадает ни с одним из значений
     * @param char $separator - разделитель для строк вывода (по умолчанию - запятая)
     * @return string - строку вывода
     */

    public function switcher($var, $case, $value, $default = '', $separator = ',')
    {
        $exp_case = explode($separator, $case);
        $exp_value = explode($separator, $value);
        $key = array_search($var, $exp_case);
        return ($key === false || !isset($exp_value[$key]) ? $default : $exp_value[$key]);
    }
 
   
« Последнее редактирование: 13 Март, 2012, 12:25:14 от AlexB » Записан

fisher    ↓ 
13 Март, 2012, 12:54:51 , спустя 29 минут 37 секунд
НЕ ХУЕТА! ХУЕТА!

Карма: 3
Сообщений: 6
Сила слова: 50


Я морочился. Например, для компактности шаблонов, сильно не хватает конструкции switch (А можно сделать???:)), посему была написана функция:

а чем это отличается от IF/ELSEIF/ELSE ? не пишем во всех условиях предикат полностью? можно пример, чтоб было понятно, что есть экономия. Чем будет чреват SWITCH - будут куски между SWITCH и первым CASE + между END от последнего CASE и END от SWITCH и главное нужно будет больше END пихать в шаблон (после каждого CASE и общий). Не думаю, что в целом будет компактнее.
Записан
fisher    ↓ 
13 Март, 2012, 01:16:59 , спустя 22 минуты 8 секунд
НЕ ХУЕТА! ХУЕТА!

Карма: 3
Сообщений: 6
Сила слова: 50


Был у нас Blitz 0.6 и понадобилось вызывать в нём PHP-фукнции.
В 0.7 их можно вызывать в виде {{ php::function(args) }}, поэтому на него и перешли.
И тут ПЦ - половину функций стало возможно вызывать даже без "php::". Просто {{ function(args) }}.
Здесь были, кажется люди, которые с Blitцом работали.

мой косяк. в одной версии добавил этот "зарезервированный" неймспейс, а потом его убрал. верну, наверное. написали бы сразу в баг-трекер или напрямую :)
и в доке написано пока по-старому. пофикшу.
Записан
Страниц: [1] 2
Печать
 

Перейти в:  

Этот топик скрыли: artoodetoo