Форум программистов, компьютерный форум, киберфорум
PHP: ООП
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
603 / 578 / 103
Регистрация: 16.07.2012
Сообщений: 1,762
1

Как создать экземпляр класса внутри другого, явно не указывая его название

22.10.2012, 14:14. Показов 2098. Ответов 4
Метки нет (Все метки)

Как создать екземпляр класса внутри класса явно не указывая его название и не присваивая в переменную его название
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Test{
    
    static protected $instance;
    
    static public function start()
    {
        if (!is_a (self::$instance, __CLASS__)){
            //$c = __CLASS__;
            //self::$instance = new $c;
// примерно что типо этой строки, но при такой записи константа __CLASS__ начинает интерпритироваться как строковое название класса
            self::$instance = new __CLASS__;
        }
        return self::$instance;
    }
    
}
$o = Test::start();
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.10.2012, 14:14
Ответы с готовыми решениями:

Создать экземпляр одного класса в Main, и передать его в экземпляр другого класса
Добрый день. Подскажите пожалуйста. есть несколько классов-файлов в одном пакете. class one...

Как обратится к переменной из другого класса, не создавая его экземпляр?
Добрый день. Подскажите, как обратится к переменной из другого класса, не создавая его экземпляр?

Как создать массив классов внутри другого класса
Как создать массив классов внутри другого класса на Java? можно набросок кода??

Как правильно создать экземпляр класса для доступа к его свойствам
Всем доброго времени суток. Сижу уже долго над этим участком. У меня есть класс Pinball, я создаю...

4
270 / 226 / 11
Регистрация: 20.04.2012
Сообщений: 817
22.10.2012, 14:57 2
PHP
1
self::$instance = new self;
создаст экз. текущего класса Test

если Test будет расширен, т.е. будет
PHP
1
2
class foo extends Test{
}
то надо смотреть по необходимости - либо оставлять как есть, тогда
PHP
1
$foo = foo::start();
вернет экз. класса Test, либо использовать позднее статическое связывание:
PHP
1
 self::$instance = new static;
тогда вернется объект класса foo
1
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16829 / 6707 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
22.10.2012, 15:13 3
Цитата Сообщение от alpex Посмотреть сообщение
is_a
она уже устарела, используйте вместо нее оператор instanceof
а по поводу вопроса даже не знаю что-то..

Добавлено через 15 минут

Не по теме:

с чего я взял что нужно узнать имя родительского класса? O_o

0
603 / 578 / 103
Регистрация: 16.07.2012
Сообщений: 1,762
22.10.2012, 16:10  [ТС] 4
Цитата Сообщение от KOPOJI Посмотреть сообщение
она уже устарела, используйте вместо нее оператор instanceof
Оператор instanceof был добавлен в PHP 5. До этого времени использовалась функция is_a(), но позже is_a() была помечена устаревшей в пользу instanceof. Учтите, что с версии PHP 5.3.0, is_a() больше не является устаревшей.
0
KOPOJI
22.10.2012, 21:11     Как создать экземпляр класса внутри другого, явно не указывая его название
  #5

Не по теме:

Цитата Сообщение от alpex Посмотреть сообщение
Учтите, что с версии PHP 5.3.0, is_a() больше не является устаревшей.
вот именно, что с версии 5.3.0. Хотя instanceof все также нормально работает в PHP > 5.0. Но решать, опять же, Вам

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.10.2012, 21:11

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

Работа с классами (в главном классе создать указатель на экземпляр другого класса)
Недавно начал изучение С++, в частности ООП. В связи с чем у меня есть вопрос как в главном классе...

Экземпляр класса как входные данные метода другого класса
Можно ли в качестве входных данных метода передать экземпляр метода другого класса? Если да, то как?

Как получить ссылку на текущий экземпляр класса внутри этого класса?
Как? Чтобы отрабатывал деструктор! и в нем можно было поиметь этот this ... Идея в том, что пишу...

Создать экземпляр класса по его конструктору
Здравствуйте, допустим у нас есть метод: // Создает экземпляр класса по его конструктору...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.