Как создавать новые переменные? (ООП)

DevelopmentGuru

Новичок
Как создавать новые переменные? (ООП)

Привет, программисты!

Изучил классы - очень хорошая вещь! Всем рекомендую. Такой вот вопрос.

Создал коллекцию названий машин (необходима для моего нового проекта). Вместительность коллекции предусмотрел на 5 машин (с 0 по 4). Задача динамически расширять вместительность по мере необходимости. Наверняка есть какой-то способ в PHP, желательно объекто-ориентированный. Если есть вопросы - задавайте! Спасибо!

PHP:
class collection
{
    var $car_0;
    var $car_1;
    var $car_2;
    var $car_3;
    var $car_4;
    
    function add($car_title) {
      if ($this->car_0 == null) $this->car_0 = $car_title; else
      if ($this->car_1 == null) $this->car_1 = $car_title; else
      if ($this->car_2 == null) $this->car_2 = $car_title; else
      if ($this->car_3 == null) $this->car_3 = $car_title; else
      if ($this->car_4 == null) $this->car_4 = $car_title; 
      else
      {
        //нужно создать новую переменную для хранения 
        //нового названия машины. Как её создать?
      }
    }
    
    function get($index)
    {
      return $this->{'car_' . $index}
    }
}
 

StUV

Rotaredom
массивы теперь не модно - везде требуют "пхп(ооп) - обязательно"
 

DevelopmentGuru

Новичок
$name = 'car_6';
$this->$name = 'bla-bla-bla';
Спасибо, Alexandre - ваше решение работает.

Я проанализировал ваше решение, и предлагаю лучшее (ваше увеличивает только на одну ячейку памяти). Для этого предлагаю хранить текущий размер моей коллекции в поле $capacity. По умолчанию $capacity = 5 (в целях производительности мы будем создавать пять ячеек в коде, как и раньше)
PHP:
$name = 'car_' . $this->capacity;
$this->$name = $car_title;
$this->capacity++;
даааа-а, это я у него должен спрашивать а каааа-ак???
Я и сам не знаю. Но если мы не справимся - я опубликую решение, как только сам разберусь.

Будут ли другие предложения?
 

dr-sm

Новичок
есть предложение отсыпать :D

PS в целях производительности рекомендую такой код больше не писать, ато кого-нибуть удар хватит
PHP:
    function add($car_title) {
      if ($this->car_0 == null) $this->car_0 = $car_title; else
      if ($this->car_1 == null) $this->car_1 = $car_title; else
      if ($this->car_2 == null) $this->car_2 = $car_title; else
      if ($this->car_3 == null) $this->car_3 = $car_title; else
      if ($this->car_4 == null) $this->car_4 = $car_title;  ...
 

berkut

Новичок
...
var $cars = array('carname1', 'carname2');
...
function add($car_title) {
$this->cars[] = $car_title;
}

не правда-ли короче?

-~{}~ 27.03.08 22:54:

Krishna да врядли. полно таких ооп-шников. в класс пихают по 374 "метода" на все случаи жизни.
 

Beavis

Banned
бугага)))
обычными массивами пользоваться - это для ламеров.. настоящие гуру объектно-ориентированные массивы используют)))))))))
 

StUV

Rotaredom
Beavis
кстати да
мне тож его идеи напомнили исходники stl... оч отдаленно ;)
 
Сверху