Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Где/как лучше валидировать данные [2]
Форумы портала PHP.SU » » Объектно-ориентированное программирование » Где/как лучше валидировать данные

Страниц (2): « 1 [2]
 

16. Мелкий - 29 Мая, 2012 - 20:44:52 - перейти к сообщению
etoYA пишет:
Если б я знал что это такое)).

Включая обычные замыкания $func = function($arg) {/**/}; и create_function, так и вызов обычных функций просто по имени, переданным переменной.
http://ru.php.net/manual/ru/lang...pes.callable.php
17. etoYA - 29 Мая, 2012 - 20:46:45 - перейти к сообщению
Если следовать тому, как написал caballero, то это нужно делать в контроллере. Ну или в отдельной модели, вот я сделал в контроллере.

before (Отобразить)

after (Отобразить)


Как не крути, огромное спасибо sKaa! Этот вариант очень удобен). Так как не надо переписывать кучу текста (типа "Введите логин").
(Добавление)
Мелкий, спасибо, уже почитал)). Правда на этом форуме).
18. etoYA - 30 Мая, 2012 - 01:43:51 - перейти к сообщению
Вынес константы в отдельный файл, в общем вот что получилось)).

UserController (Отобразить)


User (model) (Отобразить)


Const.php (Отобразить)


P.S Только методы для авторизации
19. DelphinPRO - 30 Мая, 2012 - 21:05:39 - перейти к сообщению
вот текстовые константы-то лучше в ini-файлах держать. их удобнее править при переводе на другой язык ;)
20. etoYA - 30 Мая, 2012 - 22:42:18 - перейти к сообщению
DelphinPRO, как вариант проходитУлыбка.
СпасибоУлыбка)
(Добавление)
DelphinPRO, как то так?

PHP:
скопировать код в буфер обмена
  1. foreach (parse_ini_file(ROOT. '/application/ini/constants.ini') as $k=>$v){
  2.         define(strtoupper($k), $v);
  3. }


CODE (htmlphp):
скопировать код в буфер обмена
  1. USER_EMPTY_LOGIN = Введите логин;
  2. USER_INCORRECT_LOGIN = Логин должен быть 2-16 символов и содержать латинские буквы и цифры. Разрешенные знаки ._-;
  3. USER_EMPTY_PASS = Введите пароль;
  4. USER_INCORRECT_PASS = Пароль должен быть 6-16 символов и содержать латинские буквы и цифры;
  5.  
  6. ETC.....
  7.  
21. sKaa - 31 Мая, 2012 - 05:25:26 - перейти к сообщению
etoYA, да сам define очень медленная херовина, просто если ты держишь в define'ах всякие там конфиги или языки, это ужас как медленно будет работать когда их у тебя накопится по бане... Я собственно по этому и показал..
PHP:
скопировать код в буфер обмена
  1. class classname {
  2.    const
  3.           QWE = '', ASD = '', ZXC = '';
  4. }

Ведь к ним тоже можно обратиться из любого места кода если класс существует.
PHP:
скопировать код в буфер обмена
  1. classsname::QWE;


Ну, а так, DelphinPRO абсолютно прав! На хабре давным давно статья была, про скорости всякие
define и прочей мерзости где люди умудряются конфиги хранить, ini файлы лидировали по скорости работы с большим отрывом, а define чуть ли не самым медленным оказался )


Таки вот она, статья :
http://habrahabr[dot]ru/post/112402/
22. etoYA - 07 Июня, 2012 - 15:39:08 - перейти к сообщению
sKaa, хм... Выходит, что это не фонтан?

PHP:
скопировать код в буфер обмена
  1. foreach (parse_ini_file(ROOT. '/application/ini/constants.ini') as $k=>$v){
  2.         define(strtoupper($k), $v);
  3. }
23. sKaa - 07 Июня, 2012 - 15:56:17 - перейти к сообщению
etoYA, выходит да. Но если уж есть такое желание юзать ини и ещё, чтоб ООП на каждом шагу могу подсказать вариант с классом Language, который при инициализации загрузит нужный ru\en\uk\kz .ини, распарсит его внутрь приватного свойства класса в виде массива, а доступ будет через магический __get..
Получиться что-то типо :

PHP:
скопировать код в буфер обмена
  1.  
  2. $Language = Language::getInstance('ru');
  3. echo $Language->HELLO_MESSAGE; // Привет
  4.  

Можно долго размышлять как и что лучше, я сам хз даже как, просто как вариант можно и так.
24. caballero - 07 Июня, 2012 - 16:05:54 - перейти к сообщению
и к чему этот изврат
обычные файл с константами const подключаемые инклудом для нужного языка
25. DelphinPRO - 07 Июня, 2012 - 21:19:22 - перейти к сообщению
etoYA
нет, без дефайнов, просто массив с константами получите и используйте как удобно

вариант caballero тоже неплох - инклудишь и сразу получаешь массив.
но не факт что он быстрее
26. caballero - 07 Июня, 2012 - 21:39:26 - перейти к сообщению
на массив память выделяется а константы сразу подставляются копилятором

 

Powered by ExBB FM 1.0 RC1