Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Проблема с работой вложенной функции в метод класса
 
 автор: neokortex   (28.09.2009 в 18:16)   письмо автору
 
 

выдает ошибку Fatal error: Using $this when not in object context in...

    class MyClass
        {
        var $param;
        var $ar;
        function obdd($ar)
            {
            echo $this->param;
            function filter($var) {return ($var['catalog']==$this->param);};
            $ret=array_filter($ar, "filter");
            return $ret;
            }
        };
    $cart = new MyClass;
    $cart->param=5;
    $list=$cart->obdd($pages);

помогите пожалуйста разобраться

  Ответить  
 
 автор: cheops   (28.09.2009 в 18:21)   письмо автору
 
   для: neokortex   (28.09.2009 в 18:16)
 

А что находится в $pages?

  Ответить  
 
 автор: cheops   (28.09.2009 в 18:29)   письмо автору
 
   для: neokortex   (28.09.2009 в 18:16)
 

А вам принципиально, чтобы у каждого объекта был свое значение param? Или можно бойтись статической переменной (тут неудобство - статические переменные общие - меняете в одном объекте - она менятеся сразу во всех объектах данного класса).
<?php
    
class MyClass 
        

        public static 
$param
        var 
$ar
        function 
obdd($ar
            { 
            echo 
$this->param
            function 
filter($var){return (MyClass::$param == $var['catalog']);}
            
$ret=array_filter($ar"filter"); 
            return 
$ret
            } 
        }; 
    
$cart = new MyClass
    
MyClass::$param 5
    
$list=$cart->obdd($pages);
?>

  Ответить  
 
 автор: neokortex   (28.09.2009 в 19:04)   письмо автору
 
   для: cheops   (28.09.2009 в 18:29)
 

$pages - массив
в том то и дело что $param - динмический :(
cheops спасибо вам большое и за форум и за книгу. за все :)

  Ответить  
 
 автор: cheops   (28.09.2009 в 19:18)   письмо автору
 
   для: neokortex   (28.09.2009 в 19:04)
 

Может просто отказаться от array_filter() и реализовать его через foreach() как-то так
<?php
    
class MyClass 
    

        var 
$param
        var 
$ar
        function 
obdd($ar
        { 
            
$ret = array();
            foreach(
$ar as $var)
            {
              if(
$this->param == $var['catalog']) $ret[]['catalog'] = $var['catalog'];
            }
            return 
$ret
        } 
    }; 
    
$cart = new MyClass
    
$cart->param 5
    
$list=$cart->obdd($pages);
?>

PS Спасибо за добрый отзыв :)

  Ответить  
 
 автор: neokortex   (28.09.2009 в 19:23)   письмо автору
 
   для: cheops   (28.09.2009 в 19:18)
 

да. будем пробовать

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования