Функции в codeigniter - PullRequest
       3

Функции в codeigniter

0 голосов
/ 31 декабря 2011

У меня есть класс модели, который выглядит следующим образом

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, как мне решить эту проблему?

ИНФОРМАЦИЯ: СПАСИБО ЗА СКАЧИВАНИЕ [НО ВАШ ОТВЕТ ХОРОШО :))

Ответы [ 2 ]

0 голосов
/ 31 декабря 2011

Ваши функции должны спросить, на что они работают:

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.

Я бы не счел это хорошим решением, но оно, вероятно, показывает картину того, что вы концептуально делаете.

0 голосов
/ 31 декабря 2011

Это потому, что ваши функции 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();
 }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...