Page 1 of 2 12 LastLast
Results 1 to 10 of 270

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

Hybrid View

  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
    подниматель пингвинов crazy-mike's Avatar
    Join Date
    Nov 2006
    Location
    L'viv
    Posts
    179,963

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

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

  5. #5
    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
    Повышайте свой интеллект и вы станете монстр (С) Островский

  6. #6
    подниматель пингвинов 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 )

  7. #7
    Excellent for your choice algoritm's Avatar
    Join Date
    Jan 2008
    Location
    Moscow
    Posts
    1,901

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

    Quote Originally Posted by CatOfCheshire
    ..................
    программа сама можыт его генерировать и
    сразу жы исполнять, наверно вот в чем ценность.
    Такая "ценность" есть во всех современных языках и является менеджингом памяти, но структура и система управления этим может быть придумана очень по-разному. :cheer:

  8. #8
    To the moon! Olezhik's Avatar
    Join Date
    Jun 2002
    Location
    Los Angeles, Ca
    Posts
    27,435

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

    Если вы нехотите платить [alexa] за статус репорт, то вот вам такой маленки хак ;)


    Scrape Alexa Class

    Code:
    class alexa {
        private $badclasses;
        private $site;
        private $cache;
    
        function alexa() {
            preg_match_all('#\.([a-z0-9]+) \{#i',file_get_contents('http://client.alexa.com/common/css/scramble.css'),$this->badclasses);        
        }
        private function descramble ($matches) {
            return in_array($matches[1],$this->badclasses[1])?'':$matches[2];
        }
        public function stats ($site, $section = 4, $item = 5) {
            if (!is_array($this->cache[$site])) {
                $items = array();
                $html = preg_replace('#&nbsp;#','',preg_replace('#(?:<|&lt;)!--.+?--(?:>|&gt;)#','',file_get_contents('http://www.alexa.com/data/details/traffic_details/' . $site)));
                preg_match_all('#</th></tr><tr>.+?</tr>#',$html,$tables);
                
                for ($i=0,$len=count($tables[0]); $i<$len; $i++) {
                    preg_match_all('#<td>(.+?)</td>#',$tables[0][$i],$info);
                    for ($i2=0,$len2=count($info[1]); $i2<$len2; $i2++) {
                        $info[1][$i2] = preg_replace('#<img alt="(\w+)".+?>#','$1 ',$info[1][$i2]);
                        $items[$i][] = preg_replace_callback('#<span class="(.+?)">(.+?)</span>#im',array(get_class($this), 'descramble'),$info[1][$i2]);
                    }
                }
                $this->cache[$site] = $items;
            }
            if ($section == 4 && $item == 5) {
                return $this->cache[$site];
            } elseif ($item == 5) {
                return $this->cache[$site][$section];
            } else {
                return $this->cache[$site][$section][$item];
            }
        }
    }
    использовать вот-так:

    Code:
    $alexa = new alexa;[/highlight][highlight=php]print_r($alexa->stats('russianamerica.com'));
    print_r($alexa->stats('russianamerica.com',1));
    print_r($alexa->stats('russianamerica.com',1,1));
    результат
    Code:
    X-Powered-By: PHP/5.2.0
    Content-type: text/html
    
    Array
    (
        [0] => Array
            (
                [0] => N/A*
                [1] => 0.00005%
                [2] => 0.00021%
                [3] => down 36%
            )
    
        [1] => Array
            (
                [0] => N/A*
                [1] => 1,775,644
                [2] => 433,279
                [3] => down 137,612
            )
    
        [2] => Array
            (
                [0] => N/A*
                [1] => 1.3
                [2] => 2.8
                [3] => down 3%
            )
    
    )
    
    Array
    (
        [0] => N/A*
        [1] => 1,775,644
        [2] => 433,279
        [3] => down 137,612
    )
    
    1,775,644

    Да я понимаю, это не самы лутши пример, ну как говорица чем богаты :34:
    Палец от станка не далеко падает.

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

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

    Quote Originally Posted by Olezhik
    ну как говорица чем богаты :34:
    В php5 - прикол , который меня очень сильно "рассмешил" (но работает):
    PHP Code:
      $a=1
      
    class yoyo extends yoprst {
         public final function 
    __construct()
         { global 
    $a; // !!!!!!!!!!!!!!
            
    ............
         }
      } 
    Страннная эта самая "объектно-ориентированность" и "constraint programming implementation". Доступ к "глобальным переменным" внутри "методов класса" остался практически таким же как "без всяких там объектов".

  10. #10
    Неадекватный 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:

Page 1 of 2 12 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