<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[观夏Note]]></title> 
<link>//gm.angeldm.com/index.php</link> 
<description><![CDATA[新技术番]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[观夏Note]]></copyright>
<item>
<link>//gm.angeldm.com/post//</link>
<title><![CDATA[PHP CLASS用法]]></title> 
<author>果面 &lt;admin@yourname.com&gt;</author>
<category><![CDATA[网页相关]]></category>
<pubDate>Sun, 06 Dec 2009 05:14:36 +0000</pubDate> 
<guid>//gm.angeldm.com/post//</guid> 
<description>
<![CDATA[ 
	刚在大略浏览了一下首页更新的那篇有关Class的文章（指PHPE的那篇 http://www.phpe.net/articles/389.shtml ），很不错，建议看看。<br/>对类的摸索～～俺用了半年时间才大概理解类的作用和实现。主要是没有一篇能让我理解的文章（之前没接触过任何OO的东西）。<br/>以我的观点来说说PHP中的Class，用于表达的语言都是非正式的语言，也不能确定是否正确。<br/><br/>建立一个类很简单。<br/><br/><div class="code"><br/>&lt;?php<br/>class my_class &#123;&#125;<br/>?&gt;<br/></div><br/><br/>类到底干什么呢？很多人都是什么黑匣子，我在这里称它为一个独立的整体。我们只知道类名，而不知道里面有什么东西。那么，该如何使用这个类呢？<br/>首先：要知道它里面是否定义了公共的变量－－专业术语上称它为“属性”。<br/>其次：要知道它里面定义了什么函数－－专业术语中称它为“方法”。<br/>我都被这些专业术语搞糊涂了，所以干脆不理它了。<br/><br/>类中的如何定义公共变量，它有什么作用呢？<br/><br/>很简单，我们来扩充 my_class 类<br/><div class="code"><br/>&lt;?php<br/>class my_class<br/>&#123;<br/>var $username;<br/> &#125;<br/>?&gt;<br/></div><br/>看上面很简单，我们定义了一个公共的变量，只是用 var+空格+普通变量名构成。它有什么用呢？考虑一下函数中，如果我们要访问函数外的变量，是不是要先 global 一下呢？这个想实现的效果也是如此，它是想让这个类中的所有函数都能访问它，而它区别于函数的一个地方，是类的外部也可以访问这个变量，我随后再讲外部如何访问它。还有一个区别，不能用复杂的语句给这个变量赋值（具体的等理解了类以后自己去看规则）。给它一个默认值<br/><div class="code"><br/>&lt;?php<br/>class my_class<br/>&#123;<br/>var $username = &quot;深空&quot;;<br/>&#125;<br/>?&gt;<br/></div><br/>OK，定义了一个公共的变量了，接下来定义一个函数（也就是所谓的“方法”）。<br/><div class="code"><br/>&lt;?php<br/>class my_class<br/>&#123;<br/> var $username = &quot;深空&quot;;<br/><br/>function show_username()<br/>&#123;<br/>&#125;<br/>&#125;<br/>?&gt;<br/></div><br/>这个定义函数跟普通的定义函数形式上没什么区别了。简单就好，定义一个打印 $username 的函数：<br/><div class="code"><br/>&lt;?php<br/>class my_class<br/>&#123;<br/>var $username = &quot;深空&quot;;<br/><br/>function show_username($username)<br/>&#123;<br/>echo $username;<br/>&#125;<br/>&#125;<br/>?&gt;<br/></div><br/>到这里可能某些人开始迷糊了，呵呵，最关键的就是这里了，看清楚了。现在有三个 $username 了。到底哪个是哪个啊～～<br/>函数所带的行参，不用解释了吧？这个函数功能就是打印行参所接收的值，也就是如果：<br/><div class="code"><br/>&lt;?php<br/>show_username(&quot;猪头深空&quot;);<br/>?&gt;<br/></div><br/>那么它将打印 “猪头深空” ，就这么简单。<br/>怎么样访问这个函数？肯定不是我上面说的那样直接 show_username(”猪头深空”); 了，别急，类有类的一套。如下：<br/><div class="code"><br/>&lt;?php<br/>$Name = new my_class();<br/>?&gt;<br/></div><br/>这样就初始化上面的那个 my_class 的类了，并把这个对象赋给变量 $Name ，你可以这样理解，这个变量就代表整个类了，呵呵。<br/>使用类中的函数：<br/><div class="code"><br/>&lt;?php<br/>$Name-&gt;show_username(&quot;猪头深空&quot;);<br/>?&gt;<br/></div><br/>晕了，为什么这么复杂？还要箭头？其实很形象的。本来已经把类给了变量 $Name 了是吧？也就是 $Name 代表了这个类，然后用一个箭头指向类中的 show_username 这个函数。就是这么简单，也就是说，这个函数是这个类中的，而不是其他的函数－－你就理解为表示一个区别吧，呵呵。<br/><br/>试试看哦，打印出 “猪头深空” 这四个字了。你说为什么要这么复杂？用函数不是也能实现么？我说，这么简单的你当然看不出好处了，我们继续扩充。<br/>还有一个疑问：刚才说的“公共的变量”怎么一点用处都没有呢？为什么这个函数不会自动接收这个公共变量 var $username 中的默认值？也就是如果我使用：<br/><div class="code"><br/>&lt;?php<br/>$Name-&gt;show_username($username);<br/>?&gt;<br/></div><br/>会有什么结果呢?答案是没有任何输出。因为你没有给形参 $username 一个值。<br/>那么该怎么使用这个公共的变量？我们来修改一下这个类:<br/><div class="code"><br/>&lt;?php<br/>class my_class<br/>&#123;<br/>var $username = &quot;深空&quot;;<br/><br/>function show_username()<br/>&#123;<br/>echo $this-&gt;username;<br/>&#125;<br/>&#125;<br/>?&gt;<br/></div><br/>哇靠，不是吧，这回脸形参都没有了？还多了一个$this->，晕了不是，呵呵。其实这也是类的一个最大的方便之处。<br/>$this 的作用：访问一个公共的变量，或者类里面的函数。<br/>访问？这么专业？其实就是用 $this->username 来代替 var $username 而已拉，$this 用来说明它是公共的。可以访问的，函数外部的东西。<br/>试试看：<br/><div class="code"><br/>&lt;?php<br/>$Name-&gt;show_username();<br/>?&gt;<br/></div><br/>看到了吧，终于打印 “深空” 这两个字了，娃哈哈。<br/>我不打印“深空”这两个字，我要打印“猪头深空”，怎么办？很简单，我们给这个公共变量重新赋值拉。服了你了。<br/><div class="code"><br/>&lt;?php<br/>$Name-&gt;username = &quot;猪头深空&quot;;<br/>?&gt;<br/></div><br/>这个能明白意思么？$Name->username 表示的是类里面的这个公共变量。等号赋值不用我解释了。<br/><br/>我们再来打印看看<br/><div class="code"><br/>&lt;?php<br/>$Name-&gt;show_username();<br/>?&gt;<br/></div><br/>哈哈，终于打印“猪头深空”了。不错吧，很方便吧，不用形参也能任意修改打印值哦～～。<br/><br/>不过单单打印一个名称也太没意思了，我们说点欢迎的话吧，来扩充一下这个类，创建一个名叫 Welcome 的函数：<br/><div class="code"><br/>&lt;?php<br/>class my_class<br/>&#123;<br/>var $username = &quot;深空&quot;;<br/><br/>function show_username()<br/>&#123;<br/>echo $this-&gt;username;<br/>&#125;<br/><br/>function Welcome()<br/>&#123;<br/>&#125;<br/>&#125;<br/>?&gt;<br/></div><br/>恩，实现什么功能好呢？简单点吧，就实现在名字前面有 “欢迎” 两个字好了<br/><div class="code"><br/>&lt;?php<br/>class my_class<br/>&#123;<br/>var $username = &quot;深空&quot;;<br/><br/>function show_username()<br/>&#123;<br/>echo $this-&gt;username;<br/>&#125;<br/><br/>function Welcome()<br/>&#123;<br/>echo &quot;欢迎&quot;;<br/>$this-&gt;show_username();<br/>&#125;<br/>&#125;<br/>?&gt;<br/></div><br/>第二次看到 $this 了吧？$this->show_username(); 干什么用呢？其实它就是调用 show_username 这个函数，用 $this 来表示这个函数在类中并且和 Welcome 函数平行，而不是在其他地方（比如Welcome函数中）。<br/><br/>Welcome 函数实现的功能很简单，首先打印两个字”欢迎”，然后接下去执行 show_username 函数，打印名字。<br/><br/>来试试这个函数吧：<br/><div class="code"><br/>&lt;?php<br/>$Name-&gt;Welcome();<br/>?&gt;<br/></div><br/>看到了吧，打印出“欢迎深空”这四个字了。<br/><br/>可是我要打印“欢迎猪头深空”，怎么办？我服了你了，我们给公共变量 var $username 一个值吧：<br/><div class="code"><br/>&lt;?php<br/>$Name-&gt;username = &quot;猪头深空&quot;;<br/>?&gt;<br/></div><br/>接下去打印欢迎语：<br/><div class="code"><br/>&lt;?php<br/>$Name-&gt;Welcome();<br/>?&gt;<br/></div><br/>嘿嘿，终于打印“欢迎猪头深空”了。<br/><br/>怎么样？明白了类的用法了么？好处在于能够调用类中的任意函数，只要用 $this 指出来，可以改变一个公共变量的值，可以在类中的函数中使用这个公共变量。………多了去了，它的应用等待你去发现了。
]]>
</description>
</item><item>
<link>//gm.angeldm.com/read.php?&amp;guid=0#topreply</link>
<title><![CDATA[[评论] PHP CLASS用法]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>//gm.angeldm.com/read.php?&amp;guid=0#topreply</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>