ФорумПрограммированиеPHP для идиотов → определение класса потомка в родителе

определение класса потомка в родителе

  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz 27 июня 2010 г. 11:13, спустя 1 минуту 44 секунды

    То есть тебе нужно что то типа:
    $class = new Parent ( 'child' );
    // вместо
    $class = new Child;
    //??????????????????
  • artoodetoo

    Сообщения: 5147 Репутация: N Группа: в ухо

    Spritz 27 июня 2010 г. 11:52, спустя 38 минут 47 секунд

    хуй знает что нужно ТС, но правильный ответ [man]get_class[/man] )))


    class Hujnane
    {
    protected
    $_args;

    public function __construct($args)
    {
    $this->_args =& $args;
    }

    public function child()
    {
    $class = get_class($this);
    return new $class($this->_args);
    }
    }


    child() породит экземляр того же класса, что и родительский объект. допускаются любые наследования от Hujnane
    ιιlllιlllι унц-унц
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 27 июня 2010 г. 11:58, спустя 5 минут 47 секунд

    возможно тебя "паттерн" "адаптер" интересует?)
    Сапожник без сапог
  • Faster

    Сообщения: 1159 Репутация: N Группа: Кто попало

    Spritz 27 июня 2010 г. 12:04, спустя 6 минут 48 секунд

    artoodetoo, угу в точку. буду пробовать
    phpdude, если б еще и знать что ты имел ввиду
    Спустя 39 сек.
    master,
    внятно и пытался, сорри если непонятно
  • master

    Сообщения: 3244 Репутация: N Группа: Джедаи

    Spritz 27 июня 2010 г. 12:05, спустя 35 секунд

    Faster, приведи гипотетический код, в котором используются эти классы
    не всё полезно, что в swap полезло
  • Faster

    Сообщения: 1159 Репутация: N Группа: Кто попало

    Spritz 27 июня 2010 г. 12:06, спустя 48 секунд

    SpartakuS, я так думал в начале топика, да и видел пример такой "теоритический" который на поверку работает через жопу
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 27 июня 2010 г. 12:10, спустя 4 минуты 17 секунд

    Faster, почитай википедию, поймешь ;)
    Сапожник без сапог
  • Faster

    Сообщения: 1159 Репутация: N Группа: Кто попало

    Spritz 27 июня 2010 г. 12:14, спустя 4 минуты 17 секунд



    class ParentRemote{
           public $remoteLink;
           public $fileType;
           
           public __construct($args){
           
           $this->remoteLink=$args['link'];
           $this->fileType='JsRemote';
            // тут же определяем соединение, чекаем наличие, тип файла
           
           }

    }
    //работа с CSS файлами
    class CssRemote extends ParentRemote {
           
     
    }
    //
    //работа с JS файлами
    class JSRemote extends ParentRemote {
           
     
    }

    в итоге в классе родителе получаем ряд общих свойств и передаем соответствующему классу потомку

    master, понятней не могу
    Спустя 68 сек.
    phpdude, усиленно восполняю пробелы.
    ебал мозг этим примером довольно долго, соответствующая функция пишется 2 минуты млин
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 27 июня 2010 г. 12:17, спустя 2 минуты 14 секунд

    Faster, понял фишку прибл, ты просто хочешь потомков сделать чтоли? :-D

    правильно мастер сказал - РОДИТЕЛЬ НИХУЯ НЕ ДОЛЖЕН ЗНАТЬ О ПОТОМКАХ. это я наверное не приувеличу, если скажу что основной принцип ооп
    Сапожник без сапог
  • master

    Сообщения: 3244 Репутация: N Группа: Джедаи

    Spritz 27 июня 2010 г. 12:19, спустя 2 минуты 25 секунд

    Faster, я имел ввиду как эти классы "снаружи" выглядят. как ты их потом использовать будешь. ну чёнить типа

    $a = new CssRemote;
    $b = new JSRemote;
    $b->foo();
    $a->blabla();
    не всё полезно, что в swap полезло
  • Faster

    Сообщения: 1159 Репутация: N Группа: Кто попало

    Spritz 27 июня 2010 г. 12:21, спустя 2 минуты 12 секунд

    мне тут популярно объяснили что так не работает
    $a = new CssRemote
    $b = new JSRemote
    Спустя 103 сек.
    phpdude,
    определить потомка в свойстве родителя. ну нет так нет.
    попробую artoodetoo способ
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 27 июня 2010 г. 12:22, спустя 20 секунд

    мне тут популярно объяснили что так не работает

    кто? плюнь в лицо и скажи что дуд попросил.
    Сапожник без сапог
  • Faster

    Сообщения: 1159 Репутация: N Группа: Кто попало

    Spritz 27 июня 2010 г. 12:23, спустя 1 минуту 25 секунд

    $b->getTimestamp();
    $b->setTimestamp();

    и так далее
  • master

    Сообщения: 3244 Репутация: N Группа: Джедаи

    Spritz 27 июня 2010 г. 12:27, спустя 3 минуты 45 секунд

    Faster, этта…
    ещё раз прошу, приведи код, в котором ты используешь эти классы. не код классов, а код, где эти классы используются

    вот например. код класса. его показывать не надо

    class abc{

    }

    код, где класс используется:

    $xx = new abc;
    $xx->blabla();

    надеюсь так понятно что я от тебя хочу?
    не всё полезно, что в swap полезло
  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz 27 июня 2010 г. 12:31, спустя 4 минуты 36 секунд

    А зачем тебе его из родителя то вызывать? То, что ты хочешь сделать делается горазо проще.
    class ParentRemote{
           public $remoteLink;
           
           public __construct($remoteLink){
                $this->remoteLink=$remoteLink;
                // тут же определяем соединение, чекаем наличие, тип файла        
           }

    }
    //работа с CSS файлами
    class CssRemote extends ParentRemote {
    public __construct($remoteLink){
    parent::__construct($remoteLink);
    }
    }
    //
    //работа с JS файлами
    class JSRemote extends ParentRemote {
          public __construct($remoteLink){
    parent::__construct($remoteLink);
    }
     
    }

    $css = new CssRemote ('style.css');
    $js = new JSRemote ('jquery.js');
    Спустя 197 сек.
    Faster, понял фишку прибл, ты просто хочешь потомков сделать чтоли? :-D

    вот и мне так показалось к концу первой страницы.

Пожалуйста, авторизуйтесь, чтобы написать комментарий!