Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Переменая пропадает


Автор: zxxz 7.2.2011, 18:29
Есть класс my_class. Метод вызываются из скрипта my_class->my_method.
С помощью my_method пытаюсь сохранить переменную в классе my_var.
my_method($x){
this->my_var = $x;
echo $this-my_var;// работает.
}

my_other_method(){echo $this->my_var;}//не работает переменная сгорела класс не перегружал использую тот же.
 my_other_method это метод класса вызывается из скрипта.
Пока что надо сделал через файлы, но при одновременном запросе переписывается файл и опять ничего не работает.
Помогите разобраться.

Автор: patap 7.2.2011, 18:45
Лучше один раз увидеть, чем сто раз услышать

Автор: patap 7.2.2011, 22:35
больше кода и желательно в оригинале, без существенной трансформации

Автор: GZep 8.2.2011, 00:14
Цитата(zxxz @  7.2.2011,  18:29 Найти цитируемый пост)
this->my_var = $x;

тут пропущен символ "доллар".

Почему нельзя использовать тег код, чтобы наглядно увидеть проблему в коде...

Автор: zxxz 8.2.2011, 01:26
Code:
Код

 function showTables($base){
      $this->saveDB($base);
      mysql_query("USE $base");
       $result = mysql_query("SHOW TABLES FROM ".$base);
       if($result){
        $i = 0;
        $cnt = mysql_num_rows($result);
        echo"<span class='line'>Select table:</span>";
        echo "<select class='line' id='select_table'>";
    while ($i < $cnt) {
    $table_name = mysql_table_name($result, $i);
    echo "<option id='table' class='line' value='".$table_name."'>".$table_name. "</option><br/>";
    $i++;
}//while
echo "</select><input type='submit' id='submit_table' value='Submit table' class='line'>";
echo "<script type='text/javascript'>

      $('#submit_table').click(function(){
     $.post('gateKeeper.php', {table:$('#select_table option:selected').val()}, function(text) {
       // format and output result
       $('#table_description').html(
         text

       );
     });
   });
   </script>";
        }//if result
        mysql_free_result($result);
   }//showTables

//С файлами работает с сессиями нет
private function saveDB($base){
      /* $file  = fopen('base','wb');
       fwrite($file, $base);
       fclose($file);*/
      session_start();
      $_SESSION['base'] = $base;
      echo $_SESSION['base'];
   }//saveDB

   private function getDB(){
       /*if(file_exists('base')&& is_readable('base')){
           $file = fopen('base', 'rb');
           $content = file_get_contents('base');
           if($content){return $content;}//if

       }//if*/
      return $_SESSION['base'];
   }//getDB


 public function displayColumn($column){
       //if(is_array($column)&& isset ($column)){$separated = implode(",", $column);}//if
       $table = $this->getTable();//почти эдентичная getDB();
       $base = $this->getDB();
       mysql_query("USE $base");
       echo "The columns passed: ".$column;
       $result = mysql_query("SELECT $column FROM $table");
       if($result){           
           $i = 0;
           $cnt = mysql_num_rows($result);
           echo "<table class='result_table'>";
           while($i<$cnt){
           echo "<tr>";
       $row = mysql_fetch_row($result);
       foreach ($row as $key=>$value){
          echo"<td>".$value."</td>";}//foreach
           $i++;
           echo "</tr>";
       }//while
       echo "</table>";
       mysql_free_result($result);
   }//if
   else{echo "The result was empty";}
   }//displayColumn


http://forum.vingrad.ru/topic-274094.html обсуждалось что то похожее, ксожалению это для меня пока какое то жуткое вуду.
ООП не понимаю на все 100. А то что читаю только сильнее запутывает.  smile 

Автор: Ozerich 8.2.2011, 01:32
zxxz, а в чем проблема?

Автор: zxxz 8.2.2011, 10:46
Ozerich,  в чем проблема? Знал бы - не спрашивал.
Переменнная не доступна после обработки одной функцией и попыки сохранить значение в
переменной класса. Пробовал сохранять так:
Код

private x =null;

functon my_function($y){
// bla bla
$this->x=y;
}

Потом запрашиваю  'х' из другой функции и всё уже пропала.
В чем проблема?

Автор: Ozerich 8.2.2011, 11:01
Что не работает? Не вижу связи между кодом и первым сообщением

Автор: zxxz 8.2.2011, 11:14
Ozerich,  извини, если не понятно объясняюсь. Но как я и сказал суть проблемы в том что не могу
сохранить переменную для последующего использования. И не знаю как это правильно сделать.
Я новичок.

Автор: Ozerich 8.2.2011, 12:20
Код

<?php
class my_class
{
    private $my_var;
    public function set_value($value)
    {
        $this->my_var = $value;
    }
    public function get_value()
    {
        return $this->my_var;
    }
}

$my = new my_class();
$my->set_value(1);
echo $my->get_value();

?>

Автор: skyboy 8.2.2011, 12:49
Цитата(zxxz @  8.2.2011,  09:46 Найти цитируемый пост)
$this->x=y;

опять доллар пропустил.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)