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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Создание собственного хелпера в Kohana 3.3

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
nkl
Отправлено: 25 Апреля, 2013 - 08:16:01
Post Id



Посетитель


Покинул форум
Сообщений всего: 305
Дата рег-ции: Янв. 2012  


Помог: 1 раз(а)




Не получается создать свой хелпер. Объясните в чем причина. Нашел php-функцию для генерации guid (uuid) по стандарту RFC 4122. Вот её код:
PHP:
скопировать код в буфер обмена
  1. public function create_guid()   //Генераци GUID
  2.         {      
  3.                 static $guid = '';
  4.                  $uid = uniqid("", true);
  5.                  $data = $namespace;
  6.                  $data .= $_SERVER[`REQUEST_TIME`];
  7.                  $data .= $_SERVER[`HTTP_USER_AGENT`];
  8.                  $data .= $_SERVER[`LOCAL_ADDR`];
  9.                  $data .= $_SERVER[`REMOTE_ADDR`];
  10.                  $data .= $_SERVER[`REMOTE_PORT`];
  11.                  $hash = strtoupper(hash(`ripemd128`, $uid . $guid . md5($data)));
  12.                  $guid = substr($hash,  0,  8).
  13.                          `-`.substr($hash,  8,  4).
  14.                          `-`.substr($hash, 12,  4).
  15.                          `-`.substr($hash, 16,  4).
  16.                          `-`.substr($hash, 20, 12);
  17.                  return $guid;
  18.         }

Я значит создал файл application/classes/Hashgen.php и в нем записал следующее:
PHP:
скопировать код в буфер обмена
  1. <?PHP defined('SYSPATH') or die('No direct script access.');
  2.  
  3. class Hashgen {
  4.  
  5.         public function create_guid()   //Генераци GUID
  6.         {      
  7.                 static $guid = '';
  8.                  $uid = uniqid("", true);
  9.                  $data = $namespace;
  10.                  $data .= $_SERVER[`REQUEST_TIME`];
  11.                  $data .= $_SERVER[`HTTP_USER_AGENT`];
  12.                  $data .= $_SERVER[`LOCAL_ADDR`];
  13.                  $data .= $_SERVER[`REMOTE_ADDR`];
  14.                  $data .= $_SERVER[`REMOTE_PORT`];
  15.                  $hash = strtoupper(hash(`ripemd128`, $uid . $guid . md5($data)));
  16.                  $guid = substr($hash,  0,  8).
  17.                          `-`.substr($hash,  8,  4).
  18.                          `-`.substr($hash, 12,  4).
  19.                          `-`.substr($hash, 16,  4).
  20.                          `-`.substr($hash, 20, 12);
  21.                  return $guid;
  22.         }
  23.        
  24. } //END OF Hashgen

Вызываю этот хелпер таким образом:
PHP:
скопировать код в буфер обмена
  1. $user->user_id = Hashgen::create_guid();

и получаю ошибку rrorException [ Strict ]: Non-static method Hashgen::create_guid() should not be called statically, assuming $this from incompatible context
(Добавление)
Что здесь не так?
 
 Top
DelphinPRO
Отправлено: 25 Апреля, 2013 - 08:41:50
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




обзовите метод статическим, и всего делов

PHP:
скопировать код в буфер обмена
  1. public static function create_guid(){ ...

(Отредактировано автором: 25 Апреля, 2013 - 08:43:01)



-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
imya
Отправлено: 25 Апреля, 2013 - 08:44:33
Post Id



Участник


Покинул форум
Сообщений всего: 1472
Дата рег-ции: Сент. 2012  
Откуда: Запорожье, Украина


Помог: 19 раз(а)




Ошибку в гугл переводчик вставьте и узнаете. Ваш метод создания функции не статический, а вы пытаетесь его вызвать, как будто там указан модификатор static.

Попробуйте



-----
PHP:
скопировать код в буфер обмена
  1. do {box != cat;} while (cat != box);


Когда нормальный человек, уезжая из дома одевает на жену пояс верности, веб-дизайнер ставит на нее счетчик...
 
My status
 Top
nkl
Отправлено: 25 Апреля, 2013 - 08:44:55
Post Id



Посетитель


Покинул форум
Сообщений всего: 305
Дата рег-ции: Янв. 2012  


Помог: 1 раз(а)




Да, так и сделал. Указанная ошибка преодолена. Теперь класс выглядит так:
PHP:
скопировать код в буфер обмена
  1. class Hashgen {
  2.  
  3.         public static $guid = '';
  4.        
  5.         public static function create_guid()   //Генераци GUID
  6.         {
  7.                  $uid = uniqid("", true);
  8.                  $data = '';
  9.                  $data .= $_SERVER[`REQUEST_TIME`];
  10.                  $data .= $_SERVER[`HTTP_USER_AGENT`];
  11.                  $data .= $_SERVER[`LOCAL_ADDR`];
  12.                  $data .= $_SERVER[`REMOTE_ADDR`];
  13.                  $data .= $_SERVER[`REMOTE_PORT`];
  14.                  $hash = strtoupper(hash(`ripemd128`, $uid . $guid . md5($data)));
  15.                  $guid = substr($hash,  0,  8).
  16.                          '-'.substr($hash,  8,  4).
  17.                          '-'.substr($hash, 12,  4).
  18.                          '-'.substr($hash, 16,  4).
  19.                          '-'.substr($hash, 20, 12);
  20.                  return $guid;
  21.         }
  22.        
  23. } //END OF Hashgen

И ругается он теперь вот так Undefined index: на строку
PHP:
скопировать код в буфер обмена
  1.  $data .= $_SERVER[`REQUEST_TIME`];
 
 Top
imya
Отправлено: 25 Апреля, 2013 - 09:07:45
Post Id



Участник


Покинул форум
Сообщений всего: 1472
Дата рег-ции: Сент. 2012  
Откуда: Запорожье, Украина


Помог: 19 раз(а)




Поставьте не косые кавычки, а простые одинарные ' '


-----
PHP:
скопировать код в буфер обмена
  1. do {box != cat;} while (cat != box);


Когда нормальный человек, уезжая из дома одевает на жену пояс верности, веб-дизайнер ставит на нее счетчик...
 
My status
 Top
nkl
Отправлено: 25 Апреля, 2013 - 09:28:14
Post Id



Посетитель


Покинул форум
Сообщений всего: 305
Дата рег-ции: Янв. 2012  


Помог: 1 раз(а)




Да, это я уже заметил. Но все равно от приведенной функции отказался заменив её более грамотным и оптимизированным для использования в кохане хелпером с форума разработчиков.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« CMS и фреймворки »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB