Php codeigniter中的函数

Php codeigniter中的函数,php,sql,function,codeigniter,Php,Sql,Function,Codeigniter,我有一个模型类,如下所示 function block_user() { function is_in_blocked_list() { //line number 137... } function power_block() { is_in_blocked_list() // doing some operations } if (condition) { power_block(); } } 但是我在被阻止列表()中得到

我有一个模型类,如下所示

function block_user()
{

  function is_in_blocked_list()
   {
     //line number 137...

   }
  function power_block()
  {
    is_in_blocked_list()  // doing some operations


  }

 if (condition)
 {
 power_block();
 }

}
但是我在被阻止列表()中得到一个错误

就是

Using $this when not in object context in C:\wamp\www\pname\application\models\admin\admin_user.php on line 137
第137行说

$qry = "SELECT a FROM tblC WHERE username=?";
            $qry = $this->db->query($qry,array($userName));
我不熟悉php和codeigniter,如何解决这个问题


信息:谢谢你的否决票[但你的答案是最差的:)]

这是因为你的
在阻塞列表中()
幂块()函数有自己的变量范围,它们不属于类。将这些函数直接移动到类中,并使用
$this->power\u block()
。像这样:

function is_in_blocked_list()
{
 //line number 137...

}

function power_block()
{
    $this->is_in_blocked_list();  // doing some operations


}

function block_user()
{

 if (condition)
 {
    $this->power_block();
 }

}

您的职能部门需要询问其运作方式:

function block_user(Controller $controller)
{
    function is_in_blocked_list(Controller $controller)
    {
        //line number 137...
        $controller->.... (not $this->...)
    }
    function power_block(Controller $controller)
    {
        is_in_blocked_list($controller)  // doing some operations
    }
    if (condition)
    {
        power_block($controller);
    }
}
控制器
类型替换为其应操作的控制器类型,CI中的通用类型称为
CI\u控制器
IIRC


<>我不认为这是一个好的解决方案,但它可能显示了你在概念上所做的事情。

嗯,我知道:但是无论如何,我能在Buffisher函数中做到这一点吗?我只是在php中尝试函数内部的函数。我想不是。也许您可以使用匿名函数作为
use
关键字,但不确定。为什么你不知道如何使这些函数成为类的一部分?你不想让他们接近?add
private
关键字和函数只能在该类(或扩展)内访问。像这样:
private function block_user(){/*您的代码*/}
关于
private
它是关于代码可见性的,实际上那里不需要两个函数,但我需要它,如果我能在主函数中保存这两个函数,那么阅读起来会非常好。