За последние 24 часа нас посетил 62191 программист и 1797 роботов. Сейчас ищут 835 программистов ...

Получить цепочку свойств

Тема в разделе "Прочие вопросы по PHP", создана пользователем Tester1, 23 янв 2015.

  1. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    внимательный-невнимательный, но допустим и я не вижу в теме описания практической пользы. можно на конкретном примере?
     
  2. Tester1

    Tester1 Новичок

    С нами с:
    23 янв 2015
    Сообщения:
    15
    Симпатии:
    0
    Есть большая польза, вот пример применения
    Код (Text):
    1.  
    2. use \WPD\Vcl\Forms\TApplication;
    3. use \WPD\System\TObject;
    4. use \WPD\Vcl\Forms\TForm;
    5. Use \WPD\sSkinManager\TsSkinManager;
    6. Use \WPD\sSkinProvider\TsSkinProvider;
    7.  
    8. $NewForm = new TObject();
    9.  
    10. $TApplication = new TApplication(null);
    11. $TApplication->Initialize();
    12. $TApplication->CreateForm((New TForm)->AsInstance->MetaclassType, $NewForm);
    13.  
    14. $Button1 = new TButton($NewForm);
    15. $Button1->parent = $NewForm;
    16. $Button1->Caption = 'Вот и кнопа';
    17. $Button1->Top = 10;
    18. $Button1->Left = 20;
    19.  
    20. $sSkinManager1 = new TsSkinManager($NewForm);
    21. $sSkinProvider1 = new TsSkinProvider($NewForm);
    22. $sSkinProvider1->SkinData->FSkinManager = $sSkinManager1;
    23. $sSkinManager1->SkinName = 'Light Board.asz';
    24. $sSkinManager1->UpdateSkin(true);
    25.  
    26. $NewForm->Caption = 'Заголовок формы';
    27. $NewForm->Width = 240;
    28. $NewForm->Height = 320;
    29.  
    30. $TApplication->Run();
     
  3. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    в этом листинге тоже ничего необычного. можно простыми русскими словами пояснить в каком месте и какая нестандартная МАГИЯ происходит?
     
  4. Tester1

    Tester1 Новичок

    С нами с:
    23 янв 2015
    Сообщения:
    15
    Симпатии:
    0
    Именно в этом (New TForm)->AsInstance->MetaclassType
    Или в этом $sSkinProvider1->SkinData->FSkinManager = $sSkinManager1;

    Этих свойств, AsInstance, MetaclassType, SkinData, FSkinManager. Нету вообще в классе
    То есть, он служит для облегченного управления классами другого ООП

    Добавлено спустя 33 минуты 27 секунд:
    Сделал так, но для get нужно вызывать WPDGet, может что-то можно придумать ?

    Код (Text):
    1.  
    2.                 private $Get;
    3.                 public function __get($Name) {
    4.                     $this->$Name =  $this->WPD__Properties($Name);
    5.                     return $this;
    6.                 }
    7.  
    8.                 public function __set($Name, $v) {
    9.                     if( is_array($v)) {
    10.                         if ($v !== false)
    11.                             $this->Get = (($v[1] == 7) && ($v[1] == 19)) ? PropertiesValueWPD($v, $Name) : $v;
    12.                         else
    13.                             $this->Get = null;
    14.                     } else $this->WPD__Properties($Name, [$v]);
    15.                 }
    16.                 function WPDGet() {
    17.                     return $this->Get;
    18.                 }