note 93072 added to language.oop5.overloading
| From: | kexianbin at diyism dot com | Date: | Fri, 21 Aug 2009 18:29:17 +0000 |
| Subject: | note 93072 added to language.oop5.overloading | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-159760@lists.php.net to get a copy of this message | ||
By using __call, we can use php as using jQuery:
<?
//SoWork PHP Framework
define('this', mt_rand());
$o='so_work';
class cls_so_work
{function __call($fun, $pars)
{foreach ($pars as &$v)
{if ($v===this)
{$v=$this->val;
break;
}
}
$tmp=eval('return
defined("'.$fun.'")?constant("'.$fun.'"):"'.$fun.'";');
$this->val=call_user_func_array($tmp, $pars);
return $this;
}
function cls_so_work($obj)
{$this->val=isset($obj)?$obj:null;
}
}
function so_work($obj)
{if (isset($obj))
{return new cls_so_work($obj);
}
else
{if (!isset($GLOABALS['so_work']))
{$GLOABALS['so_work']=new cls_so_work();
}
else
{$GLOABALS['so_work']->val=null;
}
return $GLOABALS['so_work'];
}
}
define('echo', 'my_echo');
function my_echo($obj)
{echo $obj;
return $obj;
}
$o('abcd')->substr(this, 2, 2)->strlen(this)->echo(this);
$o()->substr('abcd', 1, 3)->strlen(this)->echo(this);
?>
----
Server IP: 208.69.120.35
Probable Submitter: 222.44.198.104
----
Manual Page -- http://www.php.net/manual/en/language.oop5.overloading.php
Edit -- https://master.php.net/note/edit/93072
Del: integrated -- https://master.php.net/note/delete/93072/integrated
Del: useless -- https://master.php.net/note/delete/93072/useless
Del: bad code -- https://master.php.net/note/delete/93072/bad+code
Del: spam -- https://master.php.net/note/delete/93072/spam
Del: non-english -- https://master.php.net/note/delete/93072/non-english
Del: in docs -- https://master.php.net/note/delete/93072/in+docs
Del: other reasons-- https://master.php.net/note/delete/93072
Reject -- https://master.php.net/note/reject/93072
Search -- https://master.php.net/manage/user-notes.php