﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>PHP博客-China-PHPer-随笔分类-PHP基础知识</title><link>http://www.phpweblog.net/yemoo/category/17.html</link><description>PHP技术钻研修炼中...</description><language>zh-cn</language><lastBuildDate>Sat, 15 Mar 2008 10:34:39 GMT</lastBuildDate><pubDate>Sat, 15 Mar 2008 10:34:39 GMT</pubDate><ttl>60</ttl><item><title>PHP中str_replace函数的详解</title><link>http://www.phpweblog.net/yemoo/archive/2008/03/15/2971.html</link><dc:creator>Yemoo'S PHP Home</dc:creator><author>Yemoo'S PHP Home</author><pubDate>Sat, 15 Mar 2008 08:33:00 GMT</pubDate><guid>http://www.phpweblog.net/yemoo/archive/2008/03/15/2971.html</guid><wfw:comment>http://www.phpweblog.net/yemoo/comments/2971.html</wfw:comment><comments>http://www.phpweblog.net/yemoo/archive/2008/03/15/2971.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.phpweblog.net/yemoo/comments/commentRss/2971.html</wfw:commentRss><trackback:ping>http://www.phpweblog.net/yemoo/services/trackbacks/2971.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在实际的程序开发中，执行字符串替换操作是一件非常经常的事，对str_replace函数的实用也会非常频繁。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这段时间在看《PHP和MySQL Web开发》一书看到str_replace讲解，一段小提示写到：可以为str_replace的三个都使用数组传入，但讲解比较简单，于是决定自己的试验一下该函数在各个参数传入数组时的执行结果。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 函数原型：mixed str_replace(mixed needle,mixed new_needle,mixed haystack[,int &amp;count]);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; needle：要被替换的字符串，new_needle：替换用的字符串，haystack：操作字符串，count：替换次数【可选参数】<br>&nbsp;&nbsp;&nbsp;&nbsp; 我们重点试验前三个在使用数组是的执行方式：<br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在都不使用数组时，该函数直接使用new_needle替换所有的needle并返回替换后的字符串。如：str_replace("m","n","my name is jim!")返回ny nane is jin!<br><br>&nbsp;&nbsp;&nbsp;&nbsp; <strong>1、只对needle使用数组。<br></strong>&nbsp;&nbsp;&nbsp;&nbsp; 示例：str_replace(array('m','i'),'n',"my name is jim!");返回：ny nane ns jnn!<br>&nbsp;&nbsp;&nbsp;&nbsp; 可以看出，函数顺序性的对数组中每个字符串进行替换，并返回替换后的字符串。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>2、只对new_needle使用数组。</strong><br>&nbsp;&nbsp;&nbsp;&nbsp; 示例：str_replace('m',array('n','z'),"my name is jim!\n")返回：Arrayy naArraye is jiArray!<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 该替换比较有意思，如果只对第二个参数使用数组则函数将其作为字符串Array进行使用，将所有的needle替换为了数组。<br>&nbsp;&nbsp;&nbsp;&nbsp; <strong>3、只对haystack使用数组。</strong><br>&nbsp;&nbsp;&nbsp;&nbsp; 示例：str_replace("m","n",array("my name is jim!","the game is over!"))该语句执行结果返回一个数组，即分别为传入的两个字符串替换后的结果。<br>&nbsp;&nbsp;&nbsp;&nbsp; 如果输出数组内容会看到：ny nane is jin! the gane is over!<br><br>&nbsp;&nbsp;&nbsp;&nbsp; <strong>4、对needle和new_needle都使用数组</strong>。<br>&nbsp;&nbsp;&nbsp;&nbsp; 示例：str_replace(array("m","i"),array("n","z"),"my name is jim!")返回：ny nane zs jzn!<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;查看执行结果可以发现，如果前两个参数都使用数组则函数把数组各个对象项字符串进行了替换，及needle的第一项替换为new_needle的第一项。以此类推。&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如果needle数组比new_deedle长，例如：str_replace(array("m","i","s"),array("n","z"),"my name is jim!");返回：ny nane z jzn!可见，对于needle数组多出来的字符串被替换为了空串。<br>&nbsp;&nbsp;&nbsp;&nbsp; 如果new_needle数组比needle长，例如：str_replace(array("m","i"),array("n","z","x"),"my name is jim!")返回ny nane zs jzn!可见new_needle多余的项被忽略。<br>&nbsp;&nbsp;&nbsp;&nbsp; <strong>5、三个参数都使用数组。</strong><br>&nbsp;&nbsp;&nbsp;&nbsp; 例如：str_replace(array("m","i"),array("n","z"),array("my name is jim!","the game is over"))返回的数组内容：ny nane zs jzn!the gane zs over<br>&nbsp;&nbsp;&nbsp;&nbsp; 这个比较好理解，对两个字符串分别执行替换。<br><br>&nbsp;&nbsp;&nbsp; 简单总结下，防止自己忘记!</p>
<img src ="http://www.phpweblog.net/yemoo/aggbug/2971.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.phpweblog.net/yemoo/" target="_blank">Yemoo'S PHP Home</a> 2008-03-15 16:33 <a href="http://www.phpweblog.net/yemoo/archive/2008/03/15/2971.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>PHP基础知识学习总结--不断更新中</title><link>http://www.phpweblog.net/yemoo/archive/2008/01/05/2649.html</link><dc:creator>Yemoo'S PHP Home</dc:creator><author>Yemoo'S PHP Home</author><pubDate>Sat, 05 Jan 2008 10:05:00 GMT</pubDate><guid>http://www.phpweblog.net/yemoo/archive/2008/01/05/2649.html</guid><wfw:comment>http://www.phpweblog.net/yemoo/comments/2649.html</wfw:comment><comments>http://www.phpweblog.net/yemoo/archive/2008/01/05/2649.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.phpweblog.net/yemoo/comments/commentRss/2649.html</wfw:commentRss><trackback:ping>http://www.phpweblog.net/yemoo/services/trackbacks/2649.html</trackback:ping><description><![CDATA[1、PHP中变量都以$开头，如$a,$ab等都是变量，而函数名和常量则都是直接使用字符串/下划线开头。<br>2、定义常量使用define(name,value)的方式定义，注意常量只能包含字母数字下划线，且不能以数字开头。<br>3、定义的变量如果要在输出的字符串中引用则直接写在双引号中即可，如$a=" world";echo("hello$a");输出hello world。<br>4、php5中变量常量函数命名都支持汉字，但不建议使用。如$我="一个好人";echo($我)输出&#8220;我是好人&#8221;。<br>5、php中变量与变量及变量与常量等之间的连接符为.（点号）。如$a="a";$b="$b";echo($a.$b)输出ab。<br>6、php中全局变量与局部变量的范围完全分离，局部变量在全局不能访问，同时全局变量在函数等内部也访问不到。如
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #800080">$xp</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">global&nbsp;var!</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">&nbsp;func(){;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">echo</span><span style="COLOR: #000000">(</span><span style="COLOR: #800080">$xp</span><span style="COLOR: #000000">);&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;}</span></div>
将出现找不到变量$xp的错误提示。<br>7、几个常用的PHP常量：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font style="COLOR: #000000" color=#007700><strong>__FILE__：</strong>当前文件在服务器中的绝对存放路径：如</font><font color=#000000>D:\php\test\PHP-1.php<br>&nbsp;&nbsp;&nbsp;&nbsp; <font color=#007700><span style="COLOR: #000000"><strong>PHP_VERSION：</strong>服务器PHP的版本号，如<font color=#000000>5.2.3<br>&nbsp;&nbsp;&nbsp;&nbsp; <font style="COLOR: #000000" color=#007700><strong>PHP_OS：</strong>服务器操作系统，如WINNT。<br>&nbsp;&nbsp;&nbsp;&nbsp; <strong>TRUE/FALSE：</strong>代表true/false值。<br></font>8、php注释方式有三种，分别为：<br>&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: #339966">//</span> 单行注释<br>&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: #339966">/*</span> 多行注释 <span style="COLOR: #339966">*/<br></span>&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: #339966">#</span> unix shell方式注释<br>9、静态变量其实就是不能在外部访问的全局变量。<br>10、PHP中对于大小写的区别比较特殊：对于变量和常量定义是区分大小写的，而对于函数和类是不区分大小写的。<br>如定义了$TEst="test";则echo出$test、$TEST等都不会显示结果test。<br>而定义函数function test(){echo "test"}则不论使用TEST()还是teST()等都能正确输出结果test。<br><br></font></span><span style="COLOR: #000000">11、有关php函数参数的几点说明：<br></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: #000000">(1)可以为每个参数指定默认值,如function test($arg1="默认值1"){}。&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (2)可以在参数列表中定义某个参数使用传值方式还是传地址方式（使用&amp;+参数变量）。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如function test(&amp;arg1)。<br></span>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">&lt;?</span><span style="COLOR: #000000">php<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">&nbsp;test(</span><span style="COLOR: #800080">$arg1</span><span style="COLOR: #000000">,</span><span style="COLOR: #800080">$arg2</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">arg2</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&amp;</span><span style="COLOR: #800080">$arg3</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">arg3</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #800080">$arg4</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">arg4</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #800080">$br</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">\n&lt;br&gt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">echo</span><span style="COLOR: #000000">(</span><span style="COLOR: #800080">$arg1</span><span style="COLOR: #000000">.</span><span style="COLOR: #800080">$br</span><span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">echo</span><span style="COLOR: #000000">(</span><span style="COLOR: #800080">$arg2</span><span style="COLOR: #000000">.</span><span style="COLOR: #800080">$br</span><span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">echo</span><span style="COLOR: #000000">(</span><span style="COLOR: #800080">$arg3</span><span style="COLOR: #000000">.</span><span style="COLOR: #800080">$br</span><span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">echo</span><span style="COLOR: #000000">(</span><span style="COLOR: #800080">$arg4</span><span style="COLOR: #000000">.</span><span style="COLOR: #800080">$br</span><span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #800080">$arg3</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">testnew</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #800080">$c</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">test</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;test(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">xx</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">yy</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #800080">$c</span><span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">echo</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #800080">$c</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #000000">?&gt;</span></div>
<p><span style="COLOR: #000000">以上代码将输出：<br>xx <br>yy <br>test <br>arg4 <br>testnew</span><br></font><br></p>
</font>
<img src ="http://www.phpweblog.net/yemoo/aggbug/2649.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.phpweblog.net/yemoo/" target="_blank">Yemoo'S PHP Home</a> 2008-01-05 18:05 <a href="http://www.phpweblog.net/yemoo/archive/2008/01/05/2649.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>有关PHP中的大小写区分</title><link>http://www.phpweblog.net/yemoo/archive/2007/09/30/2055.html</link><dc:creator>Yemoo'S PHP Home</dc:creator><author>Yemoo'S PHP Home</author><pubDate>Sun, 30 Sep 2007 10:06:00 GMT</pubDate><guid>http://www.phpweblog.net/yemoo/archive/2007/09/30/2055.html</guid><wfw:comment>http://www.phpweblog.net/yemoo/comments/2055.html</wfw:comment><comments>http://www.phpweblog.net/yemoo/archive/2007/09/30/2055.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.phpweblog.net/yemoo/comments/commentRss/2055.html</wfw:commentRss><trackback:ping>http://www.phpweblog.net/yemoo/services/trackbacks/2055.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;<br>&nbsp; PHP语法有些特别，其中之一就是对大小写的区分上。<br><br>&nbsp; 在PHP中，变量是区分大小写的，而函数和类名是不区分大小写的。<br>&nbsp; 这是他与其他编程语言的一个显著区别，谨记这个特点！<br><br>&nbsp; 但在编程中还是建议有一个好的变成习惯，尽可能不要用名称相同大小写不同的函数名或类名。 
<img src ="http://www.phpweblog.net/yemoo/aggbug/2055.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.phpweblog.net/yemoo/" target="_blank">Yemoo'S PHP Home</a> 2007-09-30 18:06 <a href="http://www.phpweblog.net/yemoo/archive/2007/09/30/2055.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>PHP中的几种特殊运算符</title><link>http://www.phpweblog.net/yemoo/archive/2007/09/30/2054.html</link><dc:creator>Yemoo'S PHP Home</dc:creator><author>Yemoo'S PHP Home</author><pubDate>Sun, 30 Sep 2007 09:43:00 GMT</pubDate><guid>http://www.phpweblog.net/yemoo/archive/2007/09/30/2054.html</guid><wfw:comment>http://www.phpweblog.net/yemoo/comments/2054.html</wfw:comment><comments>http://www.phpweblog.net/yemoo/archive/2007/09/30/2054.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.phpweblog.net/yemoo/comments/commentRss/2054.html</wfw:commentRss><trackback:ping>http://www.phpweblog.net/yemoo/services/trackbacks/2054.html</trackback:ping><description><![CDATA[在PHP中有一些符号是有特殊用途的，列举如下：<br><br>
<table border=1>
    <tbody>
        <tr>
            <th>符号</th>
            <th>意义</th>
        </tr>
        <tr>
            <td>$</td>
            <td>变量</td>
        </tr>
        <tr>
            <td>&amp;</td>
            <td>变量的地址 (加在变量前)</td>
        </tr>
        <tr>
            <td>@</td>
            <td>不显示错误信息 (加在函数前)</td>
        </tr>
        <tr>
            <td>-&gt;</td>
            <td>类的方法或者属性</td>
        </tr>
        <tr>
            <td>=&gt;</td>
            <td>数组的元素值</td>
        </tr>
        <tr>
            <td>?&nbsp;:</td>
            <td>三元运算子</td>
        </tr>
    </tbody>
