Значение по умолчанию переменной в классе

mutex

Guest
Значение по умолчанию переменной в классе

В неком классе имеется переменная $color, для которой задано значение по умолчанию:
PHP:
class c()
{
   var $color = "#00ff00";
   ...
   function Display()
   {
      echo "..." . $this->color . "...";
   }
}
Вызываю Display - все в порядке. Но не получается задать иное значение для переменной $color извне (есть соответствующая функция SetColor()), т.е.
PHP:
$c1->SetColor("#ff0000");
$c2->Display();
не работет, а работает только если не задавать для $color значение по умолчанию в классе. В чем может быть проблема?
 

440hz

php.ru
mutex
$c1 и $c2 это же разные экземпляры. спрашивается тогда, с чего должно работать? 8)
 

netmac

Новичок
А не пробовал в конструкторе начальное значение для $color определять а не в теле класса. Твой способ вообще то какбы противоречит принципам ООП.
 

mutex

Guest
Автор оригинала: netmac
А не пробовал в конструкторе начальное значение для $color определять а не в теле класса. Твой способ вообще то какбы противоречит принципам ООП.
Сейчас попробовал. Не работает. Привожу код класса целиком:
PHP:
   class CCell
   {
      var $border;
      var $background;

      function CCell()
      {
         $this->border = "#b7b7b7";
         $this->background = "#e7e7e7";
      }

      function SetBorder($newborder)
      {
         $this->border = $newborder;
      }
      function SetBackground($newbackground)
      {
         $this->background = $newbackground;
      }

      function BeginCell()
      {
      ?>
         <table width="100%" border="0" cellpadding="0" cellspacing="1" bgcolor="<? echo $this->border; ?>"><tr><td>
         <table width="100%" border="0" cellpadding="10" cellspacing="0" bgcolor="<? echo $this->background; ?>">
      <?
      }
      function EndCell()
      {
      ?>
         </table>
         </tr></td></table>
      <?
      }
   }
Эксперемантальным путем установил, что не работает функция SetBorder (выше я ее SetColor называл). Интересно, что BeginCell, например, выполняется абсолютно нормально. Помогите, знающие люди. я уже не знаю что и думать ;((
 

netmac

Новичок
Вот сейчас у себя сделал:

PHP:
include_once("test2.php");// твой класс

$r = new CCell();

echo $r->border;
$r->SetBorder("#676767");
echo "\n";
echo $r->border;
Вывод:
#b7b7b7
#676767
<table width="100%" border="0" cellpadding="0" cellspacing="1" bgcolor="#676767"><tr><td>
<table width="100%" border="0" cellpadding="10" cellspacing="0" bgcolor="#e7e7e7">


Все работает.
 

Navarro

Новичок
class c()
{
var $color;
function SetBorder($i_color= '#000000')
{
$this->color=$i_color;
}
...
function Display()
{
echo "..." . $this->color . "...";
}
}

$test = new c;
$test->Display();
$test->SetBorder('#dddddd');
$test->Display();
$test->SetBorder();
$test->Display();
 
Сверху