За последние 24 часа нас посетили 17378 программистов и 1681 робот. Сейчас ищут 933 программиста ...

Не ставится переменная.

Тема в разделе "Прочие вопросы по PHP", создана пользователем AleksNV, 6 фев 2009.

  1. AleksNV

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

    С нами с:
    6 фев 2009
    Сообщения:
    3
    Симпатии:
    0
    Проблема в следующем: существует класс
    PHP:
    1.  
    2.   class Reg Implements ArrayAccess{
    3.     public $vars = array();
    4.  
    5.     function set($key,$var){
    6.       $this->vars[$key]=$var;  
    7.       return true;
    8.     }
    9.  
    10.     function get($key){
    11.       if(!isset($this->vars[$key])){
    12.         return null;
    13.       }
    14.       return $this->vars[$key];
    15.     }
    16.  
    17.  
    18.     function remove($key){
    19.       unset($this->vars[$key]);
    20.     }
    21.  
    22.     function offsetExists($offset){
    23.       return isset($this->vars[$offset]);
    24.     }
    25.  
    26.     function offsetGet($offset){
    27.       return $this->get($offset);
    28.     }
    29.  
    30.     function offsetSet($offset, $value){
    31.       $this->set($offset, $value);
    32.     }
    33.  
    34.     function offsetUnset($offset){
    35.       unset($this->vars[$offset]);
    36.     }
    37.   }
    38.  
    остальные классы сохраняют его обьект
    PHP:
    1.  
    2.   private $reg;
    3.   function __construct($reg){
    4.     $this->reg = $reg;
    5.   }
    6.  
    при обращении к переменным класса всё нормально, но когда посылаю пост переменную, он не хочет сохранятся
    PHP:
    1.  
    2.   function A(){
    3. if (isset($_POST['text'])){
    4.   $this->reg['text'] = $_POST['text'];
    5. }
    6.  
    Не могу понять куда она девается, кто-нибудь сталкивался с такой проблемой? ?
     
  2. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    PHP:
    1.   function A(){
    2. if (isset($_POST['text'])){
    3.   $this->reg['text'] = $_POST['text'];
    4. }
    5. var_dump($_POST);
    6. var_dump($this->reg);
    7.  
    покажи результат
     
  3. AleksNV

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

    С нами с:
    6 фев 2009
    Сообщения:
    3
    Симпатии:
    0
    PHP:
    1.  
    2. array(1) {
    3.   ["text"]=>
    4.   string(3) "123"
    5. }
    6. object(Reg)#1 (1) {
    7.  ["vars"]=>
    8.   array(1) {
    9.     ["text"]=>
    10.     int(123)
    11.  
     
  4. AleksNV

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

    С нами с:
    6 фев 2009
    Сообщения:
    3
    Симпатии:
    0
    Я кажется понял, при создании обьекта с таким же именем, старый обьект удаляется?
    Например:
    PHP:
    1.  
    2. //файл file.php
    3. <?php
    4.   class C{
    5.     public $b;
    6.   }
    7.   $a = new C;
    8.   echo $a->b;
    9. ?>
    10.  
    11. //file2.php
    12. <?php
    13.   $a->b = 'abc';
    14.   header("Location: file.php");
    15. ?>
    16.  
    Ничего не выведет?
     
  5. kirwebgroup

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

    С нами с:
    21 ноя 2008
    Сообщения:
    48
    Симпатии:
    0
    $regthis = new Reg;

    1. function A($data){
    $data = $_POST;
    2. if (isset($data['text'])){
    3. $regthis->reg = $data['text'];
    4. }

    если эту функцию пользуешь в классе , обрати внимание на private $reg;