﻿<?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</title><link>http://www.phpweblog.net/yemoo/</link><description>PHP技术钻研修炼中...</description><language>zh-cn</language><lastBuildDate>Fri, 05 Sep 2008 09:19:42 GMT</lastBuildDate><pubDate>Fri, 05 Sep 2008 09:19:42 GMT</pubDate><ttl>60</ttl><item><title>Zend Framework V1.5 中的新特性【转自IBM developerworks】</title><link>http://www.phpweblog.net/yemoo/archive/2008/06/03/4351.html</link><dc:creator>Yemoo'S PHP Home</dc:creator><author>Yemoo'S PHP Home</author><pubDate>Tue, 03 Jun 2008 00:43:00 GMT</pubDate><guid>http://www.phpweblog.net/yemoo/archive/2008/06/03/4351.html</guid><wfw:comment>http://www.phpweblog.net/yemoo/comments/4351.html</wfw:comment><comments>http://www.phpweblog.net/yemoo/archive/2008/06/03/4351.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.phpweblog.net/yemoo/comments/commentRss/4351.html</wfw:commentRss><trackback:ping>http://www.phpweblog.net/yemoo/services/trackbacks/4351.html</trackback:ping><description><![CDATA[<blockquote>
<p>本文转自IBM技术社区，原文链接：<a title=http://www.ibm.com/developerworks/cn/opensource/os-php-zendv1.5/?S_TACT=105AGX52&amp;S_CMP=tec-csdn href="http://www.ibm.com/developerworks/cn/opensource/os-php-zendv1.5/?S_TACT=105AGX52&amp;S_CMP=tec-csdn" target=_blank>http://www.ibm.com/developerworks/cn/opensource/os-php-zendv1.5/?S_TACT=105AGX52&amp;S_CMP=tec-csdn</a></p>
<p>流行的开源软件 Zend Framework 刚刚实现了一些出色的增强。本文介绍 V1.5 中的新特性以及如何升级对 GData Web 服务的增强支持，包括 <code>Zend_Form</code>、<code>Zend_Layout </code>和 <code>Zend_View</code>，并且，改进的 Ajax 支持可以帮助 PHP 开发人员轻松地构建先进的 Web 应用程序。</p>
</blockquote><!--start RESERVED FOR FUTURE USE INCLUDE FILES--><!-- include java script once we verify teams wants to use this and it will work on dbcs and cyrillic characters --><!--end RESERVED FOR FUTURE USE INCLUDE FILES-->
<p>软件框架指一组代码库集合，旨在以一种标准化方式处理应用程序中的所有基本需求，以便使开发人员集中精力进行开发，而不是进行重复劳动。目前有多个开源的 PHP 开发框架可供选择，在所有这些框架中，Zend Framework 也许是最受欢迎的。</p>
<p>Zend 收到欢迎的原因是它非常重视最佳实践，这一特性对于那些重视可持续性的开发人员来说十分有吸引力。Zend 以一种高度模块化的方式构造框架：大多数 Zend Framework 组件可以完全分离并单独使用，这一点非常吸引只需要用到可用库的其中一部分的开发人员。Zend 的灵活性以及重视最佳实践而产生的良好标准化，使它成为具有广泛用途的实用框架。</p>
<p>已经很强大的 Zend Framework 在 V1.5 中又增加了几个全新的组件和组件增强。这些升级使开发复杂的 PHP 应用程序更加简单、更加可维护，这是因为对诸如表单验证例程甚至是前端布局创建等内容实现了标准化。让我们首先看一下<code>Zend_Form</code> 组件以及它提供的全部功能。</p>
<p><a name=N1006F><span class=atitle><code><strong>Zend_Form</strong></code> </span></a></p>
<p>Zend Framework 的一个令人兴奋的新增特性就是 <code>Zend_Form</code> 组件。Web 应用程序如果不能接收输入数据并对其进行处理，那么就会变得毫无意义，获得用户数据的最简单方式就是使用表单。当然，在开发与维护一个 Web 应用程序时，表单是最单调乏味的工作：您必须验证收到的全部内容，确保它是您需要的内容，并需要对每个到来的数据片段进行单独处理。所有上述操作都假设您不会生成错误消息并重复所有工作，当然，您肯定会遇到这些问题 — 如果不能重用代码，手工执行这些工作实在是非常让人畏惧的任务。</p>
<p>新的表单组件提供的功能不仅仅是允许您用编程的方法创建一个表单和表单元素。<code>Zend_Form</code> 能够完成复杂的验证并在表单验证失败时在表单中显示错误信息。</p>
<p><code>Zend_Form</code> 的使用方法简单明了。首先，将 <code>form</code> 对象实例化，然后设置它的动作和方法。最后，将表单元素添加到 <code>form</code> 对象中，并且对单个表单元素应用表单元素验证器和过滤器。在应用程序中呈现和使用完整的 <code>form</code> 对象，对结果进行验证和过滤。查看清单 1 中的简单表单示例。<br><br><a name=N100A0><strong>清单 1. 一个简单的表单</strong></a><br></p>
<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: #0000ff">require_once</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">Zend/Form.php</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #800080">$form</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;Zend_Form(</span><span style="COLOR: #0000ff">array</span><span style="COLOR: #000000">(&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">method</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">=&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">post</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">elements</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">=&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">array</span><span style="COLOR: #000000">(&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">name</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">=&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">array</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">text</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">array</span><span style="COLOR: #000000">(&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">required</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">=&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">label</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">=&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">Name</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">validators</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">=&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">array</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">alpha</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;))</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">age</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">=&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">array</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">text</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">array</span><span style="COLOR: #000000">(&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">required</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">=&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">label</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">=&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">Age</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">validators</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">=&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">array</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">digits</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;))</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">submit</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">=&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">array</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">submit</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">array</span><span style="COLOR: #000000">(&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">label</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">=&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">Send</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;))&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;));&nbsp;<br></span></div>
<br>
<p>清单 1 的结果如图 1 所示。</p>
<br><a name=N100AB><strong>图 1. 表单</strong></a><br><img height=209 alt="The form" src="http://www.ibm.com/developerworks/cn/opensource/os-php-zendv1.5/fig01.jpg" width=226>&nbsp;<br>
<p><code>Zend_Form</code> 附带了下列元素：按钮、复选框、隐藏（hiden）、图片、多选框，多重选择、密码、单选、重置、选择、提交、文本、文本区。<code>Zend_Form</code> 不仅仅限制于附带的元素：内置的 <code>Zend_Form_Element</code> 类允许您创建自己的元素。</p>
<p>您可以手动对表单元素进行实例化并把它们连接到表单，或者让表单对象创建并实例化一个新表单元素，使它符合您要求的类型。在将单个元素附加到 <code>form</code> 对象之前或之后，每个元素都可根据需要进行单独配置，并且在呈现完成的表单之前，可以随时将单独的验证器和过滤器集合附加到它们的表单元素中。</p>
<p>可以对您的表单元素使用 19 种标准验证类型。这些验证器可以检查您通常需要采集的所有数据类型 — 从简单的数据类型检验到正则表达式是否匹配电子邮件地址的验证（可配置为确保存在顶级域并有一个 MX 记录）。默认情况下，如果一个验证器返回 false，则剩余的验证检查都将取消，但这个参数也可以对单个验证器进行配置。</p>
<p>在清单 1 中，一个 alpha 验证器应用到名字字段中，数字验证器应用到年龄字段中。当您输入的数据未通过这些验证测试时，图 2 中显示了默认情况下发生的情况。</p>
<br><a name=N100D9><strong>图 2 未通过验证测试的表单</strong></a><br><img height=258 alt=未通过验证测试的表单 src="http://www.ibm.com/developerworks/cn/opensource/os-php-zendv1.5/fig02.jpg" width=415> <br><br>
<p>准备好验证器之后，下一步将应用过滤器。如果说验证器的作用相当于俱乐部里的保镖，过滤器的作用更象一个造型师：过滤器取出表单元素中的数据，过滤掉您不希望看到的内容并传递剩下的内容。有 12 种标准的内置过滤器，可用于去掉空格、从数值中去掉字母、把文本转换为大写、把特定字符转换为 HTML 项以及删除禁止的标记。如果您知道所需的数据位于字段中，但是这些数据需要进行大量删减和处理，这种情况下应使用过滤器。</p>
<p>为了在简单的表单中演示过滤器的作用，将对 <code>elements</code> 数组做一些修改。</p>
<br><a name=N100F5><strong>清单 2. 把过滤器应用到 <code>elements</code> 数组</strong></a><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">'</span><span style="COLOR: #000000">elements</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">=&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">array</span><span style="COLOR: #000000">(&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">name</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">=&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">array</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">text</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">array</span><span style="COLOR: #000000">(&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">required</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">=&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">label</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">=&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">Name</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">validators</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">=&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">array</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">alpha</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">filters</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">=&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">array</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">StringToUpper</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">)<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;))</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">age</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">=&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">array</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">text</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">array</span><span style="COLOR: #000000">(&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">required</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">=&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">label</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">=&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">Age</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">validators</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">=&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">array</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">digits</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">filters</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">=&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">array</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">digits</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;))</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">submit</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">=&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">array</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">submit</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">array</span><span style="COLOR: #000000">(&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">label</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">=&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">Send</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;))&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&nbsp;<br></span></div>
<p>正如您所见，我们增加了一个过滤器把名字字段全部改为大写，并使用另一个过滤器把年龄字段中的非数字内容全部去掉。现在，当我们提交这些值后，我们会看到如下的结果。</p>
<br><a name=N10104><strong>图 3. 应用过滤器后的表单</strong></a><br><img height=222 alt=应用过滤器后的表单 src="http://www.ibm.com/developerworks/cn/opensource/os-php-zendv1.5/fig03.jpg" width=240> <br><br>
<p>当我们单击 <strong>Send</strong> 后，下列值将通过验证和过滤器，得到如下所示的结果。</p>
<br><a name=N1011A><strong>图 4. 应用验证和过滤器后的表单</strong></a><br><img height=344 alt=应用验证和过滤器后的表单 src="http://www.ibm.com/developerworks/cn/opensource/os-php-zendv1.5/fig04.jpg" width=240> <br><br>
<p>当且仅当存在一个数字并且数字中没有插入错误内容，那么在传递到服务器时，年龄输入、过滤器和验证器以及该组合所需的属性才可以真正确保某个值会通过验证。需要注意的是，名字字段通过验证的惟一方式是名字字段必须以 alpha-字符开头，原因是在这种情况下，过滤器不会帮助这个值通过验证器。</p>
<p>可以使用几种方式呈现完成的表单。表单有一种可以直接使用或回显的呈现方法。可是，大多数表单使用 <code>Zend_View</code> helper 进行呈现。</p>
<p><a name=N10132><span class=atitle><strong><code>Zend_Layout</code> 和 <code>Zend_View</code></strong> </span></a></p>
<p>Zend Framework V1.5 中新的 <code>Zend_Layout</code> 和增强的 <code>Zend_View</code> 组件经常一起提到，这是有原因的。这两个组件协同工作可以成功地在 PHP 应用程序中将表示从控制器中分离出来，并以一种支持快速开发和维护的方式对表示进行标准化。</p>
<p>所有这些意味着什么？</p>
<p>这意味着只要您坚持一些原则并保持代码模块化，那么就可以获得一种标准的、更轻松的方式维护一致的前端。</p>
<p><code>Zend_Layout</code> 并不需要与 Model-View-Controller (MVC) 一同使用。与 Zend Framework 中的大部分组件一样，<code>Zend_Layout</code> 可以被取出并独立使用，可是，当它与 MVC 一同使用时，它就变成了在 <code>Zend_View</code> 和控制器之间的一个方便的适配器，可以有效地把表示划分为一个两步骤（two-step）视图并使站点布局更具普遍性。</p>
<p>无论您是否正使用 MVC 或把<code>Zend_Layout</code> 取出作为独立的组件，必须至少创建一个布局脚本。在其他的实现中有时也称作模板，布局脚本定义了一个 Web 页面的基本前端结构，它们把变量（而不是静态数据）放置在页面上，各个页面显示的数据不尽相同（或者更准确地说，不同的动作所显示的数据是不同的）。布局脚本中占位符变量的填充方式是把布局脚本所需的值分配给布局，告诉布局您希望使用那个特定布局脚本并最终将它呈现为一个页面。</p>
<p>实际的呈现过程由 <code>Zend_View</code> 完成。因此就 <code>Zend_Layout</code> 而言，您可以免费获得 <code>Zend_View</code> 的全部功能。布局脚本应通过视图 helper 进行筛选，否则几乎肯定要做错。视图 helper 是集便利性与标准性于一体的重要组件。</p>
<p>当完成您的布局脚本后，您可以在您的引导程序中创建一个 <code>Zend_Layout</code> 实例并设置您的布局配置选项。在它以这种方式实例化后，您可以从动作中通过动作 helper 访问并重新配置 <code>Zend_Layout</code> 对象。在动作内部，您可以通过编程方式修改您希望 <code>Zend_Layout</code> 实例使用哪个布局脚本，并重新填充每个布局脚本需要的当前变量。从控制器的角度看，最后发送给用户的所有数据被放入一个适配器中，适配器把这些数据用于完全不同的范围。
<hr align=center width="100%" noShade SIZE=1>
<p>&#160;</p>
<p><a name=N10185><span class=atitle><strong>OpenID 和 InfoCard (Web 2.0)</strong></span></a></p>
<p>OpenID 是一个分散式身份识别协议，可跨多个网站使用。它不需要正确的用户名和密码组合，而是提示给用户一个从现有的 OpenID 提供者处得到的 URL 或 XRL。由提供者完成身份验证过程。提供者执行身份验证过程的一种方式是请求一个 InfoCard。当提供者成功地与请求站点完成身份验证通信后，用户就会认为是处于登录状态，并且可以从他的个人 URL 处获得额外的信息。</p>
<p>Zend Framework V1.5 不仅支持将 OpenID 和 InfoCard 作为一个客户机站点，还支持将它们作为 OpenID 提供者。这些组件完全分离，互相之间没有依赖性。这看起来很奇怪，通过 Zend Framework V1.5，您可以开发一个不支持 OpenID 的 OpenID 提供者，反之亦然（这更有意义）。框架中还有一个内置的 InfoCard 组件，它为与 OpenID 协同使用的 InfoCards 提供了依赖方（或支持 OpenID）支持。</p>
<p><a name=N10191><span class=atitle><strong>Lucene 高级搜索</strong></span></a></p>
<p>Lucene 是一个开源的信息检索搜索引擎，以它的全文本索引能力和搜索互联网能力而著名。<code>Zend_Search_Lucene</code> 组件为把 Zend Framework V1.5 交付了内置的全文本高级搜索引擎功能。需要注意的是，虽然 Lucene 是一个搜索引擎，但它没有爬行能力。您必须手动把全部相关内容添加到 <code>Zend_Search_Lucene</code> 的索引中（参见 <a href="http://www.ibm.com/developerworks/cn/opensource/os-php-zendv1.5/?S_TACT=105AGX52&amp;S_CMP=tec-csdn#resources" cmImpressionSent="1"><font color=#5c81a7>参考资料</font></a> 中关于 Lucene 的 developerWorks 文章）。</p>
<p><code>Zend_Search_Lucene</code> 组件并非首先出现在 Zend Framework V1.5 中。这个搜索引擎的早期版本早已实现。可是，Zend Framework V1.5 的发布标志着它从 V1.9 到 V2.2 这一重要升级。通过这一升级， Lucene 组件获得了三种强大的高级搜索选项。</p>
<p>现在它已经支持一个或多个通配符，用于范围搜索或模糊搜索。范围搜索在一个指定上下界的范围内查找指定字段的值，而模糊搜索查找与用户提供的术语相似的单词。例如，对 &#8220;Mike&#8221; 的模糊搜索可能会返回 &#8220;bike&#8221; 和 &#8220;mire&#8221;。</p>
<p>虽然 Lucene 组件进行了升级，原有的功能仍然存在，并且所有以前存在的索引在增强的 <code>Zend_Search_Lucene</code> 组件第一次用到它们时会自动升级。</p>
<p><a name=N101B7><span class=atitle><strong>LDAP 授权</strong></span></a></p>
<p>轻量级目录访问协议（LDAP）在 Zend Framework 中刚刚得到支持。这对于很多开发人员来说是个好消息，比如那些需要创建使用一组现有的正式企业凭证的企业内部网应用程序的开发人员。在 Zend Framework 的文档中需要注意到，当前的支持仅仅是一个最基本的实现，仅仅交付了完成 <code>Zend_Auth_Adapter_LDAP</code> 工作所需的最少功能。</p>
<p>您的 config.ini 文件中指定了有关 LDAP 服务器的信息。当用户需要身份验证时，需要提供用户名和密码组合，这些内容和一些附加的 <code>Zend_LDAP</code> 选项将被发送到 .ini 文件指定的 LDAP 服务器上进行身份验证。就像所有其他的授权适配器一样，只要 <code>Zend_Auth_Adapter_Ldap</code> 从服务器中用下列方法得到一个授权后，它就立即返回一个 <code>Zend_Auth_Result</code> ：<code>getCode()</code> 将返回发生事件的代码（通过或失败）； <code>getIdentity()</code> 将返回进行身份验证尝试的身份；<code>getMessages()</code> 将只包含失败了的身份验证消息；而如果成功通过身份验证则 <code>isValid()</code> 将返回真。</p>
<p><a name=N101E3><span class=atitle><strong>Nirvanix、Technorati 和 SlideShare Web 服务</strong></span></a></p>
<p>三种新的 Web 服务组件也成功加入到 Zend Framework V1.5 中：Nirvanix、Technocrati 和 SlideShare。</p>
<p>Nirvanix 是一个基于互联网的文件存储系统，它允许注册用户通过自己的 API 存储、操作和访问文件。Nirvanix 的设计目的是处理大型的媒体文件（例如视频），并且在能够通过互联网身份验证的任何位置进行访问。</p>
<p>Technorati 是一个博客（blog）搜索引擎，它的 Web 服务允许您对其数据库进行多种不同的查询，包括常规关键字搜索、标记搜索、top 标记搜索、给定关键字的每日博客总数以及 &#8220;cosmos&#8221; 搜索（可返回包含特定 URL 链接的结果）。使用 Technorati，您可以快速了解到当天最热门的网络话题并随时保持关注。</p>
<p>Slideshare.net 是一个为注册用户托管幻灯片的网站。通过 Slideshare 组件，您可以在您的 PHP 应用程序中嵌入由 Slideshare 托管的幻灯片，观看可以共享的幻灯片，还可以为您的 Slideshare 帐户上传新的幻灯片。</p>
<p>这三个组件加入到 Zend Framework 目前支持的 Web 服务列表中。不断增加的 Web 服务组件库使您可以快速、轻松地把来自多个流行网站的内容集成到一个 PHP 应用程序中。这些 Web 服务组件可以单独安装，无需安装其他的 Zend Framework 组件，这种特性非常受欢迎，适合于 PHP 开发新手以及经验丰富、喜欢使用不同框架工作的 PHP 开发人员。</p>
<p>接下来，我们将查看一些特性增强，这种增强是对现有特性和组件的重大更新，现有组件和特性需要进行修改，从而满足不断变化的互联网领域的需求。</p>
<p><a name=N101FB><span class=atitle><strong>Google GData</strong></span></a></p>
<p><code>Zend_GData</code> 组件本质上是面向支持 GData API 的各种 Google 服务的大型适配器。可被 <code>Zend_GData</code> 组件访问的更新后的 GData 服务列表包括：</p>
<ul>
    <li>Google Base
    <li>Google Blogger
    <li>Google Calendar
    <li>Google Codesearch
    <li>Google Documents List
    <li>Google Notebook
    <li>Google Provisioning
    <li>Google Spreadsheets
    <li>Picasa Web Albums
    <li>YouTube </li>
