За последние 24 часа нас посетили 17849 программистов и 1704 робота. Сейчас ищут 962 программиста ...

Класс содержащий ссылку на себя. Как сделать?

Тема в разделе "Прочие вопросы по PHP", создана пользователем Rainwork, 30 апр 2008.

  1. Rainwork

    Rainwork Активный пользователь

    С нами с:
    25 апр 2008
    Сообщения:
    10
    Симпатии:
    0
    Есть такой код на С++
    class A
    {
    public:
    A* t;
    void Test()
    {
    printf("Testing\n");
    }
    };

    void _tmain()
    {
    A s= A();
    s.Test();
    s.t->Test();

    }

    Как такое повторить на PHP?
     
  2. Rainwork

    Rainwork Активный пользователь

    С нами с:
    25 апр 2008
    Сообщения:
    10
    Симпатии:
    0
    <?php
    class A
    {

    public $c;
    public function Test()
    {
    print "Test";
    }

    public function CreateS()
    {
    $this->c=& new A();
    }

    function A()
    {

    }
    }
    ?>
    Есть вот такая реальзация, но тогда чтобы это работало нужно каждый раз после объявления класса делать вызов
    $A->CreateS();
    Если поместить код в конструктор:
    function A(){ $this->CreateS();}
    но ничего не выводится.
    Прочему???
     
  3. Professor

    Professor Активный пользователь

    С нами с:
    2 янв 2008
    Сообщения:
    121
    Симпатии:
    0
    Адрес:
    г. Одесса, Украина
    Вот мне интересно, ты столкнулся с проблемой, которая другими способами не решается, или пытаешься сравнить php и C++ ?
     
  4. creage

    creage Активный пользователь

    С нами с:
    12 мар 2008
    Сообщения:
    131
    Симпатии:
    0
    Адрес:
    Киев
    навскидку - что вам мешает создать объект, потом взять его клона о присвоить его в одно из свойст объекта?

    З.Ы. не могу даже представить, зачем это может понадобиться...
     
  5. lexa

    lexa Активный пользователь

    С нами с:
    22 июл 2007
    Сообщения:
    1.746
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Самые плохие php`шники это обычно бывшие сишники. :)
     
  6. Rainwork

    Rainwork Активный пользователь

    С нами с:
    25 апр 2008
    Сообщения:
    10
    Симпатии:
    0
    ААААА :)
    Все отожгли понемногу :)
    Причем тут С??? Таже беда и с Delphi :)
    Нет не сравниваю.
    А нужно это для того чтобы гы. Есть БД в ней две таблицы(к примеру, прошу не ципляться за слова и названия таблиц)
    "Классы", причем структур такая что "Классы" содержит ссылку на себяже только другую запись (неспрашивайте зачем, есть такая таблица полность весь прект привести немогу). Надеюсь понятно как наследование в БД делается. Если нет вот пример:
    Классы(ID,ClsName,TableClass,ParentClass):
    1, First, FirstTable, 0
    2, Second,SecondTable,1

    Отсюда получается что Класс Second наследник First
    Таким образом мы получаем наследование в БД.

    А для удобство и быстроты разработки ПО для работы с БД
    пишем класса для работы с этой таблицой
    class Cls
    {
    public $ID;
    public $NameCls;
    public $TableName;
    public $Cls?????
    }

    Так вот и нужно сделать такое наследование
     
  7. Rainwork

    Rainwork Активный пользователь

    С нами с:
    25 апр 2008
    Сообщения:
    10
    Симпатии:
    0
    ЖЖОООШШШ
    я на PHP раньше чем на Си сел :)
     
  8. lexa

    lexa Активный пользователь

    С нами с:
    22 июл 2007
    Сообщения:
    1.746
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Но си на тебя явно больше повлиял. ;)

    По-моему, ты хочешь изобрести ORM. Поищи по этой аббревиатуре по форуму. Оно? :)
     
  9. Rainwork

    Rainwork Активный пользователь

    С нами с:
    25 апр 2008
    Сообщения:
    10
    Симпатии:
    0
    Да понимаешь как получается изобретать мне уже ничего не нужно код рабочий есть и на Си и на PHP (в начале темы привел)
    Просто хочется именно как в Си при создании экземпляра класса, чтобы работало[/list]
     
  10. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    Кстати, пример в начале темы - некорректный... там s.t нигде не инициируется, а потом у него вызывается метод. Для статики такое будет работать (со скрипом), но если метод будет виртуальным, вы огребете по самое не хочу... так что мне лично непонятно, что нужно автору.
     
  11. Rainwork

    Rainwork Активный пользователь

    С нами с:
    25 апр 2008
    Сообщения:
    10
    Симпатии:
    0
    Если не трудно приведи пример правильного примера на Си и желат на PHP
     
  12. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    Rainwork
    Пример чего?