【问题标题】:Functions in codeignitercodeigniter 中的函数
【发布时间】:2011-12-31 07:31:10
【问题描述】:

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

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();
 }

}

但我在 is_in_blocked_list() 上遇到错误

那是

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 的新手,我该如何解决这个问题?

信息:感谢您的否决[但您的回答是最糟糕的 :)]

【问题讨论】:

    标签: php sql function codeigniter


    【解决方案1】:

    您的函数需要询问它们的操作:

    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);
        }
    }
    

    Controller 类型替换为它们应该操作的控制器类型,CI 中的一般称为CI_Controller IIRC。

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

    【讨论】:

      【解决方案2】:

      这是因为您的 is_in_blocked_list()power_block() 函数有自己的变量范围,它们不属于类。将这些函数直接移动到类中,并使用$this->power_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();
       }
      
      }
      

      【讨论】:

      • 好吧,我知道:但是无论如何我可以在 block_user 函数中执行此操作吗?我只是在 php 中尝试了函数内部的函数。
      • 我猜不是。也许您可以将匿名函数用作use 关键字,但不确定。为什么你不让这些功能成为课堂的一部分?您不希望它们可访问吗? add private 关键字和函数只能在该类(或扩展)内访问。像这样:private function block_user() { /*YOUR CODE*/ }
      • private无关,它与代码可见性有关,实际上那里不需要2个函数但我需要它,如果我可以在主函数中保存这两个函数,那将非常很高兴阅读。
      猜你喜欢
      • 2012-03-09
      • 1970-01-01
      • 2012-04-08
      • 2012-11-30
      • 1970-01-01
      • 2017-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多