<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://www.jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://www.jackxiang.com/post//</link>
<title><![CDATA[代理模式较为核心的代码片段]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[WEB2.0]]></category>
<pubDate>Thu, 16 Jul 2009 09:30:12 +0000</pubDate> 
<guid>http://www.jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	<div class="code">&lt;?php<br/>class EchoParam<br/>&#123;<br/>&nbsp;&nbsp;function EchoValue($a,$b)<br/>&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;echo &quot;value = &quot;.$a*$b.&quot;&#92;n&quot;;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;function EchoValues($a,$b)<br/>&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;echo &quot;jjjj&quot;;<br/>&nbsp;&nbsp;&#125;<br/>&#125;<br/>class ClsFactory<br/>&#123;<br/>&nbsp;&nbsp;public static function CreateNoCheckModel($classname)<br/>&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;return new $classname;<br/>&nbsp;&nbsp;&#125;<br/>&#125;<br/>class Vmware<br/>&#123;&nbsp;&nbsp;<br/>&nbsp;&nbsp;public function doProx($method, $args)&nbsp;&nbsp;<br/>&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$model = ClsFactory::CreateNoCheckModel(&quot;EchoParam&quot;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;echo call_user_func_array ( array ($model, $method), $args);<br/>&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;public function __call($method, $args)<br/>&nbsp;&nbsp;&#123;&nbsp;&nbsp;var_dump($method);<br/>&nbsp;&nbsp;&nbsp;&nbsp;return $this-&gt;doProx($method, $args);<br/>&nbsp;&nbsp;&#125;<br/>&#125;<br/>$a = 1;<br/>$b = 88;<br/>$mwallobj = new Vmware();<br/>$mwallobj-&gt;EchoValue($a, $b);<br/>$mwallobj-&gt;EchoValues($a, $b);<br/>?&gt;</div><br/>这个$method 就是调用的函数名，这就给代理前作判断，而可以代理后就调用modle层的方法，正是因为类Vmware没有这个方法名，而modle层有这个方法名，达到了代理认证的目的。<br/><br/>结果：<br/><br/><div class="code">&#91;root@vm0000055 ~&#93;# php call_user_func_array.php <br/>string(9) &quot;EchoValue&quot;<br/>value = 88<br/>string(10) &quot;EchoValues&quot;<br/>jjjj</div><br/><br/>==========================================<br/>call_user_func_array函数也可以调用类内部的方法的:<br/>Class ClassA <br/>&#123; <br/>&nbsp;&nbsp;function bc($b, $c) &#123; <br/>&nbsp;&nbsp;&nbsp;&nbsp;$bc = $b + $c; <br/>&nbsp;&nbsp;&nbsp;&nbsp;echo $bc; <br/>&nbsp;&nbsp;&#125;<br/>&#125; <br/>call_user_func_array(array(&#039;ClassA&#039;,&#039;bc&#039;), array(&quot;111&quot;, &quot;222&quot;)); <br/>//显示 333 <br/>?&gt; 
]]>
</description>
</item><item>
<link>http://www.jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] 代理模式较为核心的代码片段]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://www.jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>