</ul>
<p>也许在 Zend Framework V1.5 中人们最期待的新的 Web 服务支持是对 YouTube API 的支持。现在，通过使用 <code>Zend_GData</code>，您可以使用很多匹配条件搜索并访问 YouTube 视频、访问视频提要和订阅、查看用户个人信息，查看一个特定用户的全部视频和最受欢迎的视频并获取评论。通过现有的功能，可以找到适当的 YouTube 内容并把它们无缝集成到您的 PHP 应用程序中。</p>
<p>目前，Zend Framework 的 YouTube API 支持是只读的。</p>
<p><a name=N1023F><span class=atitle><strong>对 Ajax 支持的改进： <code>ContextSwitch</code> helper 和 REST</strong></span></a></p>
<p>Asynchronous JavaScript + XML (Ajax) 对将信息传送到客户机的浏览器会话的方式产生了深远影响。非常简单：使用 Ajax 客户端 JavaScript 可以请求并接收来自外部信息源的信息，无需离开主窗口位置导航或重新装载。Ajax 大量应用于 Web 应用程序中，如 Gmail，后者在更新信息时保持基础窗口不变，且无需重新装载整个窗口。</p>
<p>Zend Framework V1.5 已经通过 <code>ContextSwitch</code> helper 和 <code>Zend_REST</code> 组件改进了原生 Ajax 支持。</p>
<p><code>ContextSwitch</code> helper 是 <code>Zend_Controller</code> 的一部分，用于以不同的格式或上下文传送现有内容。例如，假设您已经创建了一个用于创建页面的控制器，它列出您在过去三周内吃过的全部早餐的详细信息。通常，这将通过含有布局和视图（与浏览器友好的网站的其余内容保持一致）的页面显示。现在假设某个人问您是否能以 XML 的形式提供同样的列表。使用 <code>ContextSwitch</code>，您不需要再创建单独的控制器。只需告诉 helper 它可以显示 XML 并且创建 XML 视图脚本，而不是普通的上下文视图脚本。它将确保文档扩展和标题恰当且形式良好，并且以 Ajax 友好的 XML 形式显示您的全部早餐。</p>
<p>现在，事情甚至更加简单了：在 Zend Framework V1.5 中有一个 <code>AjaxContext</code> helper，它专门用来将上下文切换到 XML，从而构建 Ajax 响应。</p>
<p>对 Ajax 的支持继续扩展到 <code>Zend_REST</code> 组件，它包含 REST 客户机和全部的 REST 服务器功能。<code>Zend_REST</code> 可用于生成您自己的 Web 服务或访问和解析 Web 服务。当然，您发布的 XML Web 服务可通过 Ajax 轻松地进行访问。</p>
<p><a name=N10278><span class=atitle><strong>结束语</strong></span></a></p>
<p>我们已经了解到，Zend Framework V1.5 实现了很多令人兴奋的进展。某些更新可以简化一些日常任务的正确设置，而其他更新则使选项更容易访问。全部这些更新都为您提供了更加强大的功能，这永远不会是坏事。</p>
<p><br>&nbsp;</p>
<img src ="http://www.phpweblog.net/yemoo/aggbug/4351.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-06-03 08:43 <a href="http://www.phpweblog.net/yemoo/archive/2008/06/03/4351.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><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也要做Windows平台的一等公民【转自infoQ】</title><link>http://www.phpweblog.net/yemoo/archive/2007/10/18/2096.html</link><dc:creator>Yemoo'S PHP Home</dc:creator><author>Yemoo'S PHP Home</author><pubDate>Thu, 18 Oct 2007 09:49:00 GMT</pubDate><guid>http://www.phpweblog.net/yemoo/archive/2007/10/18/2096.html</guid><wfw:comment>http://www.phpweblog.net/yemoo/comments/2096.html</wfw:comment><comments>http://www.phpweblog.net/yemoo/archive/2007/10/18/2096.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.phpweblog.net/yemoo/comments/commentRss/2096.html</wfw:commentRss><trackback:ping>http://www.phpweblog.net/yemoo/services/trackbacks/2096.html</trackback:ping><description><![CDATA[<p>虽然PHP已经被众多大型网站采用，但Windows平台似乎总是给它&#8220;二等公民&#8221;的待遇，这突出体现在PHP代码在Windows平台的执行效率上。不过面对Java、Ruby和Flash社区的压力，微软将在即将发布的Windows Server 2008中提供用于IIS 7的免费模块——FastCGI，该模将帮助PHP提升为Windows平台的&#8220;一等公民&#8221;。</p>
<p>在近期召开的<a href="http://www.zendcon.com/" target=_blank>Zend Conference</a>上，该公司公布了一系列吸引Windows平台开发人员的利好消息，其中PHP在Windows平台执行效率会有较大提升的消息格外引人注目。Zend与微软合作的成果是一个叫FastCGI的IIS模块，虽然之前Zend之前曾经自己开发过一个同名的模块，但由于没有操作系统底层机制的支持，该模块很快成为历史。随着Flash和J2EE的快速发展，PHP与ASP.NET理智地走到一起，通过此次合作Zend获得了来自微软提供的面向IIS 6、IIS 7、SQL Server 2005和SQL Server 2008的专用扩展，而微软也得到了PHP对ASP.NET、CardSpace（.NET 3.0+提供的身份机制）的互操作支持。</p>
<p>之前为了充分招揽开发团队，PHP对Linux平台作了专门的定制，同时由于&#8220;开源&#8221;的优势，它获得了IBM和Oracle的支持，其中Zend Studio for Eclipse将会在Eclipse框架下，借助相关的开源产品形成PHP的全开发生命期的支持。由于与Web的密切关系，为了进一步适应SOA环境的需要，Zend也致力于自己Zend Framework的开发，虽然Zend声称该产品是对.NET Framework和Java EE的有利回应，但它还需要依赖IBM、Google和微软的支持，毕竟相关Web Service标准中IBM和微软的势力还是最大的，而Google API则代表着下一轮面向Web架构（WOA）的趋势。</p>
<p>在数据库支持方面，PHP与MySQL的融合一直很默契，但考虑到主流商用数据库的市场份额，为了能适应企业环境的开发，PHP曾经与Oracle、DB2多次进行了阶段性合作，对上述三个数据库提供比较全面的支持。但对于SQL Server 2005而言，PHP一直只能算是编外，在连通性方面不仅与Native的ASP.NET有很大差别，与Java也有很大差距，考虑到PHP开发团队绝大部分在Windows平台工作，而且SQL Server普遍存在于各种规模的公司，相对MySQL、Oracle、DB2而言SQL Server 2005对于中小型规模项目有比较&#8220;中庸&#8221;的优势，因此此次Zend与微软合作的另一个重点就是SQL Server 2005（以及即将发布的SQL Server 2008）。</p>
<p>此外，此次会议上Zend还公布了下一版本PHP计划要发布的新特性，包括命名空间（Namespace）和国际化支持（Internationalization），这些都会让PHP向一个更&#8220;程序员&#8221;化的语言发展。<br></p>
<img src ="http://www.phpweblog.net/yemoo/aggbug/2096.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-10-18 17:49 <a href="http://www.phpweblog.net/yemoo/archive/2007/10/18/2096.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java上的PHP：对两者都好？【转自infoQ】</title><link>http://www.phpweblog.net/yemoo/archive/2007/10/18/2095.html</link><dc:creator>Yemoo'S PHP Home</dc:creator><author>Yemoo'S PHP Home</author><pubDate>Thu, 18 Oct 2007 09:34:00 GMT</pubDate><guid>http://www.phpweblog.net/yemoo/archive/2007/10/18/2095.html</guid><wfw:comment>http://www.phpweblog.net/yemoo/comments/2095.html</wfw:comment><comments>http://www.phpweblog.net/yemoo/archive/2007/10/18/2095.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.phpweblog.net/yemoo/comments/commentRss/2095.html</wfw:commentRss><trackback:ping>http://www.phpweblog.net/yemoo/services/trackbacks/2095.html</trackback:ping><description><![CDATA[<p>　　越来越多的迹象表明PHP与Java/JEE开发社区的关系越来越密切，越来越明显。IBM和Caucho都为Java上的PHP架构进行了巨大的投入。Sun、Oracle和BEA在过去的18个月中，也都宣布了集成PHP或者与Zend建立伙伴关系。Jerry Cuomo（IBM的WebSphere CTO）和Scott Ferguson（Resin Java Application Server及最近的Quercus PHP引擎）与我们一起讨论了PHP如何融入Java的世界。目前IBM在Java/PHP混合系统方面最直接的投入是Project Zero，一个开发中的新的Web框架，支持Groovy和PHP脚本语言。当被问到为何IBM选择在Project Zero项目里支持PHP，Jerry有些话要说： </p>
<p>　　Jerry：三个词——敏捷性（Agility）、内容（Content）、训练（Educated）。是的，PHP是我们的ACE。 </p>
<p>　　敏捷性（Agility）。J2EE应用是为了&#8220;永久的价值&#8221;而优化的&#8230;&#8230;也就是说，写出来的程序是打算要一直运行下去。PHP脚本是为了&#8220;在周五之前投入运行&#8221;而优化的。也就是说，PHP让你快速简洁地编写代码，这对于许多应景而生的应用是合适的。 </p>
<p>　　内容（Content）。我们叫它&#8220;剪贴式编程&#8221;。网上有不计其数的PHP资源。你很少需要从头开始编写什么东西。搜索，剪切，粘贴，你就可以收工了&#8230;&#8230;（这又涉及到敏捷性）。 </p>
<p>　　训练（Educated）。PHP很容易自学。编写PHP脚本对很多人来说都非常容易，即使是没有受过正规计算机科学教育的人。例如，像内存管理和线程这种复杂的东西，在你编写PHP脚本的时候绝不会成为注意力的中心。而且就如我在上一点所说，大多数时候你都是在修改利用别人的代码。</p>
<p>　　Caucho采取的途径与IBM不同。Project Zero看起来好像是一个Java/Groovy框架，只不过刚好也支持PHP语言。而Quercus，是能够与mod_php竞争的完整的PHP语言实现。它是一个令人印象深刻的实现。事实上整个PHP解释器都是用Java编写的，因此不仅能够提供原生的Java/PHP集成，还有效利用了JVM的强大能力来达到极高的效率和安全性。对于从技术的角度看，Java如何令Quercus脱颖而出，Scott如是说： </p>
<p>　　Scott：Java平台的线程、缓存和池技术是Quercus成功的关键。大多数Quercus库的实现都只是对相应Java功能的包装。例如，数据库访问就是对JDBC的包装。因为Java平台已经提供了坚实的基础，Quercus不费吹灰之力就得到了那些强大的能力。 </p>
<p>　　而且反射、内存管理、JDK 1.5 Annotation和动态编译/类装载，这些都是Quercus所需的。虽然我们不能像C PHP一样使用智能指针来编程，我们却可以获得干净的OO设计，并依赖Java去处理内存的问题。 </p>
<p>　　当然还有运行分析（profiling）。Quercus自动从JVM的CPU和堆运行分析中得益。因为编译后的Quercus函数实际上就是Java方法，我们可以准确地从运行分析中看出哪一块代码运行得太慢或者消耗了太多内存。 </p>
<p>　　快速、轻量并且广泛接受的Web层框架一直是Java平台难以完成的目标，我们向Jerry和Scott两人都提出了同一个问题：他们投入于PHP运行时的领域，是否由于感觉到Java社区已经放弃了使用基于Java的框架来完成高效Web层开发，转而在这一层使用动态脚本语言。他们都认为我的提问夸大了弃用Java的趋势，他们如此描述使用Java和使用PHP之间的平衡： </p>
<p>　　Jerry：&#8220;转移&#8221;和&#8220;放弃&#8221;的说法有点过了。我觉得应该说我们正&#8220;把Java提升到更高级的行政职位上&#8221;。Java自己赢得了这样的位置。这并不是一个非黑即白的问题。除了Java目前的角色，我相信它可以成为这些动态脚本语言的&#8220;系统编程&#8221;环境。就像Java与C/C++的关系。现在Java（以及JVM）需要成长（和退缩）来支持各种DSL。例如，当今的Java是为长期运行的应用和进程而优化的。DSL则是短命的，经常来来去去。 </p>
<p>　　Scott：我们不建议完全抛弃Java。Web应用框架底下的基础设施如Spring、JPA/Hibernate，工具如Coherence，测试框架如JUnit，Java在这些方面是无与伦比的，远胜过脚本世界中任何东西。除此之外，应用级缓存、服务、事件和线程这些不为人所见的东西用Java会好得多。如果你看看像Mediawiki（维基百科所用的程序）这样的PHP应用，可以明显地看出底层代码如果用Java编写会好很多。 </p>
<p>　　Quercus/PHP的成功之处是在它的表现层，脚本可以满足许多特别要求灵活性的情况。Java表现框架如JSF、JSP/JSTL、Struts、Velocity，没有一个能达到完整的脚本语言的灵活性和库能力。许多框架，如JSP/JSTL，都是部分的语言实现。为什么不干脆用一个完整的脚本语言，再加上一个庞大的库呢？已经有巨大数量的网站证明了这种脚本语言的成功。 </p>
<p>　　因此我们认为结合Java（用在后台、模型和底层服务），把PHP/Quercus用于表现层以及任何需要脚本的地方（如取代BPEL），会是最佳的选择。 <br>我们还问到如何比较PHP和其他语言，如Ruby和Groovy。我们请Scott告诉我们为什么他写了一个PHP而不是Ruby解释器？ </p>
<p>　　Scott：我们希望选择一门已经在Web开发社区里证明了自身的语言，而PHP是占统治地位的语言。Ruby目前仍然是一门实验性的语言。Ruby语言虽然有很多令人喜爱之处，但也有一些问题。Ruby使用了一些高级语言结构如闭包和Continuation，从这个方面来说很像Scheme。我个人很喜欢这些特性，但我的经历告诉我很多程序员都会被这些东西吓倒，因此会损害接受程度。PHP就像BASIC，任何人都可以学会。我会捧Ruby的场，我希望它成功，但当我们必须选择如何分配有限的时间，我们不得不先让Ruby等等看。 </p>
<p>　　我们问Jerry是否认为PHP会继续成长，特别是在面临Ruby on Rails的竞争之下。我们还询问了PHP5中引入的面向对象是否让PHP更适合Project Zero这样的框架。最后，由于Project Zero同时支持Groovy和PHP，我们问Jerry一个新接触Project Zero并且不懂Groovy也不懂PHP的开发者，应该选择哪种语言： </p>
<p>　　Jerry：PHP是和Ruby或者Groovy不一样的动态脚本语言&#8230;&#8230;这话大概没错。不过，要想让世界上最受欢迎的应用（想想看Wordpress、PHPBB&#8230;&#8230;）都用这些语言编写，它们还有很长的路要走。只要PHP应用还在发挥作用，就会有新的开发者学习PHP。考虑到大学生中流行的大多数工具都是用PHP写的，将会继续出现新一代的PHP程序员。 </p>
<p>　　虽然如此，PHP是否会继续成长还不清楚&#8230;&#8230;它已经很庞大了，而且还存在很多竞争者，它们的语法更加清晰更加简洁。到时候再看。 </p>
<p>　　不过，（PHP语言有或没有OO特性）这并不是PHP被包括进Project Zero的原因。包括它是因为ACE。&#8230;&#8230;如果你是一名Java程序员，应该从Groovy开始。Java程序员已经期盼了很久Project Zero所提供的那种敏捷特征。我们希望这对你&#8220;百利而无一害&#8221;。你既可以接着用Java，又可以做动态脚本编程。然而，如果你没有深厚的Java背景，或者你打算利用网上已经存在的资源——PHP是创造敏捷应用的好手段。<br></p>
<img src ="http://www.phpweblog.net/yemoo/aggbug/2095.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-10-18 17:34 <a href="http://www.phpweblog.net/yemoo/archive/2007/10/18/2095.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>1</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编辑器[下]【转自openself's Blog】</title><link>http://www.phpweblog.net/yemoo/archive/2007/09/29/2049.html</link><dc:creator>Yemoo'S PHP Home</dc:creator><author>Yemoo'S PHP Home</author><pubDate>Sat, 29 Sep 2007 06:53:00 GMT</pubDate><guid>http://www.phpweblog.net/yemoo/archive/2007/09/29/2049.html</guid><wfw:comment>http://www.phpweblog.net/yemoo/comments/2049.html</wfw:comment><comments>http://www.phpweblog.net/yemoo/archive/2007/09/29/2049.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.phpweblog.net/yemoo/comments/commentRss/2049.html</wfw:commentRss><trackback:ping>http://www.phpweblog.net/yemoo/services/trackbacks/2049.html</trackback:ping><description><![CDATA[通过（上）的讲解，相信大家已经对SciTE有了比较多的了解了，也相信有不少人去主页下载了回来。但是用了之后好像还是没有我所说的一些功能，现在就来为讲解一些比较有用的功能。<br>&nbsp;&nbsp;&nbsp; 先来说缩略语的定义与使用。<br>&nbsp;&nbsp;&nbsp; 缩略语的作用就是用来减轻人的劳动力，让<a onclick="javascript:tagshow(event, '%B4%FA%C2%EB');" href="javascript:;" target=_self><u><strong><font color=#000066>代码</font></strong></u></a>输入更爽，更快，更正确！运行SciTE，选择&#8220;选项--&gt;打开Abbreviations文件&#8221;，这时打开的就是定义缩略语的文件，应该是一个空文档，让我们先举个例子来感受一下，在<font size=3>Abbreviations文件里输入下面的定义信息：<br><span style="COLOR: rgb(0,1,255)">js=&lt;scrīpt type="text/javascrīpt"&gt;\n&lt;!--\n\t|\n//--&gt;\n&lt;/scrīpt&gt;</span><br>注意：每条定义一定要保持在同一行。<br>保存后新建一个空白的文档，在文档中输入js，然后按ctrl+B，看看出现了什么？应该是如下的代码：<br>&lt;scrīpt type="text/javascrīpt"&gt;<br>&lt;!--<br>&nbsp;&nbsp;&nbsp; (光标)<br></font><font size=3><span style="FONT-WEIGHT: bold"></span></font>
<div style="TEXT-ALIGN: left"><font size=3><span style="FONT-WEIGHT: bold"></span>//--&gt;<br>&lt;/scrīpt&gt;<br>这样，在输入代码的时候是不是快捷又高效，还不易出错。<br>&nbsp;&nbsp;&nbsp; 定义的语法很简单，就是"缩略语=完全拼写"，不过要注意两点，一个是转移字符，就是反斜杠"\"，和C语言的转义一样，\n是换行，\t是制表符，等等。另外一个是竖线"|"代表光标所在的位置，一条定义中不能出现多个竖线，如果有多个以第一个竖线的位置为光标的位置，其余的竖线就直接显示输出成竖线了！<br>&nbsp;&nbsp;&nbsp; 缩略语的定义文件没有发现下载，不过下载别人的定义也不见得适合自己，还是靠自己慢慢积累吧！下面举几个我常用的例子：<br><span style="COLOR: rgb(0,1,255)">php_=&lt;?PHP\n\t//insert <a onclick="javascript:tagshow(event, 'PHP');" href="javascript:;" target=_self><u><strong><font color=#000066>PHP</font></strong></u></a> code here.\n\t|\n?&gt;<br>&lt;&gt;_=&amp;lt;|&amp;gt;<br>__=&amp;nbsp;<br>for_=for ($i=0;$i&lt;|;$i++){\n\t\n}<span style="COLOR: rgb(0,1,2)"> <br>&nbsp;&nbsp;&nbsp; 让SciTE可以运行<a onclick="javascript:tagshow(event, 'HTML');" href="javascript:;" target=_self><u><strong><font color=#000066>HTML</font></strong></u></a>代码的配置很简单，选择&#8220;选项--&gt;打开html.properties&#8221;，这就是HTML的语法文件，看文件的最后几行，这是运行HTML后缀的配置，如果你的电脑上没有搭建本地服务器的话就让配置的值为"file://$(FilePath)"，如果你已经搭建了本地服务器，建议把配置值改成"http://localhost/$(FileNameExt)"，这样就会避免在本地运行正常而上传到服务器却出错的问题。尤其是绝对路径和相对路径的问题。</span></span></font><br><font size=3><span style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,2)"><span style="COLOR: rgb(0,1,255)">if PLAT_WIN</span><br style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,255)">&nbsp;&nbsp;&nbsp; command.go.$(file.patterns.web)="file://$(FilePath)"<br style="COLOR: rgb(0,1,255)"></span><span style="COLOR: rgb(0,1,255)">&nbsp;&nbsp;&nbsp; command.go.subsystem.$(file.patterns.web)=2</span><br style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,255)">if PLAT_GTK</span><br style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,255)">&nbsp;&nbsp;&nbsp; command.go.$(file.patterns.web)=netscape "file://$(FilePath)"<br>&nbsp;&nbsp;&nbsp; <span style="COLOR: rgb(0,1,2)">下面的配置是编译和运行PHP代码的，要想运行PHP代码，你的机器上必须搭建好PHP平台。运行的配置是前两行，第三行是编译配置，要注意的正确配置你的PHP路径，就是php.exe的路径。</span><br style="COLOR: rgb(0,1,255)"></span><span style="COLOR: rgb(0,1,255)">command.go.$(file.patterns.php)="http://localhost/$(FileNameExt)"</span><br style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,255)">command.go.subsystem.$(file.patterns.php)=2</span><span style="COLOR: rgb(0,1,255)"></span><br style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,255)">command.compile.$(file.patterns.php)=F:\PHP5\php -l "$(FileNameExt)"<br>&nbsp;&nbsp;&nbsp; <span style="COLOR: rgb(0,1,2)">（To be continued...）</span><br style="COLOR: rgb(0,1,255)"></span></span></span></font></div>
<img src ="http://www.phpweblog.net/yemoo/aggbug/2049.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 14:53 <a href="http://www.phpweblog.net/yemoo/archive/2007/09/29/2049.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用sciTE Editor打造最强的PHP编辑器[上]【转自OpenSelf 's Blog】</title><link>http://www.phpweblog.net/yemoo/archive/2007/09/29/2048.html</link><dc:creator>Yemoo'S PHP Home</dc:creator><author>Yemoo'S PHP Home</author><pubDate>Sat, 29 Sep 2007 06:51:00 GMT</pubDate><guid>http://www.phpweblog.net/yemoo/archive/2007/09/29/2048.html</guid><wfw:comment>http://www.phpweblog.net/yemoo/comments/2048.html</wfw:comment><comments>http://www.phpweblog.net/yemoo/archive/2007/09/29/2048.html#Feedback</comments><slash:comments>11</slash:comments><wfw:commentRss>http://www.phpweblog.net/yemoo/comments/commentRss/2048.html</wfw:commentRss><trackback:ping>http://www.phpweblog.net/yemoo/services/trackbacks/2048.html</trackback:ping><description><![CDATA[学习<a onclick="javascript:tagshow(event, 'PHP');" href="javascript:;" target=_self><u><strong><font color=#000066>PHP</font></strong></u></a>有一段日子了，最开始用DW，嫌太大，我的破电脑承受不了，可视化设计是很好，但是<a onclick="javascript:tagshow(event, '%B4%FA%C2%EB');" href="javascript:;" target=_self><u><strong><font color=#000066>代码</font></strong></u></a>编辑部分的功能不是很顺手，尤其是编写PHP代码。后来用一冲动改用Notepad，事实证明它就是<a onclick="javascript:tagshow(event, '%B1%E0%BC%AD%C6%F7');" href="javascript:;" target=_self><u><strong><font color=#000066>编辑器</font></strong></u></a>中的废物，除了能编辑，什么都不能，放弃！用Notepad写代码的人估计不是神就是疯子。于是去google，baidu搜啊搜，EditPlus，UltraEdit，Notepad2（这也是一款不错的编辑器，完全可以替代Notepad），Notepad++，<a onclick="javascript:tagshow(event, 'Zend');" href="javascript:;" target=_self><u><strong><font color=#000066>Zend</font></strong></u></a>（又大又慢），PHPDesigner，PHPCoder，DZ，PHPxxx，...，甚至VIM（据说很强大），寻寻觅觅，终于有一天让我找到了SciTE，它免费，它<a onclick="javascript:tagshow(event, '%BF%AA%D4%B4');" href="javascript:;" target=_self><u><strong><font color=#000066>开源</font></strong></u></a>，它小巧，它强大，一个字：趁手！<img title=点击图片可在新窗口打开 style="CURSOR: pointer" src="http://www.phpchina.com/images/edit/face/027.gif"><br>&nbsp;&nbsp;&nbsp; 不过对于一个从来没用过它的人来说，很难发现它的过人之处，修改和定制它的配置不亚于编写程序（全部是直接改配置文件，没有配置向导）！所以也许有人下载下来写了三行代码就Delete了，&#8220;什么玩意儿，太难用了！&#8221;。所以很少人用它来编写和调试代码。<br>&nbsp;&nbsp;&nbsp; 实在不忍心让这么好的编辑器埋没了，于是有了这篇文字，让大家了解它，配置它，使用它，最后爱上它。<br>&nbsp;&nbsp;&nbsp; 废话不多说，先来看一下SciTE的屏幕截图：<br>&nbsp;&nbsp;&nbsp; 1，无需安装，下载后解压缩即可运行，纯绿色，所有文件加起来大小不超过2M。完全可以放到U盘里。<br><a href="http://www.phpchina.com/batch.download.php?aid=2393" target=_blank><img src="http://www.phpchina.com/attachments/2007/05/30501_200705060017271.gif" border=0></a><br>&nbsp;&nbsp;&nbsp; <font size=3>2，运行时截图。多文档打开，标签页，行号，书签，语法<a onclick="javascript:tagshow(event, '%B8%DF%C1%C1');" href="javascript:;" target=_self><u><strong><font color=#000066>高亮</font></strong></u></a>，代码折叠，右侧的输出窗口，标签上的未保存提示，代码缩进线，括号匹配，智能缩进。这些都是作为一个代码编辑器必须有的功能，SciTE当然有。现在你可能还没有感觉到它有什么过人之处，不要着急，接着往下看。<br></font><a href="http://www.phpchina.com/batch.download.php?aid=2396" target=_blank><img style="WIDTH: 400px" src="http://www.phpchina.com/attachments/2007/05/30501_200705060051001.jpg" border=0></a><br>&nbsp;&nbsp;&nbsp; <font size=3>3，是的，<a onclick="javascript:tagshow(event, '%D7%D4%B6%AF%CD%EA%B3%C9');" href="javascript:;" target=_self><u><strong><font color=#000066>自动完成</font></strong></u></a>和函数提示。<br></font><a href="http://www.phpchina.com/batch.download.php?aid=2397" target=_blank><img style="WIDTH: 400px" src="http://www.phpchina.com/attachments/2007/05/30501_200705060103021.jpg" border=0></a><br><span style="TEXT-DECORATION: underline"><br></span><a href="http://www.phpchina.com/batch.download.php?aid=2398" target=_blank><img style="WIDTH: 400px" src="http://www.phpchina.com/attachments/2007/05/30501_200705060106561.jpg" border=0></a><br>&nbsp;&nbsp;&nbsp; <font size=3>有点儿意思了吧，远不止这些。SciTE另外一个比较有意思的功能就是自定义缩略语，是什么呢？比如每次都输入&lt;?PHP ?&gt;是不是很烦，你可以把这段代码定义成缩略语，就叫php把，格式呢就像这样：<br>php=&lt;?PHP\n\t//comment\n\t|\n?&gt;<br>现在再输入php，再按ctrl+B，就会出现下面的内容：<br>&lt;?PHP<br>&nbsp;&nbsp;&nbsp; //comment<br>&nbsp;&nbsp;&nbsp; <br>?&gt;<br>光标会停在定义中"|"符号所在的位置。<br>&nbsp;&nbsp;&nbsp; 还有一个比较贴心的设计，就是之前输入过的单词（不一定是英文单词，应该是连续的字符），再次输入这个单词的前几个字符，就会出现如代码自动完成一样的一个列表，你可以选择想要的单词。对我这样打字比较慢的人来说简直太有用了！<br>&nbsp;&nbsp;&nbsp; SciTE最大的有点就是超强的定制性，几乎所有的功能都可以用户自定义，下面就来说说它的一些配置。<br>&nbsp;&nbsp;&nbsp; 怎么图片都显示不出来？<img title=点击图片可在新窗口打开 style="CURSOR: pointer" src="http://www.phpchina.com/images/edit/face/017.gif"><br>&nbsp;&nbsp;&nbsp; 建议下载压缩包，不要下载安装包。包括主程序一个，动态库一个（没有这个DLL也可以正常运行），配置文件和语法文件（*.properties）N个，API文件（*.api）好像没有。<br>&nbsp;&nbsp;&nbsp; 本人英文不怎么样，先说说汉化的方法：<br>&nbsp;&nbsp;&nbsp; 下载简体中文的语言文件，改名为locale.properties，复制到SciTE文件目录中覆盖原来的文件，再运行程序就变成了中文界面，连提示也变了。<br>&nbsp;&nbsp;&nbsp; 然后开始真正配置你自己风格的SciTE：<br>&nbsp;&nbsp;&nbsp; 运行SciTE，选择菜单&#8220;选项--&gt;打开Global Options文件&#8221;，打开的就是SciTE的全局配置文件，建议不要改动这个文件，以后再改动配置的时候以这个文件作为参考和对照。然后同样打开&#8220;User Options文件&#8221;，空文件对不对，把Global Options文件中所有内容复制过来，意思是所有的全局配置都在User Options文件中改，User文件的配置会覆盖Global的配置。<br>下面的这段作用是运行时窗口大小位置以及一些外观，以#开头的是注释，很好理解吧。只说WIN平台下的配置，其他的平台同样，很多配置项是注释掉的，把行首的#去掉才可以起作用。<br><span style="COLOR: rgb(0,1,255)"># Window sizes and visibility</span><br style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,255)">if PLAT_WIN（windows平台）</span><br style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,255)">&nbsp;&nbsp;&nbsp; position.left=0（运行时窗口在桌面的坐标，最大化时不起作用）<span style="COLOR: rgb(0,1,2)"></span></span><br style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,255)">&nbsp;&nbsp;&nbsp; position.top=0（同上）</span><br style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,255)">if PLAT_GTK</span><br style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,255)">&nbsp;&nbsp;&nbsp; position.left=5</span><br style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,255)">&nbsp;&nbsp;&nbsp; position.top=22</span><br style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,255)">position.width=-1（窗口初始宽度，-1表示最大化）</span><br style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,255)">position.height=-1（同上）</span><br style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,255)">#position.tile=1</span><br style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,255)">#full.screen.hides.menu=1（全屏时隐藏菜单栏，1=true，0=false）</span><br style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,255)">#minimize.to.tray=1（最小化到托盘区，1=true，0=false）</span><br style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,255)">split.vertical=1（窗口垂直分割，和输出窗口的分割）</span><br style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,255)">#output.horizontal.size=200（水平模式</span></font><font size=3><span style="COLOR: rgb(0,1,255)">输出窗口大小</span></font><font size=3><span style="COLOR: rgb(0,1,255)">）</span><br style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,255)">#output.vertical.size=60（垂直模式输出窗口大小）</span><br style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,255)">#output.initial.hide=1（输出窗口默认隐藏）</span><br style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,255)">#horizontal.scrollbar=0（水平滚动条不可见）</span><br style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,255)">#horizontal.scroll.width=10000（水平滚动条最大滚动范围）</span><br style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,255)">#output.horizontal.scrollbar=0（参考上面）</span><br style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,255)">#output.horizontal.scroll.width=10000（参考上面）</span><br style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,255)">#output.scroll=0（参考上面）</span><br style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,255)">#error.select.line=1（编译错误定位到源代码）</span><br style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,255)">#end.at.last.line=0</span><br style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,255)">tabbar.visible=1（多文档标签栏可见）</span><br style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,255)">#tabbar.hide.one=1（只有一个文档是隐藏标签栏）</span><br style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,255)">#tabbar.multiline=1（多行显示标签栏）</span><br style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,255)">toolbar.visible=1（工具栏可见）</span><br style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,255)">#toolbar.detachable=1（可分割工具栏）</span><br style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,255)">#toolbar.usestockicons=1（显示用户定制工具栏）</span><br style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,255)">#menubar.detachable=1（可分割菜单栏）</span><br style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,255)">#undo.redo.lazy=1（撤销，重做选项，具体效果不知道）</span><br style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,255)">#statusbar.visible=1（状态栏可见）</span><br style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,255)">#fileselector.width=800（打开文件对话框大小）</span><br style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,255)">#fileselector.height=600（同上）</span><br style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,255)">#magnification=-1（字体放大倍数）</span><br style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,255)">#output.magnification=-1（同上）<br>&nbsp;&nbsp;&nbsp; <span style="COLOR: rgb(0,1,2)">以下是编辑区外观设置：<br><span style="COLOR: rgb(0,1,255)"># Sizes and visibility in edit pane</span><br style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,255)">line.margin.visible=1（行号区的缩进）</span><br style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,255)">line.margin.width=3+（行号显示的位数，3+表示默认3位数，不够再加）</span><br style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,255)">margin.width=0（行号缩进的宽度，最好不缩进）</span><br style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,255)">#fold.margin.width=16（代码折叠区的宽度）</span><br style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,255)">#fold.margin.colour=#FF0000（折叠区颜色）</span><br style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,255)">#fold.margin.highlight.colour=#0000FF（折叠符号颜色）</span><br style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,255)">#blank.margin.left=4（编辑区左边空白宽度）</span><br style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,255)">#blank.margin.right=4（同上）</span><br style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,255)">buffered.draw=1（缓存载入和高亮，建议打开，可以提高速度，但是内存会占用多一点，这应该不是什么问题）</span><br style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,255)">#two.phase.draw=0（作用同上）</span><br style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,255)">use.palette=0（不清楚什么作用）<br>&nbsp;&nbsp;&nbsp; <span style="COLOR: rgb(0,1,2)">接着看：</span><br># Element styles<br>#view.eol=1（载入时定位到文档尾）<br>#control.char.symbol=.（？？？）<br>caret.period=500（光标闪烁频率，单位毫秒）<br>view.whitespace=0（显示空白符号）<br>view.indentation.whitespace=1（以空格和退格表示缩进）<br>view.indentation.guides=1（显示缩进线，写代码会很有用）<br>highlight.indentation.guides=1（高亮时同时高亮缩进线）<br>#caret.fore=#FF0000（光标颜色）<br>#caret.width=2（光标宽度）<br>#caret.line.back=#FFFED8（当前行背景色）<br>#caret.line.back.alpha=63（当前行背景透明度）<br>edge.column=200（列模式下列数）<br>edge.mode=0（列模式开关）<br>edge.colour=#C0DCC0（列模式颜色）<br>braces.check=1（？？？）<br>braces.sloppy=1（？？？）<br>#selection.fore=#006000（选中文字的晚色）<br># DADADA used as background because it yields standard silver C0C0C0<br># on low colour displays and a reasonable light grey on higher bit depths<br>selection.alpha=70（选中文字背景的透明度）<br>selection.back=#0000FF（选中部分的背景色）<br>#whitespace.fore=#FF0000（空格颜色）<br>#whitespace.back=#FFF0F0（空格背景色）<br>#error.marker.fore=#0000A0（错误处的颜色）<br>#error.marker.back=#DADAFF（错误处的背景色）<br>#bookmark.fore=#808000（书签颜色）<br>#bookmark.back=#FFFFA0（书签处背景色）<br>bookmark.alpha=70（书签背景色透明度）<br>find.mark=#FF0000（查找时，找到文本的颜色）<br><span style="COLOR: rgb(0,1,2)">&nbsp;&nbsp;&nbsp; 是不是发现SciTE的定制性实在是太强了，它有好多很好的用户选项，比如单文档时不显示标签栏，全屏时隐藏菜单，更好的是你可以更改这些选项，这是其他编辑器无法比的，大部分的选项都可以从字面的意思推断出来作用，所以一些不是很重要的配置就不再解释了，你也可以把蓝色的文字复制到User Options文件中，不过记得把括号中的字去掉。好了，接着看：</span><br># Checking<br>are.you.sure=1（关闭时提示保存）<br>#are.you.sure.for.build=1（编译和运行时提示保存）<br>#save.all.for.build=1（编译时自动保存所有）<br>#quit.on.close.last=1（关闭最后一个文档是退出程序）<br>#load.on.activate=1（？？？）<br>#save.on.deactivate=1（？？？）<br>#are.you.sure.on.reload=1（重新载入文档时提示）<br>#reload.preserves.undo=1（重新载入时保护撤消列表）<br>#check.if.already.open=1（检查文档是否已经被打开）<br>default.file.ext=.cxx<br>#source.default.extensions=.h|.cxx|.bat<br>title.full.path=1（窗口标题显示文档的完整路径）<br>#title.show.buffers=1<br>#save.recent=1<br>#save.session=1<br>#open.dialog.in.file.directory=1<br>#strip.trailing.spaces=1（去掉行尾空格）<br>#ensure.final.line.end=1（去掉文档尾空行）<br>#ensure.consistent.line.ends=1<br>#save.deletes.first=1<br>buffers=10（最多打开的文档数，越多占内存越大）<br>#buffers.zorder.switching=1<br>#win95.death.delay=1000<br>#translation.missing=***<br>#read.only=1（只读方式打开）<br>#max.file.size=1（文档最大限制）<br>&nbsp;&nbsp;&nbsp; <span style="COLOR: rgb(0,1,2)">缩进，换行，代码折叠：</span><br># Indentation<br>tabsize=4（tab键缩进的字符数）<br>indent.size=4（缩进字符数）<br>use.tabs=1（使用tab键）<br>#indent.auto=1（自动缩进，就是自动保持前一行的缩进）<br>indent.automatic=1（智能缩进，和上面的区别就是有反缩进）<br>indent.opening=1（代码缩进，比如大括号回车自动缩进）<br>indent.closing=1（代码反缩进，同上）<br>#tab.indents=0（tab键缩进）<br>#backspace.unindents=0（退格键反缩进）<br><br># Wrapping of long lines<br>#wrap=1（自动换行开关，写代码一般不要打开自动换行）<br>#wrap.style=2（换行的风格，没用过）<br>#cache.layout=3<br>#output.wrap=1（输出窗口自动换行）<br>#output.cache.layout=3<br>#wrap.visual.flags=3（自动换行处的标记符）<br>#wrap.visual.flags.location=3<br>#wrap.visual.startindent=4<br><br># Folding<br># enable folding, and show lines below when collapsed.<br>fold=1（代码折叠开关，建议打开）<br>fold.compact=1（折叠指示，建议打开）<br>fold.flags=16（折叠指示区宽度）<br>fold.symbols=3（折叠符号，1，2，3分别是+-，圆圈+-，正方形+-）<br>#fold.on.open=1（打开文档后默认全部折叠）<br>fold.comment=1（代码注释折叠）<br>fold.preprocessor=1（折叠预处理）<br>&nbsp;&nbsp;&nbsp; <span style="COLOR: rgb(0,1,2)">好了，继续，这么多的配置项不要害怕，其实不用每一项都改的，好多让它保持注释或者默认值就可以了，下面是外部查找替换，这段要解释一下，所谓的外部查找和替换是指在不打开文件的情况下对文件进行全文查找和替换，是非常有用的一项功能，对于WIN平台的查找命令</span></span></span></span></font><font size=3><span style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,2)"><span style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,2)"><span style="COLOR: rgb(0,1,255)">find.command<span style="COLOR: rgb(0,1,2)">表示的意思是：在$(find.files)中包含的文件类型中查找findstr。可以自定义$(find.files)的文件类型，对于PHP程序来说，一般包括(*.php *.inc *.phtml *.php5 *.html *.js *.css)等。</span></span></span></span></span></span></font><br><font size=3><span style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,2)"><span style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,2)"><span style="COLOR: rgb(0,1,255)"># Find and Replace</span><br style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,255)"># Internal search always available with recursive capability so use in preference to external tool</span><br style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,255)">find.command=</span><br style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,255)"># findstr is available on recent versions of Windows including 2000</span><br style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,255)">#if PLAT_WIN</span><br style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,255)">#&nbsp;&nbsp;&nbsp; find.command=findstr /n /s $(find.what) $(find.files)</span><br style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,255)">#find.input=$(find.what)</span><br style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,255)">#if PLAT_GTK</span><br style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,255)">#&nbsp;&nbsp;&nbsp; find.command=grep --line-number "$(find.what)" $(find.files)</span><br style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,255)">find.files=*.c *.cxx *.h</span><br style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,255)">#find.in.files.close.on.find=0</span><br style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,255)">#find.in.dot=1</span><br style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,255)">#find.in.binary=1</span><br style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,255)">#find.replace.matchcase=1</span><br style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,255)">#find.replace.escapes=1</span><br style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,255)">#find.replace.regexp=1</span><br style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,255)">#find.replace.regexp.posix=1</span><br style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,255)">#find.replace.wrap=0</span><br style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,255)">#find.replacewith.focus=0</span><br style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,255)">#find.replace.advanced=1<br>&nbsp;&nbsp;&nbsp; <span style="COLOR: rgb(0,1,2)">编辑时的一些选项：</span><br># Behaviour<br>#eol.mode=LF（回车换行的符号，WIN为CR/LF，linux/unix为LF）<br>eol.auto=1（自动添加回车换行符号）<br>clear.before.execute=0（执行代码前清空换行符号，不要打开这项，否则代码编译器会把多行认为成一行）<br>#vc.home.key=1（VC++风格的home键功能）<br>#wrap.aware.home.end.keys=1（自动换行状态下的home,end键）<br>autocompleteword.automatic=1（这项很有用，就是自动完成之前输入过的单词）<br>#autocomplete.choose.single=1（有无自动完成选择框，默认是有的）<br>caret.policy.xslop=1（---自动完成提示框---）<br>caret.policy.width=20<br>caret.policy.xstrict=0<br>caret.policy.xeven=0<br>caret.policy.xjumps=0<br>caret.policy.yslop=1<br>caret.policy.lines=1<br>caret.policy.ystrict=1<br>caret.policy.yeven=1<br>caret.policy.yjumps=0<br>#visible.policy.strict=1<br>#visible.policy.slop=1<br>#visible.policy.lines=4（--------------）<br>#time.commands=1（自动完成延迟，毫秒）<br>#caret.sticky=1（光标延时）<br>#properties.directory.enable=1（这一定不要改，是语法支持文件中重要常量的可用性）<br>&nbsp;&nbsp;&nbsp; <span style="COLOR: rgb(0,1,2)">状态栏配置选项：</span><br># Status Bar<br>statusbar.number=4（状态栏的分栏数，下面的.1.2.3.4就是每个分栏的内容，没什么可说的，看自己的喜好了。）<br>statusbar.text.1=\<br>li=$(LineNumber) co=$(ColumnNumber) $(OverType) ($(EOLMode)) $(FileAttr)<br>statusbar.text.2=\<br>$(BufferLength) chars in $(NbOfLines) lines. Sel: $(SelLength) chars.<br>statusbar.text.3=\<br>Now is: Date=$(CurrentDate) Time=$(CurrentTime)<br>statusbar.text.4=\<br>$(FileNameExt) : $(FileDate) - $(FileTime) | $(FileAttr)<br><br>if PLAT_WIN（下面是帮助文档的路径，有个常量说明一下：</span></span></span></span></span></font><font size=3><span style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,2)"><span style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,2)"><span style="COLOR: rgb(0,1,255)">$(SciteDefaultHome)代表SciTE主程序的存放路径</span></span></span></span></span></font><font size=3><span style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,2)"><span style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,2)"><span style="COLOR: rgb(0,1,255)">）<br>&nbsp;&nbsp;&nbsp; command.scite.help="file://$(SciteDefaultHome)\SciTEDoc.html"<br>&nbsp;&nbsp;&nbsp; command.scite.help.subsystem=2<br>if PLAT_GTK<br>&nbsp;&nbsp;&nbsp; command.print.*=a2ps "$(FileNameExt)"<br>&nbsp;&nbsp;&nbsp; command.scite.help=netscape "file://$(SciteDefaultHome)/SciTEDoc.html"<br>&nbsp;&nbsp;&nbsp; <span style="COLOR: rgb(0,1,2)">国际化，让SciTE支持中文，需要在这里更改几个默认的配置，就是code.page和output.code.page都需要改成936，让编辑器支持中文编码。这样输入汉字的时候就不会有问题了。</span><br># Internationalisation<br># Japanese input code page 932 and ShiftJIS character set 128<br>#code.page=932<br>#character.set=137<br># Unicode<br>#code.page=65001<br>code.page=936<br>#character.set=204<br># Required for Unicode to work on GTK+:<br>#LC_CTYPE=en_US.UTF-8<br>output.code.page=936<br>&nbsp;&nbsp;&nbsp; <span style="COLOR: rgb(0,1,2)">外部的扩展，打印和导出文档的时候有用：</span><br># Export<br>#export.keep.ext=1（构建可执行程序支持）<br>export.html.wysiwyg=1（所见即所得支持，可以实时预览）<br>#export.html.tabs=1（<a onclick="javascript:tagshow(event, 'HTML');" href="javascript:;" target=_self><u><strong><font color=#000066>HTML</font></strong></u></a> tab键支持）<br>#export.html.folding=1（HTML折叠支持）<br>export.html.styleused=1（HTML旧风格支持）<br>#export.html.title.fullpath=1（HTML文件显示完整路径）<br>#export.rtf.tabs=1（多文档RTF支持）<br>#export.rtf.font.face=Arial（RTF文档的默认字体）<br>#export.rtf.font.size=9（同上）<br>#export.rtf.tabsize=8（同上）<br># Magnification (added to default screen font size)<br>export.pdf.magnification=0（PDF文档放大倍数）<br># Font: Courier, Helvetica or Times (Courier line-wraps)<br>export.pdf.font=Helvetica（PDF默认字体）<br># Page size (in points): width, height<br># E.g. Letter 612,792; A4 595,842; maximum 14400,14400<br>export.pdf.pagesize=595,842（PDF页面默认大小）<br># Margins (in points): left, right, top, bottom<br>export.pdf.margins=72,72,72,72（PDF默认页边距）<br>export.xml.collapse.spaces=1<br>export.xml.collapse.lines=1（<a onclick="javascript:tagshow(event, 'XML');" href="javascript:;" target=_self><u><strong><font color=#000066>XML</font></strong></u></a>支持）<br>&nbsp;&nbsp;&nbsp; <span style="COLOR: rgb(0,1,2)">常用字符列表，留下英文和数字就行了，汉字的感觉用不上。</span><br># Define values for use in the imported properties files<br>chars.alpha=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ<br>chars.numeric=0123456789<br>&nbsp;&nbsp;&nbsp; <span style="COLOR: rgb(0,1,2)">打开文件对话框的文件过滤配置，默认的文件类型是在source.files中定义的文件类型，你应该把自己最常编辑的文件类型写到source.files中，如*.php;*.html;等等。</span><br># The open.filter setting is only used on Windows where the file selector has a menu of filters to apply<br># to the types of files seen when opening.<br># There is a limit (possibly 256 characters) to the length of a filter,<br># so not all source extensions can be in this setting.<br>source.files=*.asm;*.c;*.cc;*.cpp;*.cxx;*.cs;*.h;*.hh;*.hxx;*.hpp;\<br>*.idl;*.odl;*.rc;*.rc2;*.dlg;*.def;\<br>*.vb;*.vbs;*.bas;*.frm;*.cls;*.ctl;\<br>*.java;*.js;*.php;*.py;*.pl;*.rb;*.cgi;*.lua;*.conf;\<br>make*;*.mak;\<br>*.properties;*.html;*.xml;*.iface;*.bat;*.e<br><br>if PLAT_WIN<br>&nbsp;&nbsp;&nbsp; all.files=All Files (*.*)|*.*|<br>if PLAT_GTK<br>&nbsp;&nbsp;&nbsp; all.files=All Files (*)|*|Hidden Files (.*)|.*|<br>open.filter=\<br>All Source|$(source.files)|\<br>$(all.files)\<br>$(filter.ada)\<br>$(filter.conf)\<br>$(filter.asm)\<br>$(filter.asn1)\<br>$(filter.ave)\<br>$(filter.baan)\<br>$(filter.bash)\<br>$(filter.caml)\<br>$(filter.cmake)\<br>$(filter.cpp)\<br>#$(filter.ch)\<br>$(filter.css)\<br>$(filter.d)\<br>$(filter.eiffel)\<br>$(filter.erlang)\<br>$(filter.fortran)\<br>$(filter.idl)\<br>$(filter.inno)\<br>$(filter.java)\<br>$(filter.js)\<br>$(filter.kix)\<br>$(filter.lout)\<br>$(filter.lua)\<br>$(filter.matlab)\<br>$(filter.metapost)\<br>$(filter.mmixal)\<br>$(filter.nncrontab)\<br>$(filter.nsis)\<br>$(filter.opal)\<br>$(filter.pascal)\<br>$(filter.perl)\<br>$(filter.php)\<br>$(filter.pov)\<br>$(filter.prg)\<br>$(filter.properties)\<br>$(filter.ps)\<br>$(filter.python)\<br>$(filter.ruby)\<br>$(filter.sql)\<br>$(filter.specman)\<br>$(filter.tcl)\<br>$(filter.tex)\<br>$(filter.text)\<br>$(filter.vb)\<br>$(filter.web)\<br>$(filter.yaml)\<br>$(filter.verilog)\<br>$(filter.vhdl)<br>&nbsp;&nbsp;&nbsp; <span style="COLOR: rgb(0,1,2)">比较重要的一段，下面是有关语法高亮的字体和颜色的全局配置，以后基本上所有的语法文件都要用到这里定义的字体和颜色，所以你要一定要了解每一项配置的作用范围。适当的选择你喜欢的颜色和字体，不仅可以浏览代码的时候清晰明了，而且在编写代码的时候可以对不正确的语法进行提示，SciTE的默认字体配置我个人感觉十分别扭，下面是我修改过的配置，以等宽代码字体（</span></span></span></span></span></span></font><font size=3><span style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,2)"><span style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,2)"><span style="COLOR: rgb(0,1,255)">font:Courier New,size:10</span></span></span></span></span></font><font size=3><span style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,2)"><span style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,2)"><span style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,2)">）为主。另外我只修改了WIN平台的配置，GTK的没有改过。所有的字体配置都可以见名知意，就不一一说明了，不过有一句</span></span></span></span></span></span></font><font style="COLOR: rgb(0,1,2)" size=3>font.js=$(font.base)需要注意，这是javascrīpt的基本字体，而font.base=</font><font style="COLOR: rgb(0,1,2)" size=3>font:Verdana,size:10，在字体定义之后是颜色定义，也是一些全局的配置，比如括号匹配的颜色，当前行的颜色，数字的颜色，字符串的颜色，等等。都还没有涉及到具体的语言的配置。不过具体语言文件要引用这里定义的字体和颜色，引用方法就像上面说的javascrīpt的引用方法。</font><font size=3><span style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,2)"><span style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,2)"><span style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,2)"></span><br># Give symbolic names to the set of fonts used in the standard styles.<br>if PLAT_WIN<br>&nbsp;&nbsp;&nbsp; font.base=font:Verdana,size:10<br>&nbsp;&nbsp;&nbsp; font.small=font:Verdana,size:8<br>&nbsp;&nbsp;&nbsp; font.comment=font:Comic Sans MS,size:9<br>&nbsp;&nbsp;&nbsp; font.code.comment.box=$(font.comment)<br>&nbsp;&nbsp;&nbsp; font.code.comment.line=$(font.comment)<br>&nbsp;&nbsp;&nbsp; font.code.comment.doc=$(font.comment)<br>&nbsp;&nbsp;&nbsp; font.code.comment.nested=$(font.comment)<br>&nbsp;&nbsp;&nbsp; font.text=font:Times New Roman,size:11<br>&nbsp;&nbsp;&nbsp; font.text.comment=font:Verdana,size:9<br>&nbsp;&nbsp;&nbsp; font.embedded.base=font:Verdana,size:9<br>&nbsp;&nbsp;&nbsp; font.embedded.comment=font:Comic Sans MS,size:8<br>&nbsp;&nbsp;&nbsp; font.monospace=font:Courier New,size:10<br>&nbsp;&nbsp;&nbsp; font.vbs=font:Lucida Sans Unicode,size:10<br>if PLAT_GTK<br>&nbsp;&nbsp;&nbsp; font.base=font:!Bitstream Vera Sans,size:9<br>&nbsp;&nbsp;&nbsp; font.small=font:!Bitstream Vera Sans,size:8<br>&nbsp;&nbsp;&nbsp; font.comment=font:!Bitstream Vera Serif,size:9<br>&nbsp;&nbsp;&nbsp; font.code.comment.box=$(font.comment)<br>&nbsp;&nbsp;&nbsp; font.code.comment.line=$(font.comment)<br>&nbsp;&nbsp;&nbsp; font.code.comment.doc=$(font.comment)<br>&nbsp;&nbsp;&nbsp; font.code.comment.nested=$(font.comment)<br>&nbsp;&nbsp;&nbsp; font.text=font:!Bitstream Charter,size:10<br>&nbsp;&nbsp;&nbsp; font.text.comment=font:!Serif,size:9<br>&nbsp;&nbsp;&nbsp; font.embedded.base=font:!Serif,size:9<br>&nbsp;&nbsp;&nbsp; font.embedded.comment=font:!Serif,size:9<br>&nbsp;&nbsp;&nbsp; font.monospace=font:!Bitstream Vera Sans Mono,size:9<br>&nbsp;&nbsp;&nbsp; font.vbs=font:!Bitstream Vera Sans Mono,size:9<br>font.js=$(font.base)<br><br># Old GTK+ font settings are faster but not antialiased<br>&nbsp;&nbsp;&nbsp; #~ font.base=font:lucidatypewriter,size:12<br>&nbsp;&nbsp;&nbsp; #~ font.small=font:lucidatypewriter,size:10<br>&nbsp;&nbsp;&nbsp; #~ font.comment=font:new century schoolbook,size:12<br>&nbsp;&nbsp;&nbsp; #~ font.code.comment.box=$(font.comment)<br>&nbsp;&nbsp;&nbsp; #~ font.code.comment.line=$(font.comment)<br>&nbsp;&nbsp;&nbsp; #~ font.code.comment.doc=$(font.comment)<br>&nbsp;&nbsp;&nbsp; #~ font.text=font:times,size:14<br>&nbsp;&nbsp;&nbsp; #~ font.text.comment=font:lucidatypewriter,size:10<br>&nbsp;&nbsp;&nbsp; #~ font.embedded.base=font:lucidatypewriter,size:12<br>&nbsp;&nbsp;&nbsp; #~ font.embedded.comment=font:lucidatypewriter,size:12<br>&nbsp;&nbsp;&nbsp; #~ font.monospace=font:courier,size:12<br>&nbsp;&nbsp;&nbsp; #~ font.vbs=font:new century schoolbook,size:12<br><br># Give symbolic names to the set of colours used in the standard styles.<br>colour.code.comment.box=fore:#007F00<br>colour.code.comment.line=fore:#007F00<br>colour.code.comment.doc=fore:#3F703F<br>colour.code.comment.nested=fore:#A0C0A0<br>colour.text.comment=fore:#0000FF,back:#D0F0D0<br>colour.other.comment=fore:#007F00<br>colour.embedded.comment=back:#E0EEFF<br>colour.embedded.js=back:#F0F0FF<br>colour.notused=back:#FF0000<br><br>colour.number=fore:#0000FF<br>colour.keyword=fore:#00007F<br>colour.string=fore:#0000FF<br>colour.char=fore:#0000FF<br>colour.operator=fore:#000000<br>colour.preproc=fore:#7F7F00<br>colour.error=fore:#FFFF00,back:#FF0000<br><br># Global default styles for all languages<br># Default<br>style.*.32=$(font.base)<br># Line number<br>style.*.33=back:#C0C0C0,$(font.base)<br># Brace highlight<br>style.*.34=bold,back:#9999CC<br># Brace incomplete highlight<br>style.*.35=bold,back:#FF9933<br># Control characters<br>style.*.36=<br># Indentation guides<br>style.*.37=fore:#C0C0C0,back:#FFFFFF<br>&nbsp;&nbsp;&nbsp; <span style="COLOR: rgb(0,1,2)">打印配置：</span><br># Printing - only works on Windows<br>if PLAT_WIN<br>&nbsp;&nbsp;&nbsp; #print.colour.mode=1<br>&nbsp;&nbsp;&nbsp; print.magnification=-1<br>&nbsp;&nbsp;&nbsp; # Setup: left, right, top, bottom margins, in local units:<br>&nbsp;&nbsp;&nbsp; # hundredths of millimeters or thousandths of inches<br>&nbsp;&nbsp;&nbsp; print.margins=1500,1000,1000,1500<br>&nbsp;&nbsp;&nbsp; # Header/footer:<br>&nbsp;&nbsp;&nbsp; # &amp;&amp; = &amp;; &amp;p = current page<br>&nbsp;&nbsp;&nbsp; # &amp;f = file name; &amp;F = full path<br>&nbsp;&nbsp;&nbsp; # &amp;d = file date; &amp;D = current date<br>&nbsp;&nbsp;&nbsp; # &amp;t = file time; &amp;T = full time<br>&nbsp;&nbsp;&nbsp; print.header.format=$(FileNameExt) ?Printed on $(CurrentDate), $(CurrentTime) ?Page $(CurrentPage)<br>&nbsp;&nbsp;&nbsp; print.footer.format=$(FilePath) ?File date: $(FileDate) ?File time: $(FileTime)<br>&nbsp;&nbsp;&nbsp; # Header/footer style<br>&nbsp;&nbsp;&nbsp; print.header.style=font:Arial,size:12,bold<br>&nbsp;&nbsp;&nbsp; print.footer.style=font:Arial Narrow,size:10,italics<br>&nbsp;&nbsp;&nbsp; <span style="COLOR: rgb(0,1,2)">警告提示音配置：</span><br># Warnings - only works on Windows and needs to be pointed at files on machine<br>#if PLAT_WIN<br>#&nbsp;&nbsp;&nbsp; warning.findwrapped=100,E:\Windows\Media\SFX\Boing.wav<br>#&nbsp;&nbsp;&nbsp; warning.notfound=0,Effect.wav<br>#&nbsp;&nbsp;&nbsp; warning.wrongfile=0,Glass.wav<br>#&nbsp;&nbsp;&nbsp; warning.executeok=0,Fanfare.wav<br>#&nbsp;&nbsp;&nbsp; warning.executeko=100,GlassBreak.wav<br>#&nbsp;&nbsp;&nbsp; warning.nootherbookmark=100,Boing2.wav<br>&nbsp;&nbsp;&nbsp; <span style="COLOR: rgb(0,1,2)">语言菜单的配置，不希望在语言菜单的下拉菜单列表中出现语言就在这里把它注释掉（行首加#号），新加入的语言同样可以在这里添加。</span><br># Define the Lexer menu,<br># Each item contains three parts: menu string | file extension | key<br># The only keys allowed currently are based on F-keys and alphabetic keys and look like<br># [Ctrl+][Shift+][Fn|a] such as F12 or Ctrl+Shift+D.<br># A '&amp;' may be placed before a letter to be used as an accelerator. This does not work on GTK+.<br>menu.language=\<br>#FreeBasic|bas||\<br>Text|txt|Shift+F11|\<br>Ada|ads||\<br>#Apache Confi&amp;g|conf||\<br>Assembler|asm||\<br>#ASN.1|asn1||\<br>#Avenue|ave||\<br>#Baan|bc||\<br>&amp;Batch|bat||\<br>#Bullant|ant||\<br>&amp;C / C++|c||\<br>#CMake|cmake||\<br>C&#|cs||\<br>#Csound|orc||\<br>CSS|css||\<br>D|d||\<br>&amp;Difference|diff||\<br>#&amp;Eiffel|e||\<br>#Erlang|erl||\<br>&amp;Errorlist|err||\<br>#FlagShip|prg||\<br>&amp;Fortran|f90||\<br>H&amp;ypertext|html|F12|\<br>#&amp;InnoSetup|iss||\<br>&amp;Java|java||\<br>Java&amp;scrīpt|js||\<br>#&amp;Kix|kix||\<br>TeX|tex||\<br>Lisp|lisp||\<br>#Lot|lot||\<br>#Lout|lt||\<br>Lu&amp;a|lua||\<br>Matlab|m.matlab||\<br>&amp;Makefile|mak|Ctrl+Shift+F11|\<br>#MetaPost|mp||\<br>#MMIXAL|mms||\<br>#&amp;nnCron crontab|tab||\<br>#NSIS|nsis||\<br>#Objective Caml|ml||\<br>#Octave|m.octave||\<br>#Opal|impl||\<br>Pascal|pas||\<br>Pe&amp;rl|pl||\<br>P&amp;HP|php||\<br>#P&amp;LSQL|spec||\<br>&amp;Properties|properties||\<br>#P&amp;ostscrīpt|ps||\<br>#P&amp;OV-Ray SDL|pov||\<br>Pytho&amp;n|py||\<br>#Reso&amp;urce|rc||\<br>Ruby|rb||\<br>Shell|sh||\<br>S&amp;QL|sql||\<br>#Specman|e||\<br>&amp;TCL|tcl||\<br>&amp;VB|vb||\<br>VBScr&amp;ipt|vbs||\<br>#Verilog|v||\<br>#VHDL|vhd||\<br>&amp;XML|xml|Shift+F12|\<br>YAML|yaml||<br>&nbsp;&nbsp;&nbsp; <span style="COLOR: rgb(0,1,2)">SciTE支持的语言，下面的配置只有更改Global.properties文件才会生效，改user.properties文件是不起作用的，每种语言都对应SciTE文件目录中的*.properties文件，新加入的语言必须先把properties文件复制到SciTE目录中，然后在Global中更改下面的语言支持配置，比如目录中有php.properties文件，那么就在下面加上一句：import php，需要注意的是必须和语法文件同名。</span><br># Import all the language specific properties files<br>import ada<br>import asm<br>#import asn1<br>#import au3<br>import ave<br>import baan<br>#import freebasic<br>#import blitzbasic<br>#import bullant<br>import caml<br>import conf<br>import cpp<br>#import cmake<br>import d<br>#import csound<br>import css<br>import eiffel<br>import erlang<br>import escrīpt<br>#import flagship<br>#import forth<br>import fortran<br>import html<br>#import inno<br>#import kix<br>import lisp<br>import lot<br>#import lout<br>import lua<br>import matlab<br>import metapost<br>import mmixal<br>#import nncrontab<br>#import nsis<br>#import opal<br>import others<br>import pascal<br>import perl<br>import pov<br>import ps<br>#import purebasic<br>import python<br>#import rebol<br>import ruby<br>#import scrīptol<br>#import smalltalk<br>#import spice<br>import sql<br>#import specman<br>import tcl<br>import tex<br>import vb<br>import yaml<br>#import verilog<br>#import vhdl<br><br><span style="COLOR: rgb(0,1,2)">哦，好了，现在你已经会对SciTE进行基本的配置了，就是说你可以开始使用它了，现在用起来还会说&#8220;什么玩意儿&#8221;吗？<img title=点击图片可在新窗口打开 style="CURSOR: pointer" src="http://www.phpchina.com/images/edit/face/016.gif">文章太长了，还是分成两篇来写，（上）就写到这里，最后还是要提醒大家不要直接改Global文件，而要改Users文件，把Global文件的内容全部复制到Users文件里。写本文的时候，SciTE的最新版本是1.73，本文也是以1.73版来讲的。（下）篇主要讲语法高亮文件的配置，缩略语的定义与使用，代码自动完成的配置及使用技巧。当然了，SciTE支持的语言实在是太多了，我的重点放在HTML，CSS，JS，PHP，以及它们的混合语法配置。等（下）写完了会在这里给出链接地址，也可以直接来我的空间里找到，敬请关注。谢谢大家的支持。——你的舒服是我的幸福！<img title=点击图片可在新窗口打开 style="CURSOR: pointer" src="http://www.phpchina.com/images/edit/face/005.gif"><br></span></span></span></span></span></span></font><br><font size=3>&nbsp;&nbsp;&nbsp; SciTE主页：</font><br><font size=3><span style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,2)"><span style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,2)"><span style="COLOR: rgb(0,1,255)"><span style="COLOR: rgb(0,1,2)"></span></span></span></span></span></span>&nbsp;&nbsp;&nbsp; </font><a href="http://www.scintilla.org/" target=_blank><font color=#009999>http://www.scintilla.org/</font></a><br><font size=3>&nbsp;&nbsp;&nbsp; 语言文件（有中文）：<br>&nbsp;&nbsp;&nbsp; </font><a href="http://scintilla.sourceforge.net/SciTETranslation.html" target=_blank><font color=#009999>http://scintilla.sourceforge.net/SciTETranslation.html</font></a><br><font size=3>&nbsp;&nbsp;&nbsp; 语法文件和API文件：<br>&nbsp;&nbsp;&nbsp; </font><a href="http://scintilla.sourceforge.net/SciTEExtras.html" target=_blank><font color=#009999>http://scintilla.sourceforge.net/SciTEExtras.html</font></a>
<img src ="http://www.phpweblog.net/yemoo/aggbug/2048.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 14:51 <a href="http://www.phpweblog.net/yemoo/archive/2007/09/29/2048.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></channel></rss>