【问题标题】:Error : Undefined variable when passing parameter to method in Kohana Controller?错误:将参数传递给 Kohana 控制器中的方法时未定义变量?
【发布时间】:2013-05-13 11:43:44
【问题描述】:
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 中最后一个键的最后一个字符,并通过将其转换为整数来递增它。

$user_data = array("experience0") 就像我使用这个函数:

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

它将返回 1,我将向会话添加另一个数组,名称为 experience1,然后是 experience2,experence3,因此它不能覆盖会话中的键

当我使用这个函数时为什么会抛出这个错误: 调用未定义函数 get_entity_keyNumber() 或有时 $entity 变量未定义 我是 php 和 kohana 的新手

当使用内联时,它可以完美运行。

【问题讨论】:

  • get_entity_keyNumber 似乎是一个 method ,而不是一个全局 function
  • 我拼错了,是的,它是一种方法,但是当我尝试使用它时说,就像你说的 $this->get_entity_keyNumber("experience") 它抛出一个错误,即实体变量未定义,此方法是在我使用它的同一类中定义。

标签: php kohana kohana-3


【解决方案1】:

试试这个:

$instance->get_entity_keyNumber("experience");

$instance 表示方法get_entity_keyNumber 所属的类的实例。

在类定义字段中,它将是$this

很抱歉我不知道kohana

【讨论】:

  • 我拼错了,是的,它是一种方法,但是当我尝试使用它时说,就像你说的 $this->get_entity_keyNumber("experience") 它抛出一个错误,即实体变量未定义,此方法是在我使用它的同一个类中定义。
【解决方案2】:

我在具有相同名称的类中使用私有属性并为其分配了方法参数的值,并使用该类属性使用 $this 过滤数组值,我的 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;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-20
    • 2014-04-07
    • 1970-01-01
    • 2019-08-30
    • 1970-01-01
    • 2020-05-19
    • 1970-01-01
    • 2014-07-21
    相关资源
    最近更新 更多