<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://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://jackxiang.com/post//</link>
<title><![CDATA[ [实践OK]深入理解PHP原理之变量分离/引用(Variables Separation) ]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[Php/Js/Shell/Go]]></category>
<pubDate>Thu, 11 Aug 2016 07:41:56 +0000</pubDate> 
<guid>http://jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	背景： 深入理解PHP原理之变量分离/引用(Variables Separation)&nbsp;&nbsp; 之自己+1，这个refcount是否+1的问题。<br/>Q:<br/>有时候会在原有数值的基础上改变吧 比如$var++<br/>A:两种情况，那个对象就不测试了：<br/>情况1，字符：<br/><textarea name="code" class="php" rows="15" cols="100">
&lt;?php
&nbsp;&nbsp; 
&nbsp;&nbsp; $var = &quot;jackX&quot;;
&nbsp;&nbsp; debug_zval_dump($var);//当执行debug_zval_dump($var)的时候，$var会以传值的方式传递给debug_zval_dump，也就是会导致var的refcount加1。（运行完该debug_zval_dump后它又还回去了。）
&nbsp;&nbsp; $var++;
&nbsp;&nbsp; debug_zval_dump($var);
?&gt;
</textarea><br/><br/>---------- 调试PHP ----------<br/>string(5) &quot;jackX&quot; refcount(2)<br/>string(5) &quot;jackY&quot; refcount(2)<br/><br/>输出完成 (耗时 0 秒) - 正常终止<br/><br/><br/>情况2，整数：<br/><textarea name="code" class="php" rows="15" cols="100">
&lt;?php
&nbsp;&nbsp; 
&nbsp;&nbsp; $var = (int)1;
&nbsp;&nbsp; debug_zval_dump($var); //传值给debug_zva_dump也会算一次，+1。
&nbsp;&nbsp; $var++;
&nbsp;&nbsp; debug_zval_dump($var);
?&gt;
</textarea><br/><br/>---------- 调试PHP ----------<br/>long(1) refcount(2)<br/>long(2) refcount(2)<br/><br/>输出完成 (耗时 0 秒) - 正常终止<br/><br/>说明，$var++; 并没有改变自己的refcount值。而像:$var_dup = $var;就会+1了哟:<br/><br/><textarea name="code" class="php" rows="15" cols="100">
&lt;?php
&nbsp;&nbsp; 
&nbsp;&nbsp; $var = &quot;jackX&quot;;
&nbsp;&nbsp; debug_zval_dump($var);
&nbsp;&nbsp; $var++;
&nbsp;&nbsp; $var_dup = $var;

&nbsp;&nbsp; debug_zval_dump($var);
?&gt;
</textarea><br/><br/>---------- 调试PHP ----------<br/>string(5) &quot;jackX&quot; refcount(2)<br/>string(5) &quot;jackY&quot; refcount(3)&nbsp;&nbsp;&lt;---看，这儿+1，等于3了,$var_dup = $var;会加1，得证。<br/><br/>输出完成 (耗时 0 秒) - 正常终止<br/>实践来源：http://www.laruence.com/2008/09/19/520.html<br/><br/><br/>疑问：<br/><textarea name="code" class="php" rows="15" cols="100">
&lt;?php
&nbsp;&nbsp; $var = &quot;laruence&quot;; //var.refcount=1
&nbsp;&nbsp; $var_dup = $var;&nbsp;&nbsp; //var.refcount=2
&nbsp;&nbsp; debug_zval_dump($var_dup); //refcount=3
&nbsp;&nbsp; debug_zval_dump($var);// refcount=3 疑问：既然第3行是同一个refcount为何debug_zval_dump后不+1还是3呢？估计掩盖了一些细节没说。
&nbsp;&nbsp; $var = 1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp; debug_zval_dump($var);
&nbsp;&nbsp; debug_zval_dump($var_dup);
?&gt;
</textarea><br/><br/>---------- 调试PHP ----------<br/>string(8) &quot;laruence&quot; refcount(3)<br/>string(8) &quot;laruence&quot; refcount(3)<br/>long(1) refcount(2)<br/>string(8) &quot;laruence&quot; refcount(2)<br/><br/>输出完成 (耗时 0 秒) - 正常终止<br/><br/>可能是：<br/>作为函数的参数穿进去的时候,函数的实参使用了,所以+1,函数电用完,实参也回收了,所以变回2,应该是这样，实践如下：<br/><textarea name="code" class="php" rows="15" cols="100">
&lt;?php
&nbsp;&nbsp; $var = &quot;jackxiang&quot;;
&nbsp;&nbsp; $var_dup = $var;
&nbsp;&nbsp; unset($var);
&nbsp;&nbsp; debug_zval_dump($var_dup);
&nbsp;&nbsp; debug_zval_dump($var_dup);
&nbsp;&nbsp; debug_zval_dump($var_dup);
?&gt;
</textarea><br/>---------- 调试PHP ----------<br/>string(9) &quot;jackxiang&quot; refcount(2)<br/>string(9) &quot;jackxiang&quot; refcount(2)<br/>string(9) &quot;jackxiang&quot; refcount(2)<br/><br/>输出完成 (耗时 0 秒) - 正常终止<br/><br/>运行debug_zval_dump后不是又变回去了？按这样说，那前面的结论都TM错了，$var ++，其refcount也是加了1的。这就是结论。要看是这么玩的，得看PHP这块的源代码。<br/><br/>
]]>
</description>
</item><item>
<link>http://jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论]  [实践OK]深入理解PHP原理之变量分离/引用(Variables Separation) ]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>