[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: вопрос по классам
alzasr
код такой

$core->settings->db_host='localhost';
$core->connection = new connection($core->settings);

class connection{
public $settings;

function __construct($settings){
$this->settings=$settings;
$this->settings->db_host='main';
gloabal $core;
echo $core->settings->db_host //выводит 'localhost'
echo $this->settings->db_host //выводит 'main'
}
}


Получается, что в строке $this->settings=$settings; класс клонируется и теперь имеем 2 экземпляра класса, а желательно иметь 1 экземпляр, а свойства были бы ссылками? Есть ли такая возможность?



Спустя 40 минут, 50 секунд (30.10.2010 - 10:17) Гость_Michael написал(а):
Цитата (alzasr @ 30.10.2010 - 06:36)
Получается, что в строке $this->settings=$settings; класс клонируется

Свойству объекта значение переданного параметра присваивается, и все.

Спустя 18 минут, 48 секунд (30.10.2010 - 10:36) T1grOK написал(а):
Другими словами присваивается атрибут класса

Спустя 18 минут, 14 секунд (30.10.2010 - 10:54) alzasr написал(а):
Вообщем ситуация такая, почти в каждом классе есть свойство connection которое является экземпляром класса connection, по идее, для всего кода мне достаточно 1 экземпляра этого класса, даже больше, мне бы очень хотелось иметь один экземпляр этого класса. Но получается, если передавать этот класс через параметры конструктора класса, то экземпляр класса клонируется. использовать глобалы внутри методов классов нехочется. Вот и возник вопрос, есть ли возможность иметь и использовать в каждом экземпляре каждого класса ссылку на единственный экземпляр класса connection, а не плодить копии?

Спустя 1 минута, 9 секунд (30.10.2010 - 10:55) Гость_Michael написал(а):
Цитата (T1grOK @ 30.10.2010 - 07:36)
Другими словами присваивается атрибут класса

Эээ нет, это не другими словами ... Какой еще атрибут класса?

Спустя 9 минут, 23 секунды (30.10.2010 - 11:05) Paha4 написал(а):
alzasr что это вообще такое??? Это весь код?



Спустя 23 секунды (30.10.2010 - 11:05) Гость_Michael написал(а):
Цитата (alzasr @ 30.10.2010 - 07:54)
Но получается, если передавать этот класс через параметры конструктора класса, то экземпляр класса клонируется. использовать глобалы внутри методов классов нехочется. Вот и возник вопрос, есть ли возможность иметь и использовать в каждом экземпляре каждого класса ссылку на единственный экземпляр класса connection, а не плодить копии?

да не клонируется ничего blink.gif . По ссылке объекты в php 5 передаются. Учите основы.

p.s. В php 4 надо было специально указывать, что по ссылке, т.к. там копия создавалась бы.

Спустя 10 минут, 37 секунд (30.10.2010 - 11:16) alzasr написал(а):
Цитата (Paha4 @ 30.10.2010 - 08:05)
alzasr что это вообще такое??? Это весь код?

Нет, это не весь код, это демонстрирующий пример, он не автономный. Просто чтобы показать, что в результате имеем 2 экземпляра класса

Спустя 2 минуты, 37 секунд (30.10.2010 - 11:18) Paha4 написал(а):
Цитата (alzasr @ 30.10.2010 - 08:16)
Нет, это не весь код, это демонстрирующий пример, он не автономный. Просто чтобы показать, что в результате имеем 2 экземпляра класса

Я вот например не могу тебе помочь не видя откуда и что пришло, давай прикрепляй класс.

Спустя 16 минут, 34 секунды (30.10.2010 - 11:35) alzasr написал(а):
Начал писать пример для иллюстрации, что бы сюда выложить, в нем все работает так, как я ожидал. Начал рыть код, оказалось синтаксическая ошибка (буква q вместо g, кое как заметил)))), но поскольку у PHP предопределения переменных нет, ошибки не появилось. Дико извиняюсь ))))

Спустя 1 день, 7 часов, 8 минут, 11 секунд (31.10.2010 - 19:43) Guest написал(а):
Singleton в помощь
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.