Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Класс в классе 
:(
    Опции темы
RailMan
  Дата 5.11.2006, 11:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 16.7.2006

Репутация: нет
Всего: нет



Конечно плохо назвал тему, но все же.. Имею 2 класса А и В. Хочу, чтоб В являлся как бы частью А (можно ли вместо переменной сделать новый объект класса?) и к его полям можно было например обращаться так: A->B->myvar. Это было бы очень полезно. Спасибо
PM MAIL   Вверх
skifoz
Дата 5.11.2006, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 85
Регистрация: 23.1.2006
Где: Россия

Репутация: нет
Всего: 1



Можно сделать так 
Код

class a
{
    function a() {
        echo "a";
    }
}

class b extends a
{
    function b() {
        echo "b";
    }
}


$b = new b();

$b->a();



Наследуем классу b все функции класса a и теперь можно обращатся к функциям класса a() из b()

еще метод 

Код

class a
{
    function a() {
        echo "a";
    }
}

class b
{
    var $a;
    function __construct() {
        $this->a = new a();
   }
    function b() {
        echo "b";
    }
}



Насчет второго метода не уверен вроде должно работать)


PM MAIL WWW   Вверх
RailMan
Дата 5.11.2006, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 16.7.2006

Репутация: нет
Всего: нет



Хм. За это спасибо!!! А вот если мне хочется для красоты и наглядности (=)) сделать две стрелки, то это никак?
PM MAIL   Вверх
skifoz
Дата 5.11.2006, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 85
Регистрация: 23.1.2006
Где: Россия

Репутация: нет
Всего: 1



Второй вариант который я тебе указал и есть, как ты говоришь, "две стрелки", там чтобы вызвать функцию клсса a() нужно сделать так

$b->a->a();
PM MAIL WWW   Вверх
RailMan
Дата 5.11.2006, 11:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 16.7.2006

Репутация: нет
Всего: нет



Огромное спасибо за такой понятный и ШУСТРЫЙ smile отклик. Разобрался
PM MAIL   Вверх
-=Ustas=-
Дата 5.11.2006, 12:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: нет
Всего: 69



Код

<?php

class A
{
    var $var1 = 'variable from class A';
    
    function __construct()
    {        
        //....
    }
}

class B
{
    var $classA = '';
    
    function __construct()
    {
        $this->classA =& new A(); 
    }
}

$obj = new B();

echo $obj->classA->var1;

?>


Добавлено @ 12:06 
Усп.. опоздал smile


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
CyClon
Дата 7.11.2006, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 3.12.2005

Репутация: нет
Всего: 4



Прикольная штука, мне как-то на форуме предлагали переписать класс работы с MySQL чтобы вместо так:

$db->sql_query("...");

Было так:

$db->query->sql("...");

Похоже идея была бредовая, код жесть получится.


--------------------
user posted image
PM   Вверх
Nicholas_S
Дата 7.11.2006, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 486
Регистрация: 12.10.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 19



-=Ustas=-, начиная с PHP5 создавать объект по ссылке не обязательно.  smile 


--------------------
...все в мире относительно
PM   Вверх
check
Дата 7.11.2006, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 610
Регистрация: 3.4.2006

Репутация: нет
Всего: 23



А внутренние(и анонимные) классы в PHP5 не появились?
Там много заимствований из Java по части ООП, может и это есть? 

А то удобно - вместо того чтобы наследовать новый класс от базового
просто помещаем его внутрь,  как и хотел RailMan. 
PM MAIL   Вверх
-=Ustas=-
Дата 7.11.2006, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: нет
Всего: 69



Цитата(Nicholas_S @  7.11.2006,  16:26 Найти цитируемый пост)
-=Ustas=-, начиная с PHP5 создавать объект по ссылке не обязательно. 

Я в курсе, что объекты по дефолту по ссылке передаются, просто на всякий случай написал  smile 


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
Mal Hack
Дата 7.11.2006, 20:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 1
Всего: 261



Цитата(check @  7.11.2006,  17:19 Найти цитируемый пост)
А внутренние(и анонимные) классы в PHP5 не появились?

Такого вроде нема.
PM ICQ   Вверх
GZep
Дата 14.2.2007, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


участник Винграда
***


Профиль
Группа: Завсегдатай
Сообщений: 1528
Регистрация: 7.7.2006
Где: Москва

Репутация: нет
Всего: 32



Цитата(check @  7.11.2006,  17:19 Найти цитируемый пост)
А внутренние(и анонимные) классы в PHP5 не появились?

А если вот так?
Код

class a
{
    function a() {
        echo "a";
    }
}
class b
{
    private $a;
    function __construct() {
        $this->a = new a();
   }
    function b() {
        echo "b";
    }
}



--------------------
user posted imageuser posted image
PM MAIL WWW ICQ Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Extensions | Следующая тема »


 




[ Время генерации скрипта: 0.1794 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.