Page 1 of 27 1234567891011 ... LastLast
Results 1 to 10 of 270

Thread: Объектно-ориентированный PHP5 рулит!

  1. #1
    подниматель пингвинов crazy-mike's Avatar
    Join Date
    Nov 2006
    Location
    L'viv
    Posts
    179,963

    Default Объектно-ориентированный PHP5 рулит!

    <?
    //
    // CopyLeft by Me
    //
    abstract class xhtmlObj {
    abstract public function is(); abstract public function add(xhtmlObj $v);
    }


    class javaScript extends xhtmlObj {
    private $p;
    public function __construct($v="") { $this->p='<script type="text/javascript" language="Javascript">'; $this->p.="\n"; $this->p.="// <![CDATA[\n"; $this->p.=$v;
    }

    final public function cat($v)
    { $this->p.="\n".$v;
    }

    final public function add(xhtmlObj $v)
    { $this->p.=$v->is();
    }

    final public function is()
    { $q=$this->p;
    $q.="\n";
    $q.="// ]]>\n";
    $q.='</script>'; return $q;
    }
    }

    class xhtmlHead extends xhtmlObj {
    private $p;

    public function __construct($tit) {
    $this->p='<head>';
    $this->p='<meta http-equiv="Content-Type" content="text/html; ';
    $this->p.=' charset=koi8-u; lang=uk">';
    $this->p.='<title>'.$tit.'</title>';
    }

    final public function add(xhtmlObj $v)
    { $this->p.=$v->is();
    }

    final public function is()
    { $q=$this->p.'</head>'; return $q;
    }

    }

    class xhtmlBody extends xhtmlObj {
    private $p;

    public function __construct($zclass="",$style="",$onload="")
    { $this->p='<body ';
    if($zclass!='') $this->p.='class="'.$zclass.'" ';
    if($style!='') $this->p.='style="'.$style.'" ';
    if($onload!='') $this->p.='onload="'.$onload.'" ';
    $this->p.='>';
    }

    final public function cat($v)
    { $this->p.=$v;
    }

    final public function add(xhtmlObj $v)
    { $this->p.=$v->is();
    }

    final public function is()
    { $q=$this->p.'</body>'; return $q;
    }
    }

    class xhtmlTag extends xhtmlObj {
    private $p;
    private $ztag;
    private $attr;
    private $addon;

    function __construct($v,$qv=NULL)
    { $this->ztag=$v; $this->attr=array();
    $this->p=''; if($qv!=NULL) $this->p=$qv;
    $this->addon='';
    }

    final public function setA($name,$val)
    { $this->attr[$name]=$val;
    }

    final public function setC($val)
    { $this->addon.=' '.$val;
    }

    final public function cat($v)
    { $this->p.=$v;
    }


    final public function add(xhtmlObj $v)
    { $this->p.=$v->is();
    }

    final public function is()
    { $au=array_keys($this->attr);
    $n=count($au);
    $i=0; $d2='</'.$this->ztag.'>';
    $d1='<'.$this->ztag;
    while($i<$n) { $k=$au[$i]; $v=$this->attr[$k];
    $d1.=' '.$k.'="'.$v.'"'; $i++;
    };
    $d1.=$this->addon;
    if($this->p=='') { $d1.=' />'; $q=$d1; }
    else {
    $d1.=" >"; $q=$d1.$this->p.$d2;
    };
    return $q;
    }

    }

    class xhtml extends xhtmlObj {
    private $p;

    public function __construct($v)
    { $this->p=$v;
    }

    final public function add(xhtmlObj $v)
    { $this->p.=$v->is();
    }

    final public function is()
    { $q=$this->p; return $q;
    }
    }

    class xhtmlPage extends xhtmlObj {
    public $p;

    private function prologue() {
    $this->p='<?xml version="1.0" encoding="koi8-u" ?>';
    $this->p.='<!DOCTYPE HTML PUBLIC ';
    $this->p.='"-//W3C/DTD XHTML 1.0 Transitional//EN" ';
    $this->p.='"http://www.w3.org/TR/xhtmml1/DTD/xhtml1-transitional.dtd">';
    $this->p.='<html xmlns=http://www.w3.org/1999/xhtml xml:lang="uk" lang="uk">';
    }

    public function __construct(xhtmlHead $a=NULL,xhtmlBody $b=NULL)
    { $this->prologue();
    if($a!=NULL) $this->add($a);
    if($b!=NULL) $this->add($b);
    }

    public function is()
    { $q = $this->p.'</html>';
    return $q;
    }

    final public function add(xhtmlObj $v)
    { $this->p.=$v->is();
    }

    final public function see()
    { echo $this->is();
    }
    }

    class xhtmlStyle extends xhtmlTag {
    public function __construct($v) {
    xhtmlTag::__construct('style');
    $this->setA('type','text/css');
    $this->setA('media','all');
    $this->cat($v);
    }
    }

    class xhtmlImg extends xhtmlTag {
    public function __construct($fn)
    { xhtmlTag::__construct('img');
    $this->setA('src',$fn);
    }
    }

    class xhtmlA extends xhtmlTag {
    public function __construct($href,$txt='')
    { xhtmlTag::__construct('a',$txt);
    $this->setA('href',$href);
    }
    }

    ?>

    Можно вообще спрятать html !!!!!
    ;)
    Например вот так:
    <?
    require "../../xobj/myhtml.php";
    $p=new xhtmlPage();
    $p->add(new xhtmlHead("Hello!"));
    $b=new xhtmlBody("","background :yellow;","");
    $b->add(new xhtmlTag("b","Hello,world!"));
    $p->add($b); $p->see();
    ?>
    Last edited by crazy-mike; 09-27-2007 at 03:31 AM.
    Жизнь дается человеку один раз и прожить ее надо так, чтобы не ошибиться в рецептах.
    Строить Асгардию побуждает тьма, посетившая людские души

  2. #2
    подниматель пингвинов crazy-mike's Avatar
    Join Date
    Nov 2006
    Location
    L'viv
    Posts
    179,963

    Default Re: Объектно-ориентированный PHP5 рулит!

    Продолжение навязчивой идеи:
    Таким способом - можно отображать wxWidgets или даже MFC на xhtml!!!!!!
    Или даже на swing,JFC. По внешнему виду такой код PHP не очень сильно отличается от Java. (и даже exceptions есть)
    Но самое элегантное - генерировать внутри final метода код в системе команд какого-нибудь микропроцессора. И тогда php - становится очень удобным языком для программирования встроенных систем - с очень просто реализованными средствами эмуляции.
    Last edited by crazy-mike; 09-27-2007 at 10:39 AM.
    Жизнь дается человеку один раз и прожить ее надо так, чтобы не ошибиться в рецептах.
    Строить Асгардию побуждает тьма, посетившая людские души

  3. #3
    T-16 Tohuvabohu-Jurokugou Sixteen's Avatar
    Join Date
    Dec 2005
    Posts
    56,588

    Default Re: Объектно-ориентированный PHP5 рулит!

    я лублу php5
    это вам не какой нибудь ванючий ASP.NET
    с его мерзостными фигнями. это ваще нармальный езык, в отличие от.
    на нем приятно песать уеб сайты. я нидумал про то что на нем можно
    песать ресурсы для формов в программах, да таки можно. но главной
    ценностью будит то што программа сама можыт его генерировать и
    сразу жы исполнять, наверно вот в чем ценность.
    Fabricati Diem PVNC
    Повышайте свой интеллект и вы станете монстр (С) Островский

  4. #4
    Неадекватный YUM's Avatar
    Join Date
    Sep 2004
    Location
    СПб
    Posts
    18,267

    Default Re: Объектно-ориентированный PHP5 рулит!

    Quote Originally Posted by crazy-mike
    Продолжение навязчивой идеи:
    Таким способом - можно отображать wxWidgets или даже MFC на xhtml!!!!!!
    Или даже на swing,JFC. По внешнему виду такой код PHP не очень сильно отличается от Java. (и даже exceptions есть)
    Но самое элегантное - генерировать внутри final метода код в системе команд какого-нибудь микропроцессора. И тогда php - становится очень удобным языком для программирования встроенных систем - с очень просто реализованными средствами эмуляции.
    Майк, ты это...короче, скажи куда пальцем тыкнуть, что оно сработало?:rolleyes:
    Когда я пьян...а пьян всегда я :beer:

  5. #5
    подниматель пингвинов crazy-mike's Avatar
    Join Date
    Nov 2006
    Location
    L'viv
    Posts
    179,963

    Default Re: Объектно-ориентированный PHP5 рулит!

    Quote Originally Posted by YUM
    Майк, ты это...короче, скажи куда пальцем тыкнуть, что оно сработало?:rolleyes:
    :grum: "Чтобы заработало" - по Copy-Paste прямо из "поста" записать в файл myhtml.php. И даже в таком виде можно пользоваться.
    :evillaugh:
    Я привел работающий пример базовых классов из которых даже в таком виде можно строить web-страничку. Идея вообще-то очень простая: по new создается пустая строка. По add добавляются элеметы , соответствующие тегам html.
    По is() = стоится реализация объекта в виде символьной строки (с начальным и конечным тегом html). На самом деле на основе чего-то похожего можно строить любое расширение с любыми интерфейсами. И (как я уже писал) метод is() может соотеветствовать не только символьной строке - но и любому коду в любой системе команд. В так называемом "web-программировании" таким способом очень удобно абстрагироваться от конкретного диалекта XHTML (меняем реализацию базовых классов на заголовки WAP WML и получаем "сайт" для WAP 1.0 к примеру). И какому-нибудь "хроническому веб-дизайнеру" в этом случае вообще можно ничего не знать об HTML или XHTML.
    ;) Только мне больше всего в таком подходе нравится "управляемость изменений"...И еще то - что для XHTML Strict не нужно следить за закрывающими тегами. (сами закрываются при использоании объекта)
    Last edited by crazy-mike; 09-28-2007 at 08:48 AM.
    Жизнь дается человеку один раз и прожить ее надо так, чтобы не ошибиться в рецептах.
    Строить Асгардию побуждает тьма, посетившая людские души

  6. #6
    подниматель пингвинов crazy-mike's Avatar
    Join Date
    Nov 2006
    Location
    L'viv
    Posts
    179,963

    Default Re: Объектно-ориентированный PHP5 рулит!

    Quote Originally Posted by CatOfCheshire
    но главной
    ценностью будит то што программа сама можыт его генерировать и
    сразу жы исполнять, наверно вот в чем ценность.
    самое прикольное - что программа может даже генерировать код для другого интерпретатора. И оконечные устройства могут быть не обязательно web-броцзерами (а даже микроконтроллерами) - а "прикладное программирование" при этом практически не меняется.
    Жизнь дается человеку один раз и прожить ее надо так, чтобы не ошибиться в рецептах.
    Строить Асгардию побуждает тьма, посетившая людские души

  7. #7
    T-16 Tohuvabohu-Jurokugou Sixteen's Avatar
    Join Date
    Dec 2005
    Posts
    56,588

    Default Re: Объектно-ориентированный PHP5 рулит!

    Quote Originally Posted by crazy-mike
    самое прикольное - что программа может даже генерировать код для другого интерпретатора. И оконечные устройства могут быть не обязательно web-броцзерами (а даже микроконтроллерами) - а "прикладное программирование" при этом практически не меняется.
    А есть вот есчо один прекол. Пасматри на чeм сидишь как говорицца.
    Это жe внучег phpBoarda, xaaa xaaa!
    Fabricati Diem PVNC
    Повышайте свой интеллект и вы станете монстр (С) Островский

  8. #8
    подниматель пингвинов crazy-mike's Avatar
    Join Date
    Nov 2006
    Location
    L'viv
    Posts
    179,963

    Default Re: Объектно-ориентированный PHP5 рулит!

    Quote Originally Posted by CatOfCheshire
    Это жe внучег phpBoarda, xaaa xaaa!
    :grum:
    Не совсем. Там много похожих есть под общим названием "движки для создания вебсайтов" (или даже "для раскручивания форумов"). Идиотская хреновина phpAdmin - тоже "оттуда" (полоумный внучек ;) )
    Только оно все - такое "занудно-большое" (и все обычно было для HTML4 )
    Жизнь дается человеку один раз и прожить ее надо так, чтобы не ошибиться в рецептах.
    Строить Асгардию побуждает тьма, посетившая людские души

  9. #9
    редкое животное цепной_кот's Avatar
    Join Date
    Feb 2004
    Location
    Los Angeles
    Posts
    11,568

    Default Re: Объектно-ориентированный PHP5 рулит!

    Люди, кто здесь? :confused:

    не читай, внучек, газету Правда: в ней даже про погоду врут...

  10. #10
    T-16 Tohuvabohu-Jurokugou Sixteen's Avatar
    Join Date
    Dec 2005
    Posts
    56,588

    Default Re: Объектно-ориентированный PHP5 рулит!

    Quote Originally Posted by crazy-mike
    :grum:
    Не совсем. Там много похожих есть под общим названием "движки для создания вебсайтов" (или даже "для раскручивания форумов"). Идиотская хреновина phpAdmin - тоже "оттуда" (полоумный внучек ;) )
    Только оно все - такое "занудно-большое" (и все обычно было для HTML4 )
    хочеш новый напишым? с xhtml, с аджаксом и с сабскрипшен
    листом который действительно че-то делаит (RSS фид вместо
    клаент пулла - штоб не надо было сидеть и жать F5 как бобегу)
    Fabricati Diem PVNC
    Повышайте свой интеллект и вы станете монстр (С) Островский

Page 1 of 27 1234567891011 ... LastLast

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Russian America Top. Рейтинг ресурсов Русской Америки. Terms of Service | Privacy Policy Рейтинг@Mail.ru