За последние 24 часа нас посетили 22297 программистов и 1080 роботов. Сейчас ищут 630 программистов ...

классы

Тема в разделе "PHP для профи", создана пользователем Conus, 23 мар 2016.

  1. Conus

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

    С нами с:
    21 окт 2015
    Сообщения:
    92
    Симпатии:
    0
    Где ошибка, $count не подсчитывается
    Код (PHP):
    1. class m
    2. {
    3.     public $count = 0;
    4.     public $name = 'new';
    5.     public $nam = array();
    6.     function new_m($n)
    7.     {
    8.         $count++;
    9.         $nam[$count] = new m; 
    10.         $nam[$count]->name = $n;
    11.         return $nam[$count]; 
    12.     }
    13. }
    14.  
    15. $db = new m;
    16. $r = $db->new_m('bes');
    17. $rr = $db->new_m('beo');
    18.  
    19. return $db->count; 
    Подсказка от модератора:
    Любой код или текст конфигурации пишите между тегом [code=php] и [/code].
    Используйте отступы в коде для форматирования текста.
    Это помогает быстрее понять вас, увеличивает шанс на получение ответа.
    Что выделять? Например: PHP, HTML, CSS, JavaScript, SQL, XML, .htaccess, ini, регулярные выражения, код шаблонизаторов, любая другая разметка, результаты array/object dump и т. д.
     
  2. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.072
    Симпатии:
    1.236
    Адрес:
    там-сям
    Внутри методов пиши $this->count
     
  3. Conus

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

    С нами с:
    21 окт 2015
    Сообщения:
    92
    Симпатии:
    0
    А почему index всегда 0

    Код (PHP):
    1. class m
    2. {
    3.     public $count = 0;
    4.     public $index = 0;
    5.     public $name = 'new';
    6.     public $nam = array();
    7.     function new_m($n)
    8.     {
    9.         $this->index = $this->count;
    10.         $this->nam[$this->count] = new m; 
    11.         $this->nam[$this->count]->name = $n;
    12.         return $this->nam[$this->count++]; 
    13.     }
    14. }
    15.  
    16. $db = new m;
    17. $r = $db->new_m('besto');
    18. $ur = $db->new_m('bsto');
    19.  
    20. $out = $db->nam[1];
    21.  
    22.  
    23. return '<br/>' .$out->name .'<br/>' .$out->index; 
    Подсказка от модератора:
    Любой код или текст конфигурации пишите между тегом [code=php] и [/code].
    Используйте отступы в коде для форматирования текста.
    Это помогает быстрее понять вас, увеличивает шанс на получение ответа.
    Что выделять? Например: PHP, HTML, CSS, JavaScript, SQL, XML, .htaccess, ini, регулярные выражения, код шаблонизаторов, любая другая разметка, результаты array/object dump и т. д.
     
  4. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.553
    Симпатии:
    631
    Потому что $out это не $db, ты в $db дважды вызвал new_m() - получил в $db увеличение index, а в $out дефолтный ноль как был так и остался.
    Если тебе нужны общие переменные для всех объектов данного класса, используй статические свойства.
     
  5. Conus

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

    С нами с:
    21 окт 2015
    Сообщения:
    92
    Симпатии:
    0
    Код (PHP):
    1. class m
    2. {
    3.     public $count = 0;
    4.     public $index = 0;
    5.     public $name = 'new';
    6.     public $nam = array();
    7.     function new_m($n)
    8.     {
    9.         $this->nam[$this->count] = new m;         
    10.         $this->nam[$this->count]->index = $this->count;     
    11.         $this->nam[$this->count]->name = $n;
    12.         return $this->nam[$this->count++]; 
    13.     }
    14. }
    15.  
    16. $db = new m;
    17. $r = $db->new_m('besto');
    18. $ur = $db->new_m('bsto');
    19.  
    20. $out = $db->nam[1];
    21.  
    22.  
    23. return '<br/>' .$out->name .'<br/>' .$out->index; 
     
  6. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.553
    Симпатии:
    631
    здесь точно должен быть return? =)
    Не понял, что ты хотел сказать этим сообщением.