За последние 24 часа нас посетили 23676 программистов и 1599 роботов. Сейчас ищет 821 программист ...

Создание экземпляра из внешней функции.

Тема в разделе "PHP для новичков", создана пользователем BMWSauber, 1 фев 2011.

  1. BMWSauber

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

    С нами с:
    21 ноя 2009
    Сообщения:
    151
    Симпатии:
    0
    Подскажите как создать экземпляр класса из функции:

    РАБОТАЕТ
    PHP:
    1.  
    2. <?
    3. class Tags
    4. {
    5.     function Tags($startPos)
    6.     {
    7.         $this->_startPos = $startPos;
    8.     }
    9.         var $_startPos;
    10. }
    11.  
    12.  
    13. $obj = new Tags (1);
    14.  
    15.  
    16.  
    17.  
    18.  
    19. echo $obj->_startPos;
    20.  
    21.  
    22. ?>
    23.  


    НЕ РАБОТАЕТ
    PHP:
    1.  
    2. <?
    3. class Tags
    4. {
    5.     function Tags($startPos)
    6.     {
    7.         $this->_startPos = $startPos;
    8.     }
    9.         var $_startPos;
    10. }
    11.  
    12. func();
    13.  
    14. function func(){
    15.      $obj = new Tags (1);
    16. }
    17.  
    18.  
    19.  
    20.  
    21. echo $obj->_startPos;
    22.  
    23.  
    24. ?>
    25.  
     
  2. Gromo

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

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    попробуй так:

    function func(){
    global $obj = new Tags (1);
    }
     
  3. MiksIr

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

    С нами с:
    29 ноя 2006
    Сообщения:
    2.339
    Симпатии:
    44
    Плохому детей учишь

    function func() {
    $obj = new Tags (1);
    return $obj;
    }

    $obj = func();
    echo $obj->_startPos;
     
  4. Gromo

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

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    MiksIr
    грешен, каюсь ))
     
  5. BMWSauber

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

    С нами с:
    21 ноя 2009
    Сообщения:
    151
    Симпатии:
    0
    дело в том, что в функции цикл создания объектов, так что return - ом , возвращать не удается,

    PHP:
    1. while ($startTeg != $endTeg) //сканируем документ на <, >
    2.     {
    3.        
    4.         ....................................
    5.         ....................................
    6.  
    7.         //создаем!!!
    8.         $obj = "tag"."$i";
    9.         $$obj = new Tags($startTeg, $stopTeg, $nameTeg);
    10.  
    11.     .....................................
    12.     }
    можно конечно, вызывать функцию циклом......


    чтото типа

    PHP:
    1.  
    2. for ($i=0; $i= ... ; $i++)
    3. {
    4.    func($i){};
    5.  
    6. }
    7.  
    8.  
    9. function func($i){
    10. ...........
    11. return $obj;
    12.  
    13. }

    както так........

    но много надо будет переделывать....
    нет ли других вариантов, как думаете?
    P,S, кроме глобал :))
     
  6. MiksIr

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

    С нами с:
    29 ноя 2006
    Сообщения:
    2.339
    Симпатии:
    44
    $arr = array();
    ...
    $arr["tag".$i] = new Tags($startTeg, $stopTeg, $nameTeg);
    ...
    return $arr;
     
  7. BMWSauber

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

    С нами с:
    21 ноя 2009
    Сообщения:
    151
    Симпатии:
    0
    Согласен!! )) Спасибо..