2013-05-13 1 views
0
public function get_entity_keyNumber($entity) 
    { 
     $this->session = Session::instance(); 
     (int)$lastNumber = 0; 
     $user_data= array_keys($this->session->as_array()); 
     $user_experience = array_filter($user_data,function($value){return strstr($value, $entity);}); 
     if(!empty($user_experience)) 
     { 
      $lastElement = end($user_experience); 
      (int)$lastNumber = substr($lastElement,-1); 
      $lastNumber++; 
     } 
     return $lastNumber; 
    } 

Эта функция делает это, чтобы вернуть мне последний символ последнего ключа в $ user_data и Iam, увеличивая его, отбрасывая его в Integer.Ошибка: неопределенная переменная при передаче параметра в метод в Kohana Controller?

$ user_data = массив («experience0»), как если бы я использовать эту функцию:

(int)$lastNumber = get_entity_keyNumber("experience"); 

Он вернет мне 1 и я добавлю еще один массив к сеансу с именем experience1 затем experience2, experince3 так это не может overwirte ключей в сессии

при РМКО использовании этой функции, почему эта ошибка метания: Вызов неопределенной функции get_entity_keyNumber() или иногда переменный $ сущности неопределенных Иам нового PHP и так же как в Кохана

при использовании inline он отлично работает.

+0

'get_entity_keyNumber' кажется быть ** методом **, а не глобальной ** функцией **. – mpyw

+0

Я ошибочно написал метод, но когда я пытаюсь его использовать, он говорит, что, как и сказал $ this-> get_entity_keyNumber («опыт»), он бросает ошибку, что переменная сущности не определена, и этот метод определяется в том же классе, где я используй это. –

ответ

0

Я использовал частный атрибут класса с таким же именем и присваивается значение параметра метода к нему и использовать этот атрибут класса, используя $ это для фильтрации значений массива, Мой OOP слаб :)

private $entity; 
public function get_entity_keyNumber($entity) 
{ 
    $this->$entity =$entity; 
    $this->session = Session::instance(); 
    (int)$lastNumber = 0; 
    $user_data= array_keys($this->session->as_array()); 
    $user_experience = array_filter($user_data,function($value){return strstr($value, $this->entity);}); 
    if(!empty($user_experience)) 
    { 
     $lastElement = end($user_experience); 
     (int)$lastNumber = substr($lastElement,-1); 
     $lastNumber++; 
    } 
    return $lastNumber; 
} 
0

Попробуйте это:

$instance->get_entity_keyNumber("experience"); 

$instance означает экземпляр класса, метод get_entity_keyNumber принадлежит.

В поле определения класса это будет $this.

Извините, что не знал о kohana.

+0

Я ошибался, да, его метод, но когда я пытаюсь его использовать, он говорит, что, как и сказал $ this-> get_entity_keyNumber («опыт»), он бросает ошибку, что переменная сущности не определена, и этот метод определен в том же классе, где я используй это. –

+0

CertaiN, спасибо за вашу поддержку –