Задать вопрос
@BUKUBAKA

Друзья, каким образом изменить значение свойства $b (прибавить единицу) у каждого объекта класса T, заданного в конструкторе класса G?

class G{
	var $a;
	public function __construct(){
		$massiv=[];
		for ($i=0;$i<4;$i=$i+1){
			${'fu'.$i} = new T;
			${'fu'.$i}->b=rand(0,1000);
			$massiv[]=${'tree'.$i};
			}
   }
}

class T{
	var $b;	 
  var $s; 
}
  • Вопрос задан
  • 177 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
1) var - не используйте это ключевое слово. Используйте public. А еще лучше - private.
2) инкапсуляция, закон деметры. Не меняйте состояние объектов напрямую. Используйте сообщения (вызовы методов).
3) вот эти свистоплязки с динамическим созданием имен переменных лишены всякого смысла
4) имена классов, свойств, методов и вообще должны быть осмысленны. Вы должны быть в состоянии, ну не знаю, прочитать код вслух! и что бы всем вокруг все было понятно.

class T{
    private $b;
    private $s;

    public function __construct() 
    {
         $this->b = mt_rand(0, 1000);
         $this->s = 'foo';
    }
}

class G
{
    public function __construct(array $t) 
    {
          // ...
    }
}

$g = new G(array_map(function () {
    return new T();
}, range(1, 4));
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы