fenom-template / fenom

Template Engine for PHP. Maintainers wanted!
Other
446 stars 108 forks source link

Как правильно передать параметры в свою функцию. #134

Closed maxisoft-git closed 9 years ago

maxisoft-git commented 9 years ago

Может быть задам делетантский вопрос, но возникла проблема и уже без помощи не могу сообразить что делаю не так. Использую Extra чтобы быстро добавлять свои функции и плагины. Создал файл с телом функции но при возове {googleAnalytics $key='UA-445-354-34'} в функции function fenom_function_googleAnalytics($params) { } массим параметров получается обезличенный, что очень не хорошо, так как параметр могут менять местами и привязываться к порядку следования не хочется. Скорее всего я что то делаю не так, но уже 3 день не могу побороть данный вопрос.

Заранее спасибо за подсказку.

pafnuty commented 9 years ago

Возможно следует использовать addFunctionSmart ? https://github.com/bzick/fenom/blob/0b96a02dd980092ca5c90e9e330dd44636b1e4ff/docs/en/ext/tags.md

maxisoft-git commented 9 years ago

Как раз это работает но это не fenom Extra по факту каждому разработчику придеться править системый файл что не кашерно для открытой CMS. Когда есть чудесный автозагрузчик расширении для fenom, по коду насколько я могу судить в парсере внешних функции нет функции получения именнованных параметров, как раз они передаються в функцию в строгой последовательности, что очень сильно ограничивает разработку, приходиться соблюдать порядок переменных, а хочется то гибкости. Для меня это пока основная замарочка которая не дает нормально использовать fenom. Была одна еще но разработчик респект ему потратил на меня почти весь вечер но помог исправить и проект сдался во время. :)

pafnuty commented 9 years ago

Тут я уже не подскажу к сожалению, но fenom ведь тоже открыт для разработок, попробуйте добавить требуемый вам функционал, может быть он войдёт в "коробку" ?

[оффтоп] А что за CMS? можно глянуть?

maxisoft-git commented 9 years ago

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

[офтоп] система instantcms, я просто делаю форк от 1 версии, так как ее по тиху сворачивают а система перспективная.

bzick commented 9 years ago

Используйте без $ название аргументов:

{googleAnalytics key='UA-445-354-34'}

PS извиняюсь за задержку

bzick commented 9 years ago

В данном случае парсер посчитал что Вы передаете 'UA-445-354-34' под именем которое хранится в переменной $key. А так как $key не существует то был взят null который преобразовался в 0. О таких возможностей я сам не подозревал. Сделаю что бы невозможно было указать имя аргумента динамически.

maxisoft-git commented 9 years ago

Яхууу огромное человеческое спасибо все сработало, хотя я пробывал из без $ но выдавало ошибку компилятора, но скорее всего она была связано с чем то другим. Еще раз огромное спасибо разработчику.