За последние 24 часа нас посетили 37843 программиста и 1810 роботов. Сейчас ищут 806 программистов ...

$this и калбек функциии

Тема в разделе "PHP для новичков", создана пользователем Ігор, 5 фев 2009.

  1. Ігор

    Ігор Активный пользователь

    С нами с:
    7 апр 2008
    Сообщения:
    195
    Симпатии:
    0
    PHP:
    1.  
    2. <?php
    3.  
    4.   function getFolderSisters()
    5.   {
    6.     $query="SELECT path, name FROM folders WHERE parent = '".$this->pId."' ORDER BY name";
    7.     $this->dbio->query($query);
    8.     $this->sisters=array_map(array("class_folder","addoverpath"), $this->dbio->fetch_all());
    9.   }
    10. .
    11. .
    12. .
    13. .
    14. .
    15. .
    16. private function addoverpath ($arr)
    17.  {
    18.          if ($arr['name']=="") $arr['name']=$arr['path'];
    19.          if ($this->parentpath!=='')
    20.       {
    21.                $arr['path']=$this->parentpath.'/'.$arr['path'];
    22.                return $arr;
    23.       }
    24.     else
    25.       {
    26.               return $arr;
    27.       }
    28.  }
    29. ?>
    Скрипт в принцыпе работает, но phpEdit в режиме отладки ругается что-то на сторочку $this->sisters=array_map(array("class_folder","addoverpath"), $this->dbio->fetch_all()); Типа что вызывается не статический метод класса. Как послупить лучше: что-то нужно переделать, или пускай ругается? (код-то все-равно работает)
     
  2. Greg1978

    Greg1978 Активный пользователь

    С нами с:
    18 окт 2008
    Сообщения:
    484
    Симпатии:
    0
    Адрес:
    class SenjorUser{}
    либо сделать статическим метод
    PHP:
    1. <?private static function addoverpath ($arr){}?>
    либо инициализировать обьект и ставить его вместо класса
    PHP:
    1.  
    2. <?
    3. $class_folder = new class_folder();
    4. $this->sisters=array_map(array($class_folder,"addoverpath"), $this->dbio->fetch_all());
    5. ?>
    6.  
     
  3. Greg1978

    Greg1978 Активный пользователь

    С нами с:
    18 окт 2008
    Сообщения:
    484
    Симпатии:
    0
    Адрес:
    class SenjorUser{}
    а почему array_map(); а не call_user_func(); ?
     
  4. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    PHP:
    1. array_map(array($this,"addoverpath"), $this->dbio->fetch_all())