</table>
<br>
<img src ="http://www.phpweblog.net/yemoo/aggbug/2054.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.phpweblog.net/yemoo/" target="_blank">Yemoo'S PHP Home</a> 2007-09-30 17:43 <a href="http://www.phpweblog.net/yemoo/archive/2007/09/30/2054.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>PHP中include()与require()的区别</title><link>http://www.phpweblog.net/yemoo/archive/2007/09/29/2046.html</link><dc:creator>Yemoo'S PHP Home</dc:creator><author>Yemoo'S PHP Home</author><pubDate>Sat, 29 Sep 2007 05:38:00 GMT</pubDate><guid>http://www.phpweblog.net/yemoo/archive/2007/09/29/2046.html</guid><wfw:comment>http://www.phpweblog.net/yemoo/comments/2046.html</wfw:comment><comments>http://www.phpweblog.net/yemoo/archive/2007/09/29/2046.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.phpweblog.net/yemoo/comments/commentRss/2046.html</wfw:commentRss><trackback:ping>http://www.phpweblog.net/yemoo/services/trackbacks/2046.html</trackback:ping><description><![CDATA[很久没碰过php了，连一些基础的东西都忘得差不多，今日看php文档，看到include和require区别的讲解，感觉这对于初学者是一个很容易迷惑的地方，在此记录下来，以便自己查阅，也希望对各位php朋友有所帮助。<br><br>
<p><span style="COLOR: #0000ff">引用文件的方法有两种：require 及 include。两种方式提供不同的使用弹性。</span>
<p><span style="COLOR: #ff0000">require </span>的使用方法如 <code>require("MyRequireFile.php");</code> 。这个函数通常放在 PHP 程序的最前面，PHP 程序在执行前，就会先读入 require 所指定引入的文件，使它变成 PHP 程序网页的一部份。常用的函数，亦可以这个方法将它引入网页中。
<p><span style="COLOR: #ff0000">include </span>使用方法如 <code>include("MyIncludeFile.php");</code> 。这个函数一般是放在流程控制的处理部分中。PHP 程序网页在读到 include 的文件时，才将它读进来。这种方式，可以把程序执行时的流程简单化。</p>
<img src ="http://www.phpweblog.net/yemoo/aggbug/2046.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.phpweblog.net/yemoo/" target="_blank">Yemoo'S PHP Home</a> 2007-09-29 13:38 <a href="http://www.phpweblog.net/yemoo/archive/2007/09/29/2046.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>PHP3/4/5特性介绍</title><link>http://www.phpweblog.net/yemoo/archive/2007/03/11/969.html</link><dc:creator>Yemoo'S PHP Home</dc:creator><author>Yemoo'S PHP Home</author><pubDate>Sun, 11 Mar 2007 07:29:00 GMT</pubDate><guid>http://www.phpweblog.net/yemoo/archive/2007/03/11/969.html</guid><wfw:comment>http://www.phpweblog.net/yemoo/comments/969.html</wfw:comment><comments>http://www.phpweblog.net/yemoo/archive/2007/03/11/969.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.phpweblog.net/yemoo/comments/commentRss/969.html</wfw:commentRss><trackback:ping>http://www.phpweblog.net/yemoo/services/trackbacks/969.html</trackback:ping><description><![CDATA[
		<strong>PHP3特性:</strong>
		<br />      简单<br />      速度快<br />      跨平台<br />      强大的数据库支持<br />      嵌入HTML<br />      分析XML<br />      文件存取<br />      文本处理<br />      复杂变量<br />      图像处理<br /><strong>PHP4特性:</strong><br />      API扩展<br />      布尔变量<br />      COM/DCOM<br />      与PHP3兼容性好<br />       配置<br />      加密支持<br />      多维数组<br />      JAVA交互支持<br />      OO支持<br />      ZIP文件处理<br /><strong>PHP5特性：</strong><br />      OO<br />      XML<br />      异常处理<br />      SOAP扩展，支持WEB服务<img src ="http://www.phpweblog.net/yemoo/aggbug/969.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.phpweblog.net/yemoo/" target="_blank">Yemoo'S PHP Home</a> 2007-03-11 15:29 <a href="http://www.phpweblog.net/yemoo/archive/2007/03/11/969.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>php编码规范【摘录整理】</title><link>http://www.phpweblog.net/yemoo/archive/2007/03/11/967.html</link><dc:creator>Yemoo'S PHP Home</dc:creator><author>Yemoo'S PHP Home</author><pubDate>Sat, 10 Mar 2007 17:01:00 GMT</pubDate><guid>http://www.phpweblog.net/yemoo/archive/2007/03/11/967.html</guid><wfw:comment>http://www.phpweblog.net/yemoo/comments/967.html</wfw:comment><comments>http://www.phpweblog.net/yemoo/archive/2007/03/11/967.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.phpweblog.net/yemoo/comments/commentRss/967.html</wfw:commentRss><trackback:ping>http://www.phpweblog.net/yemoo/services/trackbacks/967.html</trackback:ping><description><![CDATA[php编码规范<br /> <br />1.  介绍<br />1.1. 标准化的重要性 <br />    标准化问题在某些方面上让每个人头痛，让人人都觉得大家处于同样的境地。这有助于让这些建议在许多的项目中不断演进，许多公司花费了许多星期逐子字逐句的进行争论。标准化不是特殊的个人风格，它对本地改良是完全开放的。<br />1.2. 优点 <br />    当一个项目尝试着遵守公用的标准时，会有以下好处： <br />        程序员可以了解任何代码，弄清程序的状况 <br />        新人可以很快的适应环境 <br />        防止新接触php的人出于节省时间的需要，自创一套风格并养成终生的习惯 <br />        防止新接触php的人一次次的犯同样的错误 <br />        在一致的环境下，人们可以减少犯错的机会 <br />        程序员们有了一致的敌人<br />1.3. 缺点 <br />    因为标准由一些不懂得php的人所制定，所以标准通常看上去很傻 <br />    因为标准跟我做的不一样，所以标准通常看上去很傻 <br />    标准降低了创造力 <br />    标准在长期互相合作的人群中是没有必要的 <br />    标准强迫太多的格式 <br />1.4. 讨论<br />    许多项目的经验能得出这样的结论：采用编程标准可以使项目更加顺利地完成。标准是成功的关键么？当然不。但它们可以帮助我们，而且我们需要我们能得到的所有的帮助！老实说，对一个细节标准的大部分争论主要是源自自负思想。对一个合理的标准的很少决定能被说为是缺乏技术性的话，那只是口味的原因罢了。所以，要灵活的控制自负思想，记住，任何项目都取决于团队合作的努力。<br />1.5.  解释 <br />    1.5.1. 标准实施 <br />        首先应该在开发小组的内部找出所有的最重要的元素，也许标准对你的状况还不够恰当。它可能已经概括了 重要的问题，也可能还有人对其中的某些问题表示强烈的反对。无论在什么情况下，只要最后顺利的话，人们将成熟的明白到这个标准是合理的，然后其他的程序员们也会发现它的合理性，并觉得带着一些保留去遵循这一标准是值得的。如果没有自愿的合作，可以制定需求：标准一定要经过代码的检验。如果没有检验的话，这个解决方案仅仅是一个建立在不精确的基础上的一大群可笑的人。 <br />    1.5.2. 认同观点 <br />        1. 这行不通； <br />        2. 也许可行吧，但是它既不实用又无聊； <br />        3. 这是真的，而且我也告诉过你啊；<br />        4. 这个是我先想到的； <br />        5. 本来就应该这样。 <br />        如果您带着否定的成见而来看待事物的话，请您保持开放的思想。你仍可以做出它是废话的结论，但是做出结论的方法就是你必须要能够接受不同的思想。请您给自己一点时间去做到它。<br />    1.5.3. 项目的四个阶段<br />        1. 数据库结构 <br />        2. 设计 <br />        3. 数据层 <br />        4. HTML层<br />2.命名规则 <br />    2.1. 合适的命名<br />        命名是程序规划的核心。古人相信只要知道一个人真正的名字就会获得凌驾于那个人之上的不可思议的力量。只要你给事物想到正确的名字，就会给你以及后来的人带来比代码更强的力量。别笑！<br />        名字就是事物在它所处的生态环境中一个长久而深远的结果。总的来说，只有了解系统的程序员才能为系统取出最合适的名字。如果所有的命名都与其自然相适合，则关系清晰，含义可以推导得出，一般人的推想也能在意料之中。<br />        如果你发觉你的命名只有少量能和其对应事物相匹配的话， 最好还是重新好好再看看你的设计吧。<br />    2.2. 类命名<br />        在为类（class ）命名前首先要知道它是什么。如果通过类名的提供的线索，你还是想不起这个类是什么的话，那么你的设计就还做的不够好。 <br />        超过三个词组成的混合名是容易造成系统各个实体间的混淆，再看看你的设计，尝试使用（CRC Session card)看看该命名所对应的实体是否有着那么多的功用。<br />        对于派生类的命名应该避免带其父类名的诱惑，一个类的名字只与它自身有关，和它的父类叫什么无关。<br />        有时后缀名是有用的，例如：如果你的系统使用了代理（agent ），那么就把某个部件命名为“下载代理”（DownloadAgent）用以真正的传送信息。 <br />    2.3. 方法和函数命名 <br />        通常每个方法和函数都是执行一个动作的，所以对它们的命名应该清楚的说明它们是做什么的：用CheckForErrors()代替ErrorCheck()，用DumpDataToFile()代替DataFile()。这么做也可以使功能和数据成为更可区分的物体。<br />        有时后缀名是有用的: <br />            Max - 含义为某实体所能赋予的最大值。 <br />            Cnt - 一个运行中的计数变量的当前值。 <br />            Key - 键值。 <br />            例如：RetryMax 表示最多重试次数，RetryCnt 表示当前重试次数。 <br />        有时前缀名是有用的： <br />            Is - 含义为问一个关于某样事物的问题。无论何时，当人们看到Is就会知道这是一个问题。 <br />            Get - 含义为取得一个数值。 <br />            Set - 含义为设定一个数值 <br />            例如：IsHitRetryLimit。 <br />    2.4. 缩写词不要全部使用大写字母<br />        无论如何，当遇到以下情况，你可以用首字母大写其余字母小写来代替全部使用大写字母的方法来表示缩写词。<br />        使用: GetHtmlStatistic. <br />        不使用: GetHTMLStatistic.<br />        理由 <br />            当命名含有缩略词时，人们似乎有着非常不同的直觉。统一规定是最好，这样一来，命名的含义就完全可以预知了。 <br />            举个NetworkABCKey的例子，注意C是应该是ABC里面的C还是key里面的C，这个是很令人费解的。有些人不在意这些，其他人却很讨厌这样。所以你会在不同的代码里看到不同的规则，使得你不知道怎么去叫它。<br />            例如<br />                class FluidOz             // 不要写成 FluidOZ<br />                class GetHtmlStatistic    // 不要写成 GetHTMLStatistic<br />    2.5. 类命名 <br />        使用大写字母作为词的分隔，其他的字母均使用小写 <br />        名字的首字母使用大写 <br />        不要使用下划线('_') <br />        理由<br />            根据很多的命名方式，大部分人认为这样是最好的方式。 <br />            例如<br />                class NameOneTwo<br />                class Name<br />    2.6. 类库命名 <br />        目前命名空间正在越来越广泛的被采用，以避免不同厂商和团体类库间的类名冲突。<br />        当尚未采用命名空间的时候，为了避免类名冲突，一般的做法是在类名前加上独特的前缀，两个字符就可以了，当然多用一些会更好。 <br />        例如<br />            John Johnson的数据结构类库可以用Jj做为前缀，如下： <br />            class JjLinkList<br />            {<br />            }<br />        另一种折中方式是建立包含类库目录（事实上Java也是这么做的），以不通的目录代表不同的命名空间。<br />        例如<br />            Microsoft的数据库相关类库可以在：<br />            /classes/com/Microsoft/ Database/DbConn.php<br />            Apache的数据库相关类库可在：<br />            /classes/org/apache/Database/DbConn.php<br />    2.7. 方法命名<br />        采用与类命名一致的规则 <br />        理由 <br />            使用所有不同规则的大部分人发现这是最好的折衷办法。 <br />            例如<br />                class NameOneTwo<br />                {<br />                    function DoIt() {};<br />                    function HandleError() {};<br />                }<br />    2.8. 类属性命名<br />        属性命名应该以字符‘m’为前缀。 <br />        前缀‘m’后采用于类命名一致的规则。 <br />        ‘m’总是在名字的开头起修饰作用，就像以‘r’开头表示引用一样。 <br />        理由<br />            前缀'm'防止类属性和方法名发生任何冲突。你的方法名和属性名经常会很类似，特别是存取元素。 <br />            例如<br />                class NameOneTwo<br />                {<br />                    function VarAbc() {};<br />                    function ErrorNumber() {};<br />                    var $mVarAbc;<br />                    var $mErrorNumber;<br />                    var $mrName;<br />                }<br /> <br />    2.9. 方法中参数命名<br />        第一个字符使用小写字母。 <br />        在首字符后的所有字都按照类命名规则首字符大写。 <br />        理由<br />            可以区分方法中的一般变量。<br />            你可以使用与类名相似的名称而不至于产生重名冲突。 <br />            例如<br />                class NameOneTwo<br />                {<br />                    function StartYourEngines(<br />                        &amp;$rSomeEngine,<br />                        &amp;$rAnotherEngine);<br />                }<br />    2.10. 变量命名<br />        所有字母都使用小写 <br />        使用'_'作为每个词的分界。 <br />        理由<br />            通过这一途径，代码中变量的作用域是清晰的。 <br />            所有的变量在代码中都看起来不同，容易辨认。 <br />            例如<br />                function HandleError($errorNumber)<br />                {<br />                    $error = OsErr($errorNumber);<br />                    $time_of_error = OsErr-&gt;GetTimeOfError();<br />                    $error_processor = OsErr-&gt;GetErrorProcessor();<br />                }<br />    2.11. 引用变量和函数返回引用<br />        引用必须带‘r’前缀 <br />        理由<br />            使得类型不同的变量容易辨认 <br />            它可以确定哪个方法返回可更改对象，哪个方法返回不可更改对象。 <br />            例如<br />                class Test<br />                {<br />                    var mrStatus;<br />                    function DoSomething(&amp;$rStatus) {};<br />                    function &amp;rStatus() {};<br />                }<br />    2.12. 全局变量<br />        全局变量应该带前缀‘g’。 <br />        理由<br />            知道一个变量的作用域是非常重要的。 <br />            例如<br />                global $gLog;<br />                global &amp;$grLog;<br />    2.13. 定义命名 / 全局常量<br />        全局常量用'_'分隔每个单词。 <br />        理由<br />            这是命名全局常量的传统。你要注意不要与其它的定义相冲突。 <br />            例如<br />                define("A_GLOBAL_CONSTANT", "Hello world!");<br />    2.14. 静态变量<br />        静态变量应该带前缀‘s’。 <br />        理由<br />            知道一个变量的作用域是非常重要的。 <br />            例如<br />            function test()<br />            {<br />                static $msStatus = 0;<br />            }<br />    2.15. 函数命名<br />        函数名字采用C GNU的惯例，所有的字母使用小写字母，使用'_'分割单词。 <br />        理由<br />            这样可以更易于区分相关联的类名。 <br />            例如<br />                function some_bloody_function()<br />                {<br />                }<br />    2.16. 错误返回检测规则 <br />        检查所有的系统调用的错误信息，除非你要忽略错误。 <br />        为每条系统错误消息定义好系统错误文本以便include。 <br />3. 书写规则<br />    3.1. 大括号 {} 规则<br />        在三种主要的大括号放置规则中，有两种是可以接受的，如下的第一种是最好的： <br />        将大括号放置在关键词下方的同列处： <br />            if ($condition)<br />            {<br />                while ($condition)<br />                {<br />                    ...<br />                    ...<br />                }                     <br />            }<br />        传统的UNIX的括号规则是，首括号与关键词同行，尾括号与关键字同列： <br />            if ($condition) { <br />                while ($condition) {<br />                    ...<br />                    ...<br />                }<br />            }<br />        理由<br />            引起剧烈争论的非原则的问题可通过折衷的办法解决，两种方法任意一种都是可以接受的，然而对于大多数人来说更喜欢第一种。原因就是心理研究学习范畴的东西了。 <br />            对于更喜欢第一种还有着更多的原因。如果您使用的字符编辑器支持括号匹配功能的话（例如vi），最重要的就是有一个好的样式。为什么？我们说当你有一大块的程序而且想知道这一大块程序是在哪儿结束的话。你先移到开始的括号，按下按钮编辑器就会找到与之对应的结束括号，例如： <br />                if ($very_long_condition &amp;&amp; $second_very_long_condition)<br />                {<br />                    ...<br />                }<br />                else if (...)<br />                {<br />                    ...<br />                }<br />            从一个程序块移动到另一个程序块只需要用光标和你的括号匹配键就可以了，不需找匹配的括号。<br />    3.2. 缩进/制表符/空格 规则<br />        使用制表符缩进。 <br />        使用三到四个空格为每层次缩进。 <br />        不再使用只要一有需要就缩排的方法。对于最大缩进层数，并没有一个固定的规矩，假如缩进层数大于四或者五层的时候，你可以考虑着将代码因数分解(factoring out code)。 <br />        理由<br />            许多编程者支持制表符。 <br />            当人们使用差异太大的制表符标准的话，会使阅读代码变得很费力。 <br />            如此多的人愿意限定最大的缩进层数，它通常从未被看作是一件工作。我们相信程序员们会明智的选择嵌套的深度。 <br />            例如 <br />               function func()<br />               {<br />                  if (something bad)<br />                  {<br />                     if (another thing bad)<br />                     {<br />                        while (more input)<br />                        {<br />                        }<br />                     }<br />                  }<br />               }<br />    3.3. 小括号、关键词和函数 规则<br />        不要把小括号和关键词紧贴在一起，要用空格隔开它们。 <br />        不要把小括号和函数名紧贴在一起。 <br />        除非必要，不要在Return返回语句中使用小括号。 <br />        理由<br />            关键字不是函数。如果小括号紧贴着函数名和关键字，二者很容易被看成是一体的。 <br />            例如<br />                if (condition)<br />                {<br />                }<br /> <br />                while (condition)<br />                {<br />                }<br /> <br />                strcmp($s, $s1);<br /> <br />                return 1;<br />    3.4. 别在对象架构函数中做实际的工作<br />        别在对象架构构造函数中做实际的工作， 构造函数应该包含变量的初始化和（或）不会发生失败的操作。<br />        理由<br />            构造不能返回错误 。 <br />            例如<br />               class Device<br />               {<br />                  function Device()    { /* initialize and other stuff */ }<br />                  function Open()  { return FAIL; }<br />               };<br /> <br />               $dev = new Device;<br />               if (FAIL == $dev-&gt;Open()) exit(1);<br />    3.5. If Then Else 格式<br />        布局<br />        这由程序员决定。不同的花括号样式会产生些微不同的样观。一个通用方式是：<br />           if (条件1)                 // 注释<br />           {<br />           }<br />           else if (条件2)            // 注释<br />           {<br />           }<br />           else                           // 注释<br />           {<br />           }<br />        如果你有用到else if 语句的话，通常最好有一个else块以用于处理未处理到的其他情况。可以的话放一个记录信息注释在else处，即使在else没有任何的动作。 <br />        条件格式总是将恒量放在等号/不等号的左边，<br />        例如： <br />            if ( 6 == $errorNum ) ... <br />        一个原因是假如你在等式中漏了一个等号，语法检查器会为你报错。第二个原因是你能立刻找到数值而不是在你的表达式的末端找到它。需要一点时间来习惯这个格式，但是它确实很有用。<br />    3.6. switch 格式<br />        当一个case块处理后，直接转到下一个case块处理，在这个case块的最后应该加上注释。<br />        default case总应该存在，它应该不被到达，然而如果到达了就会触发一个错误。 <br />        如果你要创立一个变量，那就把所有的代码放在块中。 <br />        例如<br />           switch (...)<br />           {<br />              case 1:<br />                 ...<br />              // FALL THROUGH<br />              case 2:<br />              {<br />                 $v = get_week_number();<br />                 ...<br />              }<br />              break;<br /> <br />              default:<br />           }<br />    3.7. continue,break 和 ? 的使用<br />        3.7.1. Continue 和 Break <br />            Continue 和 break 其实是变相的隐蔽的 goto方法。 <br />            Continue 和 break 像 goto 一样，它们在代码中是有魔力的，所以要节俭（尽可能少）的使用它们。使用了这一简单的魔法，由于一些未公开的原因，读者将会被定向到只有上帝才知道的地方去。 <br />            Continue有两个主要的问题： <br />                它可以绕过测试条件。 <br />                它可以绕过等/不等表达式。 <br />            看看下面的例子，考虑一下问题都在哪儿发生： <br />            while (TRUE)<br />            {<br />               ...<br />               // A lot of code<br />               ...<br />               if (/* some condition */) {<br />                  continue;<br />               }<br />               ...<br />               // A lot of code<br />               ...<br />               if ( $i++ &gt; STOP_VALUE) break;<br />            }<br />            注意："A lot of code"是必须的，这是为了让程序员们不能那么容易的找出错误。 <br />            通过以上的例子，我们可以得出更进一步的规则：continue 和 break 混合使用是引起灾难的正确方法。 <br />        3.7.2. ?: <br />            麻烦在于人们往往试着在 ? 和 : 之间塞满了许多的代码。以下的是一些清晰的连接规则： <br />                把条件放在括号内以使它和其他的代码相分离。 <br />                如果可能的话，动作可以用简单的函数。 <br />                把所做的动作，“?”，“:”放在不同的行，除非他们可以清楚的放在同一行。 <br />                例如<br />                   (condition) ? funct1() : func2();<br /> <br />                   or<br /> <br />                   (condition)<br />                      ? long statement<br />                      : another long statement;<br />    3.8. 声明块的定位<br />        声明代码块需要对齐。 <br />        理由<br />            清晰。 <br />            变量初始化的类似代码块应该列表。 <br />            &amp;应靠近类型，而不是变量名。<br />        例如<br />            var       $mDate<br />            var&amp;      $mrDate<br />            var&amp;      $mrName<br />            var       $mName<br /> <br />            $mDate    = 0;<br />            $mrDate   = NULL;<br />            $mrName   = 0;<br />            $mName    = NULL;<br />    3.9. 每行一个语句<br />        除非这些语句有很密切的联系，否则每行只写一个语句。 <br />    3.10. 短方法<br />        方法代码要限制在一页内。<br />    3.11. 记录所有的空语句<br />        总是记录下for或者是while的空块语句，以便清楚的知道该段代码是漏掉了，还是故意不写的。 <br /> <br />        while ($dest++ = $src++)<br />          ;         // VOID<br />    3.12. 不要采用缺省方法测试非零值<br />        不要采用缺省值测试非零值，也就是使用： <br />        if (FAIL != f())<br />        比下面的方法好： <br />        if (f())<br /> <br />        即使 FAIL 可以含有 0 值 ，也就是PHP认为false的表示。在某人决定用-1代替0作为失败返回值的时候，一个显式的测试就可以帮助你了。就算是比较值不会变化也应该使用显式的比较；例如：if (!($bufsize % strlen($str)))应该写成：if (($bufsize % strlen($str)) == 0)以表示测试的数值（不是布尔）型。一个经常出问题的地方就是使用strcmp来测试一个字符等式，结果永远也不会等于缺省值。 <br />        非零测试采用基于缺省值的做法，那么其他函数或表达式就会受到以下的限制: <br />            只能返回0表示失败，不能为/有其他的值。 <br />            命名以便让一个真(true)的返回值是绝对显然的，调用函数IsValid()而不是Checkvalid()。 <br />    3.13. 布尔逻辑类型<br />        大部分函数在FALSE的时候返回0，但是发挥非0值就代表TRUE，因而不要用1（TRUE，YES，诸如此类）等式检测一个布尔值，应该用0（FALSE，NO，诸如此类）的不等式来代替： <br /> <br />           if (TRUE == func()) { ...<br />        应该写成： <br />           if (FALSE != func()) { ...<br />    3.14. 通常避免嵌入式的赋值<br />        有时候在某些地方我们可以看到嵌入式赋值的语句，那些结构不是一个比较好的少冗余，可读性强的方法。 <br /> <br />           while ($a != ($c = getchar()))<br />           {<br />              process the character<br />           }<br />        ++和--操作符类似于赋值语句。因此，出于许多的目的，在使用函数的时候会产生副作用。使用嵌入式赋值提高运行时性能是可能的。无论怎样，程序员在使用嵌入式赋值语句时需要考虑在增长的速度和减少的可维护性两者间加以权衡。例如： <br /> <br />            a = b + c;<br />            d = a + r;<br />        不要写成： <br />            d = (a = b + c) + r;<br /> <br />        虽然后者可以节省一个周期。但在长远来看，随着程序的维护费用渐渐增长，程序的编写者对代码渐渐遗忘，就会减少在成熟期的最优化所得。 <br />    4. 帮助与共享<br />        4.1. 重用您和其他人的艰苦工作<br />            跨工程的重用在没有一个通用结构的情况下几乎是不可能的。对象符合他们现有的服务需求，不同的过程有着不同的服务需求环境，这使对象重用变得很困难。 <br />            开发一个通用结构需要预先花费许多的努力来设计。当努力不成功的时候，无论出于什么原因，有几种办法推荐使用： <br />        4.2. 请教！给群组发Email求助<br />            这个简单的方法很少被使用。因为有些程序员们觉得如果他向其他人求助，会显得自己水平低，这多傻啊!做新的有趣的工作，不要一遍又一遍的做别人已经做过的东西。<br />            如果你需要某些事项的源代码，如果已经有某人做过的话，就向群组发email求助。结果会很惊喜哦！ <br />            在许多大的群组中，个人往往不知道其他人在干什么。你甚至可以发现某人在找一些东西做，并且自愿为你写代码，如果人们在一起工作，外面就总有一个金矿。 <br />        4.3. 告诉！当你在做事的时候，把它告诉所有人 <br />            如果你做了什么可重用的东西的话，让其他人知道。别害羞，也不要为了保护自豪感而把你的工作成果藏起来。一旦养成共享工作成果的习惯，每个人都会获得更多。 <br />        4.4. 小型代码库<br />            对于代码重用，一个常见的问题就是人们不从他们做过的代码中做库。一个可重用的类可能正隐蔽在一个程序目录并且决不会有被分享的激动，因为程序员不会把类分拆出来加入库中。 <br />            这样的其中一个原因就是人们不喜欢做一个小库，对小库有一些不正确感觉。把这样的感觉克服掉吧，电脑才不关心你有多少个库呢。 <br />            如果你有一些代码可以重用，而且不能放入一个已经存在的库中，那么就做一个新的库吧。如果人们真的考虑重用的话，库不会在很长的一段时间里保持那么小的。 <br />        4.5. 知识库<br />            很多公司不清楚现有什么代码可用，而且大多数程序员仍然没有通过沟通他们已经做过了什么，或者一直在询问现存什么代码可用。解决这个的方法是有一个可用的知识库。<br />            理想的情况是，程序员可以到一个WEB页，浏览或者查询打包的知识库列表，找到他们所要的。建立一个程序员可以自动维护的知识库系统，是一个很不错的做法。如果有一个专门的管理员来负责维护这个知识库，那当然更好。<br />            另一种方法是自动的从代码中产生知识库的做法。把通用的类、方法和标头（subsystem headers）作为手册或者是知识库的一个条目。<br />5. 书写注释<br />    5.1. 讲一个故事<br />        把你的注释当作描述系统的一个故事。并且使得你的注释能被机器解析后，以固定的格式放到手册中去。类的注释是故事的一部分，方法的名称、方法的注释、方法的实现也是故事一部分。所有的这些部分编织在一起，使得人们在以后的时间里能够准确的知道你干了什么，为什么这么做。<br />    5.2.  归档注释<br />        注释的要归档才有意义，否则，假如在一个地方放一条注释描述你做了什么选择和你为什么这么做，只有考古学家才能发现这是最有用的信息。（如何归档另行规范）<br />    5.3. 注释结构<br />        工程的每部分都有特定的注释结构。 程序中的注释，这里给出示例作为规范，注释中以 * @ 为关键字的开始，以:为注释关键字结尾。<br />        5.3.1. 预定义关键字<br />            关键字        含义<br />            Purpose        表示类、属性、方法要做些什么或者什么含义。<br />            Package Name        类名<br />            Author        作者<br />            Modifications        修改记录（编号规则为“No”＋日期＋“－”＋序号）<br />            See        参考<br />            Method Name        方法名<br />            Parameter        参数名（包括类型）<br />            Return        返回值（包括类型）<br />            Attribute/Variable Name        属性/变量名<br />            Type        属性/变量类型<br />        5.3.2. 类的注释<br />            /**<br />            * @ Purpose: <br />            * 访问数据库的类，以ODBC作为通用访问接口<br />            * @Package Name:                Database<br />            * @Author:                  Forrest Gump <a href="mailto:gump@crtvu.edu.cn">gump@crtvu.edu.cn</a><br />            * @Modifications:<br />            * No20020523-100:<br />            * odbc_fetch_into()参数位置第二和第三个位置调换<br />            *  John Johnson <a href="mailto:John@crtvu.edu.cn">John@crtvu.edu.cn</a><br />            * @See:        (参照)<br />            */<br />            class Database<br />            {<br />            ……<br />            }<br />        5.3.3. 方法注释<br />            /**<br />            * @Purpose:<br />            *        执行一次查询<br />            * @Method Name:                Query()<br />            * @Parameter:         string        $queryStr         SQL查询字符串<br />            * @Return:                mixed        查询返回值（结果集对象）<br />            */<br />            function（$queryStr）{……}<br />        5.3.4.属性或变量注释<br />            /**<br />            * @Purpose:<br />            *        数据库连接用户名<br />            * @Attribute/Variable Name:        mDbUserName<br />            * @Type: string<br />            */<br />            var mDbUserName;<br />        5.3.5. if (0)来注释外部代码块 <br />            有时需要注释大段的测试代码，最简单的方法就是使用if (0)块： <br />            function example()<br />            {<br />              great looking code<br /> <br />              if (0) {<br />              lots of code<br />              }<br /> <br />              more code<br />            }<br />            你不能使用/**/，因为注释内部不能包含注释，而大段的程序中可以包含注释。<br />        5.3.6. 目录文档<br />            所有的目录下都需要具有README文档，其中包括： <br />                该目录的功能及其包含内容 <br />                一个对每一文件的在线说明（带有link），每一个说明通常还应该提取文件标头的一些属性名字。 <br />                包括设置、使用说明 <br />                指导人们如何连接相关资源： <br />                源文件索引 <br />                在线文档 <br />                纸文档 <br />                设计文档 <br />                其他对读者有帮助的东西 <br />            考虑一下，当每个原有的工程人员走了，在6个月之内来的一个新人，那个孤独受惊吓的探险者通过整个工程的源代码目录树，阅读说明文件，源文件的标头说明等等做为地图，他应该有能力穿越整个工程。 <br />6. 其他<br />    采用面向对象的设计方法；<br />        理由<br />            毫无疑问这是最接近人们自然思维的方法，可能前期会觉得没有直接书写来得快，能否试着保留自己的看法？好戏在后头！<br />    类的定义采用一个文件一个类，并且类名和文件名相同；<br />        理由<br />            越来越多的人接受了这种做法<br />            事实证明这种方法使得项目的逻辑结构更清晰<br />    类定义文件中，定义体之外不得出现诸如echo、print等输出语句；<br />        理由<br />            出现这样的语句，应该当做出现bug来看。<br />    输出网页的页面不出现SQL语句<br />        理由<br />            这是n层结构的编程思想所致，每层的任务不同，虽然可以越权行使，可能这样很快捷，但我们不赞成这么干。<br />    进行SQL执行的数据必须进行有效性检测<br />        特殊符号：<br />        对于MS SQL Server，’%_[ ] 这些符号都是在书写SQL语句中的特殊含义字符，在SQL执行前需要对这些字符进行处理。<br />        脚本符号：<br />        对于PHP脚本标记，如，在进入数据库前需要检测处理。<br />        理由<br />            这是数据库编程的一个约定，很多参考书上也是这么说，这里需要强调一下。<br />    在HTML网页中尽量不要穿插PHP代码<br />        循环代码和纯粹变量输出（类似于）除外。<br />        理由<br />            需要说明的是我们工作的上游，页面设计者的工作，假如在页面中穿插代码，将破坏结构，这应当是我们需要避免的。<br />            在这里的PHP代码只负责显示，多余的代码显然是不应该的。<br />    没有含义的数字<br />        一个在源代码中使用了的赤裸裸的数字是不可思议的数字，因为包括作者，在三个月内，没人它的含义。例如： <br />        if      (22 == $foo) { start_thermo_nuclear_war(); }<br />        else if (19 == $foo) { refund_lotso_money(); }<br />        else if (16 == $foo) { infinite_loop(); }<br />        else                { cry_cause_im_lost(); }<br />        在上例中22和19的含义是什么呢？如果一个数字改变了，或者这些数字只是简单的错误，你会怎么想？ <br />        使用不可思议的数字是该程序员是业余运动员的重要标志，这样的程序员从来没有在团队环境中工作过，又或者是为了维持代码而不得不做的，否则他们永远不会做这样的事。 <br />        你应该用define()来给你想表示某样东西的数值一个真正的名字，而不是采用赤裸裸的数字，例如： <br />        define(" RESIDENT_WENT_CRAZY", "22");<br />        define("WE_GOOFED", "19");<br />        define("THEY_DIDNT_PAY", "16");<br /> <br />        if      (PRESIDENT_WENT_CRAZY == $foo) { start_thermo_nuclear_war(); }<br />        else if (WE_GOOFED            == $foo) { refund_lotso_money(); }<br />        else if (THEY_DIDNT_PAY       == $foo) { infinite_loop(); }<br />        else                                   { happy_days_i_know_why_im_here(); }<br />        现在不是变得更好了么？ <br />7. PHP文件扩展名<br />    常见的PHP文件的扩展名有：html, .php, .php3, .php4, .phtml, .inc, .class...<br />    这里我们约定：<br />        所有浏览者可见页面使用.html <br />        所有类、函数库文件使用.php <br />        理由<br />            扩展名描述的是那种数据是用户将会收到的。PHP是解释为HTML的。<br /> <br />8. PHP代码标记<br />    统一使用，只输出变量时<br /> <br /><img src ="http://www.phpweblog.net/yemoo/aggbug/967.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.phpweblog.net/yemoo/" target="_blank">Yemoo'S PHP Home</a> 2007-03-11 01:01 <a href="http://www.phpweblog.net/yemoo/archive/2007/03/11/967.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>PHP基础知识总结</title><link>http://www.phpweblog.net/yemoo/archive/2006/06/25/170.html</link><dc:creator>Yemoo'S PHP Home</dc:creator><author>Yemoo'S PHP Home</author><pubDate>Sat, 24 Jun 2006 17:01:00 GMT</pubDate><guid>http://www.phpweblog.net/yemoo/archive/2006/06/25/170.html</guid><wfw:comment>http://www.phpweblog.net/yemoo/comments/170.html</wfw:comment><comments>http://www.phpweblog.net/yemoo/archive/2006/06/25/170.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.phpweblog.net/yemoo/comments/commentRss/170.html</wfw:commentRss><trackback:ping>http://www.phpweblog.net/yemoo/services/trackbacks/170.html</trackback:ping><description><![CDATA[看了些PHP的基础知识，自己在这里总结下：<br /><br />1，在HTML嵌入PHP脚本有三种办法：<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">script language</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">php</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">嵌入方式一</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #0000ff">echo</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">test</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">script</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><br /></span><span style="COLOR: #000000">&lt;?</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">嵌入方式二</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #0000ff">echo</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;br&gt;test2</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br /></span><span style="COLOR: #000000">?&gt;</span><span style="COLOR: #000000"><br /><br /></span><span style="COLOR: #000000">&lt;?</span><span style="COLOR: #000000">php<br /></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">嵌入方式三</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #0000ff">echo</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;br&gt;test3</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br /></span><span style="COLOR: #000000">?&gt;</span></div>还有一种嵌入方式，即使用和Asp相同的标记&lt;%%&gt;，但要修改PHP.ini 相关配置，不推荐使用。<br /><br />2,PHP注释分单行和多行注释，和java注释方式相同。<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">&lt;?</span><span style="COLOR: #000000"><br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">这里是单行注释</span><span style="COLOR: #008000"><br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">echo</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">test</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #008000">/*</span><span style="COLOR: #008000"><br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" />这里是多行注释！可以写很多行注释内容<br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #008000">*/</span><span style="COLOR: #000000"><br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">?&gt;</span></div>注意不要有嵌套注释，如<font color="#ff0000">/*aaaa/*asdfa*/asdfasdfas*/</font>,这样的注释会出现问题。<br /><br />3，PHP主要的数据类型有5种，<font color="#ff0000">integer,double,string,array,object。<br /><br /></font><font color="#000000">4，函数内调用函数外部变量，需要先用global进行声明，否则无法访问，这是PHP与其他程序语言的一个区别。事例代码： 
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">&lt;?</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #800080">$a</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br /></span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000"> test(){<br /></span><span style="COLOR: #0000ff">echo</span><span style="COLOR: #000000"> </span><span style="COLOR: #800080">$a</span><span style="COLOR: #000000">;<br />}<br />test();    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">这里将不能输出结果“1”。</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000"> test2(){<br />    </span><span style="COLOR: #0000ff">global</span><span style="COLOR: #000000"> </span><span style="COLOR: #800080">$a</span><span style="COLOR: #000000">;<br />    </span><span style="COLOR: #0000ff">echo</span><span style="COLOR: #000000"> </span><span style="COLOR: #800080">$a</span><span style="COLOR: #000000">;<br />}<br />test2();    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">这样可以输出结果“1”。</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #000000">?&gt;</span></div></font>注意：PHP可以在函数内部声明静态变量。用途同C语言中。<br /><br />5，变量的变量，变量的函数<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">&lt;?</span><span style="COLOR: #000000"><br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">变量的变量</span><span style="COLOR: #008000"><br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #800080">$a</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">hello</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" />$</span><span style="COLOR: #800080">$a</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">world</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">echo</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">$a $hello</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">将输出"hello world"</span><span style="COLOR: #008000"><br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">echo</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">$a ${$a}</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">同样将输出"hello world"</span><span style="COLOR: #008000"><br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">?&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">&lt;?</span><span style="COLOR: #000000"><br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">变量的函数</span><span style="COLOR: #008000"><br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000"><br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000"> func_1(){<br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #0000ff">print</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">test</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" />}<br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000"> fun(</span><span style="COLOR: #800080">$callback</span><span style="COLOR: #000000">){<br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #800080">$callback</span><span style="COLOR: #000000">();<br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" />}<br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" />fun(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">func_1</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">这样将输出"test"</span><span style="COLOR: #008000"><br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">?&gt;</span></div><br />6，PHP同时支持标量数组和关联数组，可以使用list()和array()来创建数组,数组下标从0开始。如：<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">&lt;?</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #800080">$a</span><span style="COLOR: #000000">[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">abc</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br /></span><span style="COLOR: #800080">$a</span><span style="COLOR: #000000">[</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">def</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br /><br /></span><span style="COLOR: #800080">$b</span><span style="COLOR: #000000">[</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">foo</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">13</span><span style="COLOR: #000000">;<br /><br /></span><span style="COLOR: #800080">$a</span><span style="COLOR: #000000">[]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">hello</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">$a[2]="hello"</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #800080">$a</span><span style="COLOR: #000000">[]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">world</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">$a[3]="world"</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #800080">$name</span><span style="COLOR: #000000">[]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">jill</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">$name[0]="jill"</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #800080">$name</span><span style="COLOR: #000000">[]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">jack</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">$name[1]="jack"</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #000000">?&gt;</span></div><br />7，关联参数传递（&amp;的使用），两种方法。例：<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">&lt;?</span><span style="COLOR: #000000"><br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">方法一：</span><span style="COLOR: #008000"><br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000"> foo(</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #800080">$bar</span><span style="COLOR: #000000">){<br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #800080">$bar</span><span style="COLOR: #000000">.=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> and something extra</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" />}<br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #800080">$str</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">This is a String,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" />foo(</span><span style="COLOR: #800080">$str</span><span style="COLOR: #000000">);<br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">echo</span><span style="COLOR: #000000"> </span><span style="COLOR: #800080">$str</span><span style="COLOR: #000000">;    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">output:This is a String, and something extra</span><span style="COLOR: #008000"><br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000"><br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">echo</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;br&gt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">方法二：</span><span style="COLOR: #008000"><br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000"> foo1(</span><span style="COLOR: #800080">$bar</span><span style="COLOR: #000000">){<br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #800080">$bar</span><span style="COLOR: #000000">.=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> and something extra</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" />}<br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #800080">$str</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">This is a String,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" />foo1(</span><span style="COLOR: #800080">$str</span><span style="COLOR: #000000">);<br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">echo</span><span style="COLOR: #000000"> </span><span style="COLOR: #800080">$str</span><span style="COLOR: #000000">;    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">output:This is a String,</span><span style="COLOR: #008000"><br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000"><br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">echo</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;br&gt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" />foo1(</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #800080">$str</span><span style="COLOR: #000000">);<br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">echo</span><span style="COLOR: #000000"> </span><span style="COLOR: #800080">$str</span><span style="COLOR: #000000">;    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">output:This is a String, and something extra</span><span style="COLOR: #008000"><br /><img src="http://www.phpweblog.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">?&gt;</span></div><br />8，函数默认值。PHP中函数支持设定默认值，与C++风格相同。<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">&lt;?</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000"> makecoffee(</span><span style="COLOR: #800080">$type</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">coffee</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">){<br />  </span><span style="COLOR: #0000ff">echo</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">making a cup of $type.\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br />}<br /></span><span style="COLOR: #0000ff">echo</span><span style="COLOR: #000000"> makecoffee();    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">"making a cup of coffee"</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #0000ff">echo</span><span style="COLOR: #000000"> makecoffee(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">espresso</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">"making a cup of espresso"</span><span style="COLOR: #008000"><br />/*</span><span style="COLOR: #008000"><br />注意：当使用参数默认值时所有有默认值的参数应该在无默认值的参数的后边定义。否则，程序将不会按照所想的工作。<br /></span><span style="COLOR: #008000">*/</span><span style="COLOR: #000000"><br /><br /></span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000"> test(</span><span style="COLOR: #800080">$type</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">test</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #800080">$ff</span><span style="COLOR: #000000">){    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">错误示例</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #000000">  </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> </span><span style="COLOR: #800080">$type</span><span style="COLOR: #000000">.</span><span style="COLOR: #800080">$ff</span><span style="COLOR: #000000">;<br />}</span></div><br />9，PHP的几个特殊符号意义。<br />   $      变量<br />  &amp;      变量的地址（加在变量前）<br /> @      不显示错误信息（加在变量前）<br /> -&gt;      类的方法或者属性<br />=&gt;      数组的元素值<br />?:         三元运算子<br /><br />10，include()语句与require()语句<br />    如果要根据条件或循环包含文件，需要使用include().<br />    require()语句只是被简单的包含一次，任何的条件语句或循环等对其无效。<br />   由于include()是一个特殊的语句结构，因此若语句在一个语句块中，则必须把他包含在一个语句块中。<br />   
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">&lt;?</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">下面为错误语句</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(</span><span style="COLOR: #800080">$condition</span><span style="COLOR: #000000">)<br />    </span><span style="COLOR: #0000ff">include</span><span style="COLOR: #000000">(</span><span style="COLOR: #800080">$file</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br />    </span><span style="COLOR: #0000ff">include</span><span style="COLOR: #000000">(</span><span style="COLOR: #800080">$other</span><span style="COLOR: #000000">);<br /><br /></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">下面为正确语句    </span><span style="COLOR: #008000"><br /></span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(</span><span style="COLOR: #800080">$condition</span><span style="COLOR: #000000">){<br />  </span><span style="COLOR: #0000ff">include</span><span style="COLOR: #000000">(</span><span style="COLOR: #800080">$file</span><span style="COLOR: #000000">);<br />}</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br />{<br />  </span><span style="COLOR: #0000ff">include</span><span style="COLOR: #000000">(</span><span style="COLOR: #800080">$other</span><span style="COLOR: #000000">);<br />}<br /></span><span style="COLOR: #000000">?&gt;</span></div><img src ="http://www.phpweblog.net/yemoo/aggbug/170.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.phpweblog.net/yemoo/" target="_blank">Yemoo'S PHP Home</a> 2006-06-25 01:01 <a href="http://www.phpweblog.net/yemoo/archive/2006/06/25/170.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>