<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.3.3" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>PHPunion slash的学习记录</title>
	<link>http://www.phpunion.com</link>
	<description>PHPUNION 发挥PHP的优势,打造强力的PHP学习站点</description>
	<pubDate>Tue, 04 May 2010 08:07:13 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3.3</generator>
	<language>en</language>
			<item>
		<title>通过LINUX和移动飞信免费发送天气预报</title>
		<link>http://www.phpunion.com/%e9%80%9a%e8%bf%87linux%e5%92%8c%e7%a7%bb%e5%8a%a8%e9%a3%9e%e4%bf%a1%e5%85%8d%e8%b4%b9%e5%8f%91%e9%80%81%e5%a4%a9%e6%b0%94%e9%a2%84%e6%8a%a5/</link>
		<comments>http://www.phpunion.com/%e9%80%9a%e8%bf%87linux%e5%92%8c%e7%a7%bb%e5%8a%a8%e9%a3%9e%e4%bf%a1%e5%85%8d%e8%b4%b9%e5%8f%91%e9%80%81%e5%a4%a9%e6%b0%94%e9%a2%84%e6%8a%a5/#comments</comments>
		<pubDate>Tue, 04 May 2010 07:57:29 +0000</pubDate>
		<dc:creator>slash</dc:creator>
		
		<category><![CDATA[PHP的学习经历]]></category>

		<guid isPermaLink="false">http://www.phpunion.com/%e9%80%9a%e8%bf%87linux%e5%92%8c%e7%a7%bb%e5%8a%a8%e9%a3%9e%e4%bf%a1%e5%85%8d%e8%b4%b9%e5%8f%91%e9%80%81%e5%a4%a9%e6%b0%94%e9%a2%84%e6%8a%a5/</guid>
		<description><![CDATA[如果你手机有天气预报的套餐就不用看了，我是针对没有天气预报的兄弟们准备的
首先下载一个SENDSMS的软件sendsms，然后解压到任何目录，然后解压
tar xjvf sendsms.tar.bz2
cd sendsms
make
ln -s 路径/sendsms /sbin/sendsms
上面的路径最好用全路径
然后写一个SHEEL
weather.sh

#!/bin/bash
# This script fetch user specified citys' weather forecast from
# http://weather.com.cn, and send them using a CLI SMS sender "sendsms"
# which you can get from http://share.solrex.org/dcount/click.php?id=5.
#
# You can look for new or bug fix version
# @ http://share.solrex.org/scripts/weatherman.sh.
# Copyright (C) Solrex Yang  with GPL license.
#
# Usage: You should add [...]]]></description>
			<content:encoded><![CDATA[<p>如果你手机有天气预报的套餐就不用看了，我是针对没有天气预报的兄弟们准备的<br />
首先下载一个SENDSMS的软件<a href="http://www.phpunion.com/wp-content/uploads/2010/05/sendsmstar.bz2" title="sendsms">sendsms</a>，然后解压到任何目录，然后解压<br />
<code>tar xjvf sendsms.tar.bz2</code><br />
<code>cd sendsms</code><br />
<code>make</code><br />
<code>ln -s 路径/sendsms /sbin/sendsms</code><br />
上面的路径最好用全路径<br />
然后写一个SHEEL<br />
weather.sh<br />
<code><br />
#!/bin/bash<br />
# This script fetch user specified citys' weather forecast from<br />
# http://weather.com.cn, and send them using a CLI SMS sender "sendsms"<br />
# which you can get from http://share.solrex.org/dcount/click.php?id=5.<br />
#<br />
# You can look for new or bug fix version<br />
# @ http://share.solrex.org/scripts/weatherman.sh.<br />
# Copyright (C) Solrex Yang <http:> with GPL license.<br />
#<br />
# Usage: You should add it to crontab by &#8220;crontab -e&#8221;, and then add a line<br />
# such as:<br />
# 00 20 * * * /usr/bin/weatherman.sh &gt;&gt; ~/bin/log/weatherman.log 2&gt;&amp;1<br />
# which will send weather forecast to your fetion friends at every 8pm.</http:></code></p>
<p>CITY_LIST=(&#8221;北京&#8221;)<br />
URL_LIST=(&#8221;101010100&#8243;)#这里是城市编码，具体你所在的城市请到http://www.weather.com.cn/查询</p>
<p>SMS_USER=(&#8221;飞信号码1,飞信号码2,飞信号码3&#8243;)<br />
SMS_CITY=(&#8221;北京&#8221;)</p>
<p>URLBASE=&#8221;http://www.weather.com.cn/html/weather/&#8221;</p>
<p>get_html()<br />
{<br />
i=0<br />
for city in ${CITY_LIST[*]}; do<br />
url=$URLBASE${URL_LIST[i]}.shtml<br />
#wget -e &#8220;http_proxy=http://user:passwd@www.phpunion.com&#8221; -O $city.txt $url<br />
wget -nv -O $city.txt $url 2&gt; /dev/null<br />
i=$(($i+1))<br />
done<br />
}</p>
<p>parse_html()<br />
{<br />
for city in ${CITY_LIST[*]}; do<br />
grep -q &#8216;&#8221;tableTop&#8221;&#8216;  $city.txt<br />
ISOLD=$?<br />
if [ $ISOLD -eq 0 ]; then<br />
grep -q &#8221; 08:00发布)&#8221; $city.txt<br />
# Select useful part.<br />
IS18=$?<br />
sed -i -e &#8216;1,/&#8221;tableTop&#8221;/d;/weatherYubao2/,$d;1,/风力/d;&#8217; $city.txt<br />
else<br />
grep -q &#8221; 08:00发布）&#8221; $city.txt<br />
# Select useful part.<br />
IS18=$?<br />
if [ $IS18 -ne 0 ]; then<br />
sed -i -e &#8216;1,/&#8221;dd_0&#8243;/d;/ddd_0/,$d;1,/风力/d;&#8217; $city.txt<br />
else<br />
sed -i -e &#8216;1,/ch_text/d;/未来/,$d;1,/风力/d;&#8217; $city.txt<br />
fi<br />
fi<br />
# Add seperate chars<br />
sed -i -e &#8217;s$</p>
<li>$</li>
<p>\n</p>
<li>$g&#8217; $city.txt<br />
# Remove HTML tags and empty lines.<br />
sed -i -e &#8217;s/&lt;[^&gt;]*&gt;//g;/<!--/d' $city.txt<br /-->     sed -i -e &#8217;s/ //g;s/°C//g;s/^\s*//g;/^$/d&#8217; $city.txt<br />
# Cut verbose words.<br />
sed -i -e &#8217;s/无持续风向/轻/g;s/℃/度/g;s/星期/周/g;s/\r//g;&#8217; $city.txt<br />
#continue<br />
# Format file content to SMS.<br />
LINES=(`cat $city.txt`)<br />
COUNT=0<br />
if [ ${ISOLD} -eq 0 ]; then<br />
if [ ${IS18} -ne 0 ]; then<br />
MES=&#8221;${city}(18:00发布)\n&#8221;<br />
MES=$MES${LINES[$((COUNT++))]}:<br />
MES=$MES${LINES[$((COUNT++))]}${LINES[$((COUNT++))]},<br />
MES=$MES${LINES[$((COUNT++))]}${LINES[$((COUNT++))]},<br />
MES=$MES${LINES[$((COUNT++))]}${LINES[$((COUNT++))]}&#8217;.\n&#8217;<br />
else<br />
MES=&#8221;${city}(8:00发布)\n&#8221;<br />
fi<br />
MES=$MES${LINES[$((COUNT++))]}:<br />
MES=$MES${LINES[$((COUNT++))]}${LINES[$((COUNT++))]},<br />
MES=$MES${LINES[$((COUNT++))]}${LINES[$((COUNT++))]},<br />
MES=$MES${LINES[$((COUNT++))]}${LINES[$((COUNT++))]}&#8217;;&#8217;<br />
MES=$MES${LINES[$((COUNT++))]}${LINES[$((COUNT++))]},<br />
MES=$MES${LINES[$((COUNT++))]}${LINES[$((COUNT++))]},<br />
MES=$MES${LINES[$((COUNT++))]}${LINES[$((COUNT++))]}&#8217;.\n&#8217;<br />
MES=$MES${LINES[$((COUNT++))]}:<br />
MES=$MES${LINES[$((COUNT++))]}${LINES[$((COUNT++))]},<br />
MES=$MES${LINES[$((COUNT++))]}${LINES[$((COUNT++))]},<br />
MES=$MES${LINES[$((COUNT++))]}${LINES[$((COUNT++))]}&#8217;;&#8217;<br />
MES=$MES${LINES[$((COUNT++))]}${LINES[$((COUNT++))]},<br />
MES=$MES${LINES[$((COUNT++))]}${LINES[$((COUNT++))]},<br />
MES=$MES${LINES[$((COUNT++))]}${LINES[$((COUNT++))]}&#8217;.\n&#8217;<br />
else<br />
if [ ${IS18} -ne 0 ]; then<br />
MES=&#8221;${city}(18:00发布)\n&#8221;<br />
MES=$MES${LINES[$((COUNT++))]}:<br />
MES=$MES${LINES[$((COUNT++))]}${LINES[$((COUNT++))]},<br />
MES=$MES${LINES[$((COUNT++))]},<br />
MES=$MES${LINES[$((COUNT++))]}${LINES[$((COUNT++))]}&#8217;.\n&#8217;<br />
else<br />
MES=&#8221;${city}(8:00发布)\n&#8221;<br />
fi<br />
MES=$MES${LINES[$((COUNT++))]}:<br />
MES=$MES${LINES[$((COUNT))]}${LINES[$((COUNT+2))]},<br />
MES=$MES${LINES[$((COUNT+4))]},<br />
MES=$MES${LINES[$((COUNT+6))]}${LINES[$((COUNT+8))]}&#8217;;&#8217;<br />
MES=$MES${LINES[$((COUNT+1))]}${LINES[$((COUNT+3))]},<br />
MES=$MES${LINES[$((COUNT+5))]},<br />
MES=$MES${LINES[$((COUNT+7))]}${LINES[$((COUNT+9))]}&#8217;.\n&#8217;<br />
COUNT=$((COUNT+10))<br />
MES=$MES${LINES[$((COUNT++))]}:<br />
MES=$MES${LINES[$((COUNT))]}${LINES[$((COUNT+2))]},<br />
MES=$MES${LINES[$((COUNT+4))]},<br />
MES=$MES${LINES[$((COUNT+6))]}${LINES[$((COUNT+8))]}&#8217;;&#8217;<br />
MES=$MES${LINES[$((COUNT+1))]}${LINES[$((COUNT+3))]},<br />
MES=$MES${LINES[$((COUNT+5))]},<br />
MES=$MES${LINES[$((COUNT+7))]}${LINES[$((COUNT+9))]}&#8217;.\n&#8217;<br />
fi<br />
echo -ne $MES &gt; $city.txt<br />
done<br />
}send_forcast()<br />
{<br />
i=0<br />
for user in ${SMS_USER[*]}; do<br />
sendsms -vlf 你的手机号-p 你的密码 -t ${SMS_USER[$i]} &lt; ${SMS_CITY[$i]}.txt<br />
sleep 1<br />
i=$(($i+1))<br />
done<br />
}clear_html()<br />
{<br />
for city in ${CITY_LIST[*]}; do<br />
rm -f $city.txt<br />
done<br />
}get_html<br />
parse_html<br />
send_forcast<br />
clear_html<br />
然后通过CRONTAB做个计划任务<br />
<code><br />
crontab -e<br />
00 18 * * * /bin/bash  /root/weather.sh<br />
</code><br />
我把weather.sh放在ROOT目录了,顺便留个下载地址<a href="http://www.phpunion.com/wp-content/uploads/2010/05/weatherman.sh" title="weatherman.sh">weatherman.sh</a> 根据你放置自己设置<br />
好了，每天18点等着自己的飞信给你发天气预报吧</p>
<p>本教程来源互联网，个人总结了一下，如需转载，请保留原信息:<a href="http://www.phpunion.com" target="_blank">http://www.phpunion.com</a></p>
<p>对了<br />
最后说明一下，飞信号码必须为你的好友，</li>
]]></content:encoded>
			<wfw:commentRss>http://www.phpunion.com/%e9%80%9a%e8%bf%87linux%e5%92%8c%e7%a7%bb%e5%8a%a8%e9%a3%9e%e4%bf%a1%e5%85%8d%e8%b4%b9%e5%8f%91%e9%80%81%e5%a4%a9%e6%b0%94%e9%a2%84%e6%8a%a5/feed/</wfw:commentRss>
		</item>
		<item>
		<title>VPN链接后域名无法访问,DNS问题解决办法</title>
		<link>http://www.phpunion.com/vpn%e9%93%be%e6%8e%a5%e5%90%8e%e5%9f%9f%e5%90%8d%e6%97%a0%e6%b3%95%e8%ae%bf%e9%97%aedns%e9%97%ae%e9%a2%98%e8%a7%a3%e5%86%b3%e5%8a%9e%e6%b3%95/</link>
		<comments>http://www.phpunion.com/vpn%e9%93%be%e6%8e%a5%e5%90%8e%e5%9f%9f%e5%90%8d%e6%97%a0%e6%b3%95%e8%ae%bf%e9%97%aedns%e9%97%ae%e9%a2%98%e8%a7%a3%e5%86%b3%e5%8a%9e%e6%b3%95/#comments</comments>
		<pubDate>Thu, 01 Apr 2010 07:29:00 +0000</pubDate>
		<dc:creator>slash</dc:creator>
		
		<category><![CDATA[杂七杂八]]></category>

		<guid isPermaLink="false">http://www.phpunion.com/vpn%e9%93%be%e6%8e%a5%e5%90%8e%e5%9f%9f%e5%90%8d%e6%97%a0%e6%b3%95%e8%ae%bf%e9%97%aedns%e9%97%ae%e9%a2%98%e8%a7%a3%e5%86%b3%e5%8a%9e%e6%b3%95/</guid>
		<description><![CDATA[/sbin/iptables -t nat -A POSTROUTING -o eth0 -s 172.16.0.0/16 -j MASQUERADE
/sbin/iptables -t nat -A POSTROUTING -j MASQUERADE
/sbin/iptables -F FORWARD
/sbin/iptables -A FORWARD -p udp -s 172.16.0.0/16 &#8211;dport 53 -j ACCEPT
/sbin/iptables -A FORWARD -p tcp -s 172.16.0.0/16 &#8211;dport 1723 -j ACCEPT
/sbin/iptables -A FORWARD -p gre -s 172.16.0.0/16 -j ACCEPT
/sbin/iptables -A FORWARD -m state &#8211;state ESTABLISHED,RELATED -j ACCEPT
]]></description>
			<content:encoded><![CDATA[<p>/sbin/iptables -t nat -A POSTROUTING -o eth0 -s 172.16.0.0/16 -j MASQUERADE</p>
<p>/sbin/iptables -t nat -A POSTROUTING -j MASQUERADE</p>
<p>/sbin/iptables -F FORWARD</p>
<p>/sbin/iptables -A FORWARD -p udp -s 172.16.0.0/16 &#8211;dport 53 -j ACCEPT<br />
/sbin/iptables -A FORWARD -p tcp -s 172.16.0.0/16 &#8211;dport 1723 -j ACCEPT<br />
/sbin/iptables -A FORWARD -p gre -s 172.16.0.0/16 -j ACCEPT<br />
/sbin/iptables -A FORWARD -m state &#8211;state ESTABLISHED,RELATED -j ACCEPT</p>
]]></content:encoded>
			<wfw:commentRss>http://www.phpunion.com/vpn%e9%93%be%e6%8e%a5%e5%90%8e%e5%9f%9f%e5%90%8d%e6%97%a0%e6%b3%95%e8%ae%bf%e9%97%aedns%e9%97%ae%e9%a2%98%e8%a7%a3%e5%86%b3%e5%8a%9e%e6%b3%95/feed/</wfw:commentRss>
		</item>
		<item>
		<title>symfony第一课：环境配置和第一个留言板</title>
		<link>http://www.phpunion.com/symfony%e7%ac%ac%e4%b8%80%e8%af%be%ef%bc%9a%e7%8e%af%e5%a2%83%e9%85%8d%e7%bd%ae%e5%92%8c%e7%ac%ac%e4%b8%80%e4%b8%aa%e7%95%99%e8%a8%80%e6%9d%bf/</link>
		<comments>http://www.phpunion.com/symfony%e7%ac%ac%e4%b8%80%e8%af%be%ef%bc%9a%e7%8e%af%e5%a2%83%e9%85%8d%e7%bd%ae%e5%92%8c%e7%ac%ac%e4%b8%80%e4%b8%aa%e7%95%99%e8%a8%80%e6%9d%bf/#comments</comments>
		<pubDate>Tue, 01 Dec 2009 02:01:23 +0000</pubDate>
		<dc:creator>slash</dc:creator>
		
		<category><![CDATA[symfony学习]]></category>

		<guid isPermaLink="false">http://www.phpunion.com/symfony%e7%ac%ac%e4%b8%80%e8%af%be%ef%bc%9a%e7%8e%af%e5%a2%83%e9%85%8d%e7%bd%ae%e5%92%8c%e7%ac%ac%e4%b8%80%e4%b8%aa%e7%95%99%e8%a8%80%e6%9d%bf/</guid>
		<description><![CDATA[
第一次写教程，还蛮激动的，别的废话不说了，直接开始吧。
首先说一下，对于本教程的适用范围，起码应该有一点点PHP的基础，如果连基础语法都不会的话，
不如先学习一下PHP基本语法， 不然的话到后面会越来越累，虽然开始的时候能做出一些东西。
哦，忘记了还要有一些MYSQL的知识，最好还能了解一点APACHE的知识，还有对MVC有一点了解…………呵呵，
看到这么多乱七八糟的是不是快蒙了，没关系，最核心的还是有PHP和MYSQL的基础就可以了。
这里我们用的框架是symfony,一个老外的框架，具体是啥含义我就不介绍了，愿意了解的去百度或者GOOGLE去吧。
Symfony是一个基于PHP5的网站框架(web framework)。根据最佳的网站编程经验，也被一些实际运作的网站验证过，
Symfony能提高网站应用程式创建和维护的效率，且以强力的控制项和乐趣来取代重复性的编程工作。
这里没有选用非常流行的zend framework的确是因为个人原因，这个框架实在是有点庞大，加载的时候速度…………，
不说了，进入正题吧：
欲练此功挥剑子宫，…………即便子宫，未必成功，但不自宫是肯定不会成功的…………
首先我们要做的是配置一个可以运行的环境，必不可少的是PHP+MYSQL的环境，这里不是讲解的重点，但是我要说一下的是
在我们实际操作过程中，我们使用PHP连接MYSQL用的是PDO，这个相对MYSQL对于大数据的响应速度应该更快…………
如果你使用的集成环境，我推荐你试用XAMPP，绿色版本，即不用安装，而且对于symfon的支持更好
下载地址：点击此处下载XAMPP，这里我推荐使用不安装版本，为啥？因为我用的没有安装的…………
下面是重点了，我们下载SYMFONY框架：symfony-1.2.9.zip
我们假设把XAMPP解压到D盘，那你的PHP执行目录就是d:\xampp\htdocs\
我们在这个目录新建一个目录 thone,别打人，我英语确实不好，大家可以根据自己的喜好自己设置。
我们在THONE目录下建立lib目录，在lib下建立vendor,在vendor下建立symfony目录，将下载的框架内容解药到这个目录，
注意，我们是将里边的文件解压到这个目录，注意别把本身的那个symfony-1.2.9目录弄进来。
解压好了吗？好，你已经完成一大步了。
下面我们修改一个文件，在thone的目录下lib\vendor\symfony\data\bin\symfony.bat,我们把它打开，…………不是双击
用编辑器，这里我推荐editplus，还没有…………，大哥，你是过来砸场子的还是捣乱的…………快下一个吧
editplus
打开后修改这里：set PHP_COMMAND=php.exe改成set PHP_COMMAND=d:\xampp\php\php.exe(这是我的PHP目录，
根据你们的实际情况自己设置一下)，然后把你的PHP目录添加到环境变量里：
具体操作：我的电脑右键&#8211;》属性&#8211;》高级&#8211;》环境变量&#8211;》系统变量&#8211;》PATH双击&#8211;》最后添加d:\xampp\php（我的
目录，根据个人情况）&#8211;》确定。
然后我们点开始&#8211;》运行&#8211;》输入CMD回车
更改到d:\xampp\htdocs\thone下
执行：php lib/vendor/symfony/data/bin/symfony -V
应该输出：symfony version 1.2.8 (D:\xampp\htdocs\thone\lib\vendor\symfony\lib)（我这里用的是1.2.8，
没关系，应该是相同），证明我们的安装成功了，如果有错误信息请参照以上配置从新修改。
我们开始我们的第一个程序，这里我没有将一大堆理论，还是用实践来说话吧
在THONE目录下生成一个thone项目：执行：php lib\vendor\symfony\data\bin\symfony generate:project thone
generate:project任务生成了 thone项目默认的文件和目录结构：


目录
说明


apps/
存放项目的所有应用程序


cache/
框架的缓存文件


config/
项目配置文件


lib/
项目使用到的类和库


log/
项目日志文件


plugins/
安装的插件


test/
单元测试和功能测试文件


web/
网站根目录


下面执行：copy lib\vendor\symfony\data\bin\symfony.bat .
将symfony这个执行文件弄到我们的thone目录，方便我们操作
下面我们运行generate:app 命令生成前台应用程序。
在命令行中输入：php symfony generate:app &#8211;escaping-strategy=on &#8211;csrf-secret=Unique$ecret frontend
再一次的，generate:app 任务帮我们在apps/frontend目录下创建了应用程序的默认文件目录结构


目录
说明


config/
应用程序配置文档


lib/
应用程序需要的类和库


modules/
应用程序的代码 (MVC)


templates/
全局的模板文件


好了，我们现在在浏览器中输入：localhost/thone/web/
应该输出一下界面：

证明我们的symfony项目已经搭建成功了，但是有几个问题，好像有图片没有显示出来，
而且好像输入的地址太长了吧？这让太累了。
没关系，我们编辑一下APACHE
打开：D:\xampp\apache\conf\httpd.conf,在最后增加：
# 请确保下面这行在配置文件只出现一次
NameVirtualHost *:80
&#60;VirtualHost *:80&#62;
    DocumentRoot &#8220;D:\xampp\htdocs&#8221;
&#60;/VirtualHost&#62;
&#60;VirtualHost *:80&#62;
  DocumentRoot &#8220;D:\xampp\htdocs\thone/web&#8221;
  DirectoryIndex index.php
  ServerName phpunion.sy
  &#60;Directory &#8220;D:\xampp\htdocs\thone/web&#8221;&#62;
    AllowOverride All
    Allow from All
  &#60;/Directory&#62;
  Alias /sf D:\xampp\htdocs\thone\lib\vendor\symfony\data\web\sf
  &#60;Directory &#8220;D:\xampp\htdocs\thone\lib\vendor\symfony\data\web\sf&#8221;&#62;
    AllowOverride All
    Allow from All
  [...]]]></description>
			<content:encoded><![CDATA[<p><span style="word-spacing: 0px; font: 16px Simsun; text-transform: none; color: #000000; text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate; orphans: 2; widows: 2; webkit-border-horizontal-spacing: 0px; webkit-border-vertical-spacing: 0px; webkit-text-decorations-in-effect: none; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px" class="Apple-style-span"></span><span style="word-spacing: 0px; font: 16px Simsun; text-transform: none; color: #000000; text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate; orphans: 2; widows: 2; webkit-border-horizontal-spacing: 0px; webkit-border-vertical-spacing: 0px; webkit-text-decorations-in-effect: none; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px" class="Apple-style-span"></span><span style="word-spacing: 0px; font: 16px Simsun; text-transform: none; color: #000000; text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate; orphans: 2; widows: 2; webkit-border-horizontal-spacing: 0px; webkit-border-vertical-spacing: 0px; webkit-text-decorations-in-effect: none; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px" class="Apple-style-span"></span><span style="word-spacing: 0px; font: 16px Simsun; text-transform: none; color: #000000; text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate; orphans: 2; widows: 2; webkit-border-horizontal-spacing: 0px; webkit-border-vertical-spacing: 0px; webkit-text-decorations-in-effect: none; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px" class="Apple-style-span"></span><span style="word-spacing: 0px; font: 16px Simsun; text-transform: none; color: #000000; text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate; orphans: 2; widows: 2; webkit-border-horizontal-spacing: 0px; webkit-border-vertical-spacing: 0px; webkit-text-decorations-in-effect: none; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px" class="Apple-style-span"></span><span style="word-spacing: 0px; font: 16px Simsun; text-transform: none; color: #000000; text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate; orphans: 2; widows: 2; webkit-border-horizontal-spacing: 0px; webkit-border-vertical-spacing: 0px; webkit-text-decorations-in-effect: none; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px" class="Apple-style-span"></span><span style="word-spacing: 0px; font: 16px Simsun; text-transform: none; color: #000000; text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate; orphans: 2; widows: 2; webkit-border-horizontal-spacing: 0px; webkit-border-vertical-spacing: 0px; webkit-text-decorations-in-effect: none; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px" class="Apple-style-span"></span><span style="word-spacing: 0px; font: 16px Simsun; text-transform: none; color: #000000; text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate; orphans: 2; widows: 2; webkit-border-horizontal-spacing: 0px; webkit-border-vertical-spacing: 0px; webkit-text-decorations-in-effect: none; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px" class="Apple-style-span"></span><span style="word-spacing: 0px; font: 16px Simsun; text-transform: none; color: #000000; text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate; orphans: 2; widows: 2; webkit-border-horizontal-spacing: 0px; webkit-border-vertical-spacing: 0px; webkit-text-decorations-in-effect: none; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px" class="Apple-style-span"></span><span style="word-spacing: 0px; font: 16px Simsun; text-transform: none; color: #000000; text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate; orphans: 2; widows: 2; webkit-border-horizontal-spacing: 0px; webkit-border-vertical-spacing: 0px; webkit-text-decorations-in-effect: none; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px" class="Apple-style-span"></span><span style="word-spacing: 0px; font: 16px Simsun; text-transform: none; color: #000000; text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate; orphans: 2; widows: 2; webkit-border-horizontal-spacing: 0px; webkit-border-vertical-spacing: 0px; webkit-text-decorations-in-effect: none; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px" class="Apple-style-span"></span><span style="word-spacing: 0px; font: 16px Simsun; text-transform: none; color: #000000; text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate; orphans: 2; widows: 2; webkit-border-horizontal-spacing: 0px; webkit-border-vertical-spacing: 0px; webkit-text-decorations-in-effect: none; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px" class="Apple-style-span"></span><span style="word-spacing: 0px; font: 16px Simsun; text-transform: none; color: #000000; text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate; orphans: 2; widows: 2; webkit-border-horizontal-spacing: 0px; webkit-border-vertical-spacing: 0px; webkit-text-decorations-in-effect: none; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px" class="Apple-style-span"></span><span style="word-spacing: 0px; font: 16px Simsun; text-transform: none; color: #000000; text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate; orphans: 2; widows: 2; webkit-border-horizontal-spacing: 0px; webkit-border-vertical-spacing: 0px; webkit-text-decorations-in-effect: none; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px" class="Apple-style-span"></span><span style="word-spacing: 0px; font: 16px Simsun; text-transform: none; color: #000000; text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate; orphans: 2; widows: 2; webkit-border-horizontal-spacing: 0px; webkit-border-vertical-spacing: 0px; webkit-text-decorations-in-effect: none; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px" class="Apple-style-span"></span><span style="word-spacing: 0px; font: 16px Simsun; text-transform: none; color: #000000; text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate; orphans: 2; widows: 2; webkit-border-horizontal-spacing: 0px; webkit-border-vertical-spacing: 0px; webkit-text-decorations-in-effect: none; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px" class="Apple-style-span"></span><span style="word-spacing: 0px; font: 16px Simsun; text-transform: none; color: #000000; text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate; orphans: 2; widows: 2; webkit-border-horizontal-spacing: 0px; webkit-border-vertical-spacing: 0px; webkit-text-decorations-in-effect: none; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px" class="Apple-style-span"></p>
<p style="font: 1em/1.3em Georgia, 'Times New Roman', Times, serif; background-color: #ffffff; webkit-background-clip: initial; webkit-background-origin: initial; padding: 0.5em"><a href="http://www.phpunion.com/wp-content/uploads/2009/12/symfony1.jpg" title="symfony1.jpg" rel='lightbox'></a><a href="http://www.phpunion.com/wp-content/uploads/2009/12/sy1.png" title="sy1.png" rel='lightbox'></a>第一次写教程，还蛮激动的，别的废话不说了，直接开始吧。</p>
<p>首先说一下，对于本教程的适用范围，起码应该有一点点PHP的基础，如果连基础语法都不会的话，</p>
<p>不如先学习一下PHP基本语法， 不然的话到后面会越来越累，虽然开始的时候能做出一些东西。</p>
<p>哦，忘记了还要有一些MYSQL的知识，最好还能了解一点APACHE的知识，还有对MVC有一点了解…………呵呵，</p>
<p>看到这么多乱七八糟的是不是快蒙了，没关系，最核心的还是有PHP和MYSQL的基础就可以了。</p>
<p>这里我们用的框架是symfony,一个老外的框架，具体是啥含义我就不介绍了，愿意了解的去百度或者GOOGLE去吧。</p>
<p>Symfony是一个基于PHP5的网站框架(web framework)。根据最佳的网站编程经验，也被一些实际运作的网站验证过，</p>
<p>Symfony能提高网站应用程式创建和维护的效率，且以强力的控制项和乐趣来取代重复性的编程工作。</p>
<p>这里没有选用非常流行的zend framework的确是因为个人原因，这个框架实在是有点庞大，加载的时候速度…………，</p>
<p>不说了，进入正题吧：</p>
<p>欲练此功挥剑子宫，…………即便子宫，未必成功，但不自宫是肯定不会成功的…………</p>
<p>首先我们要做的是配置一个可以运行的环境，必不可少的是PHP+MYSQL的环境，这里不是讲解的重点，但是我要说一下的是</p>
<p>在我们实际操作过程中，我们使用PHP连接MYSQL用的是PDO，这个相对MYSQL对于大数据的响应速度应该更快…………</p>
<p>如果你使用的集成环境，我推荐你试用XAMPP，绿色版本，即不用安装，而且对于symfon的支持更好</p>
<p>下载地址：<a target="_blank" href="http://www.apachefriends.org/zh_cn/xampp-windows.html" title="XAMPP下载">点击此处下载XAMPP</a>，这里我推荐使用不安装版本，为啥？因为我用的没有安装的…………</p>
<p>下面是重点了，我们下载SYMFONY框架：<a href="http://www.symfony-project.org/get/symfony-1.2.9.zip">symfony-1.2.9.zip</a></p>
<p>我们假设把XAMPP解压到D盘，那你的PHP执行目录就是d:\xampp\htdocs\</p>
<p>我们在这个目录新建一个目录 thone,别打人，我英语确实不好，大家可以根据自己的喜好自己设置。</p>
<p>我们在THONE目录下建立lib目录，在lib下建立vendor,在vendor下建立symfony目录，将下载的框架内容解药到这个目录，</p>
<p>注意，我们是将里边的文件解压到这个目录，注意别把本身的那个symfony-1.2.9目录弄进来。</p>
<p>解压好了吗？好，你已经完成一大步了。</p>
<p>下面我们修改一个文件，在thone的目录下lib\vendor\symfony\data\bin\symfony.bat,我们把它打开，…………不是双击</p>
<p>用编辑器，这里我推荐editplus，还没有…………，大哥，你是过来砸场子的还是捣乱的…………快下一个吧</p>
<p><a target="_blank" href="http://www.crsky.com/soft/1578.html" title="editplus下载">editplus</a></p>
<p>打开后修改这里：set PHP_COMMAND=php.exe改成set PHP_COMMAND=d:\xampp\php\php.exe(这是我的PHP目录，</p>
<p>根据你们的实际情况自己设置一下)，然后把你的PHP目录添加到环境变量里：</p>
<p>具体操作：我的电脑右键&#8211;》属性&#8211;》高级&#8211;》环境变量&#8211;》系统变量&#8211;》PATH双击&#8211;》最后添加d:\xampp\php（我的</p>
<p>目录，根据个人情况）&#8211;》确定。</p>
<p>然后我们点开始&#8211;》运行&#8211;》输入CMD回车</p>
<p>更改到d:\xampp\htdocs\thone下</p>
<p>执行：php lib/vendor/symfony/data/bin/symfony -V</p>
<p>应该输出：symfony version 1.2.8 (D:\xampp\htdocs\thone\lib\vendor\symfony\lib)（我这里用的是1.2.8，</p>
<p>没关系，应该是相同），证明我们的安装成功了，如果有错误信息请参照以上配置从新修改。</p>
<p>我们开始我们的第一个程序，这里我没有将一大堆理论，还是用实践来说话吧</p>
<p>在THONE目录下生成一个thone项目：执行：php lib\vendor\symfony\data\bin\symfony generate:project thone</p>
<p><code><font face="Courier New">generate:project</font></code>任务生成了 thone项目默认的文件和目录结构：</p>
<table cellSpacing="0" class="doc_table">
<thead>
<th>目录</th>
<th>说明</th>
</tr>
<tr>
<td>apps/</td>
<td>存放项目的所有应用程序</td>
</tr>
<tr>
<td>cache/</td>
<td>框架的缓存文件</td>
</tr>
<tr>
<td>config/</td>
<td>项目配置文件</td>
</tr>
<tr>
<td>lib/</td>
<td>项目使用到的类和库</td>
</tr>
<tr>
<td>log/</td>
<td>项目日志文件</td>
</tr>
<tr>
<td>plugins/</td>
<td>安装的插件</td>
</tr>
<tr>
<td>test/</td>
<td>单元测试和功能测试文件</td>
</tr>
<tr>
<td>web/</td>
<td>网站根目录</td>
</tr>
</table>
<p>下面执行：copy lib\vendor\symfony\data\bin\symfony.bat .</p>
<p>将symfony这个执行文件弄到我们的thone目录，方便我们操作</p>
<p>下面我们运行<code><font face="Courier New">generate:app</font></code> 命令生成前台应用程序。</p>
<p>在命令行中输入：php symfony generate:app &#8211;escaping-strategy=on &#8211;csrf-secret=Unique$ecret frontend</p>
<p>再一次的，<code><font face="Courier New">generate:app</font></code> 任务帮我们在<code><font face="Courier New">apps/frontend</font></code>目录下创建了应用程序的默认文件目录结构</p>
<table cellSpacing="0" class="doc_table">
<thead>
<th>目录</th>
<th>说明</th>
</tr>
<tr>
<td>config/</td>
<td>应用程序配置文档</td>
</tr>
<tr>
<td>lib/</td>
<td>应用程序需要的类和库</td>
</tr>
<tr>
<td>modules/</td>
<td>应用程序的代码 (MVC)</td>
</tr>
<tr>
<td>templates/</td>
<td>全局的模板文件</td>
</tr>
</table>
<p>好了，我们现在在浏览器中输入：localhost/thone/web/</p>
<p>应该输出一下界面：</p>
<p><a href="http://www.phpunion.com/wp-content/uploads/2009/12/symfony1.jpg" title="symfony1.jpg" rel='lightbox'><img src="http://www.phpunion.com/wp-content/uploads/2009/12/symfony1.thumbnail.jpg" alt="symfony1.jpg" /></a></p>
<p>证明我们的symfony项目已经搭建成功了，但是有几个问题，好像有图片没有显示出来，</p>
<p>而且好像输入的地址太长了吧？这让太累了。</p>
<p>没关系，我们编辑一下APACHE</p>
<p>打开：D:\xampp\apache\conf\httpd.conf,在最后增加：</p>
<blockquote class="note"><p># 请确保下面这行在配置文件只出现一次<br />
NameVirtualHost *:80<br />
&lt;VirtualHost *:80&gt;<br />
    DocumentRoot &#8220;D:\xampp\htdocs&#8221;<br />
&lt;/VirtualHost&gt;<br />
&lt;VirtualHost *:80&gt;<br />
  DocumentRoot &#8220;D:\xampp\htdocs\thone/web&#8221;<br />
  DirectoryIndex index.php<br />
  ServerName phpunion.sy<br />
  &lt;Directory &#8220;D:\xampp\htdocs\thone/web&#8221;&gt;<br />
    AllowOverride All<br />
    Allow from All<br />
  &lt;/Directory&gt;<br />
  Alias /sf D:\xampp\htdocs\thone\lib\vendor\symfony\data\web\sf<br />
  &lt;Directory &#8220;D:\xampp\htdocs\thone\lib\vendor\symfony\data\web\sf&#8221;&gt;<br />
    AllowOverride All<br />
    Allow from All<br />
  &lt;/Directory&gt;<br />
&lt;/VirtualHost&gt;<br />
<code> </code></p>
<p><code></code><code>别名<code><font face="Courier New">/sf</font></code>让你能够访问到显示 symfony 默认页和调试工具栏时需要的图片和javascripts文件。</code><code></code><code></code><code></code><code></p>
<blockquote class="note"><p>然后保存退出，重启APACHE，这里我们具体解释为什么这样配置，如果大家实在需要请留言，我再讲解APACHE的虚拟目录绑定。</p></blockquote>
<p></code></p></blockquote>
<p>然后我们修改一下C:\WINDOWS\system32\drivers\etc\hosts这个文件：再最后增加：</p>
<p>127.0.0.1            phpunion.sy</p>
<p></span>保存退出。</p>
<p>在浏览器输入：phpunion.sy</p>
<p>怎么样，很帅吧！</p>
<p>你还可以试着访问开发环境下的应用程序。输入如下URL：phpunion.sf/frontend_dev.php/</p>
<p>web调试工具栏应该能显示在右上角，包括小图标，这表明我们前面的<code><font face="Courier New">sf/</font></code> 别名已配置成功</p>
<p>如下图：<a href="http://www.phpunion.com/wp-content/uploads/2009/12/sy1.png" title="sy1.png" rel='lightbox'><img src="http://www.phpunion.com/wp-content/uploads/2009/12/sy1.thumbnail.png" alt="sy1.png" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.phpunion.com/symfony%e7%ac%ac%e4%b8%80%e8%af%be%ef%bc%9a%e7%8e%af%e5%a2%83%e9%85%8d%e7%bd%ae%e5%92%8c%e7%ac%ac%e4%b8%80%e4%b8%aa%e7%95%99%e8%a8%80%e6%9d%bf/feed/</wfw:commentRss>
		</item>
		<item>
		<title>如何在MYSQL下UTF8中文使用拼音排序</title>
		<link>http://www.phpunion.com/%e5%a6%82%e4%bd%95%e5%9c%a8mysql%e4%b8%8butf8%e4%b8%ad%e6%96%87%e4%bd%bf%e7%94%a8%e6%8b%bc%e9%9f%b3%e6%8e%92%e5%ba%8f/</link>
		<comments>http://www.phpunion.com/%e5%a6%82%e4%bd%95%e5%9c%a8mysql%e4%b8%8butf8%e4%b8%ad%e6%96%87%e4%bd%bf%e7%94%a8%e6%8b%bc%e9%9f%b3%e6%8e%92%e5%ba%8f/#comments</comments>
		<pubDate>Mon, 30 Nov 2009 06:13:09 +0000</pubDate>
		<dc:creator>slash</dc:creator>
		
		<category><![CDATA[PHP的学习经历]]></category>

		<guid isPermaLink="false">http://www.phpunion.com/%e5%a6%82%e4%bd%95%e5%9c%a8mysql%e4%b8%8butf8%e4%b8%ad%e6%96%87%e4%bd%bf%e7%94%a8%e6%8b%bc%e9%9f%b3%e6%8e%92%e5%ba%8f/</guid>
		<description><![CDATA[如果是GBK的话可以直接通过order by 就可以进行拼音排序了
但如果是UTF8的话
需要处理一下字段
select * from 表名 order by CONVERT(字段名 USING GBK)
这样可以临时解决，不过某些生僻字可能无法识别
如果可以的话建议建立首字母表或者拼音表
这样效率可以提高不少
]]></description>
			<content:encoded><![CDATA[<p>如果是GBK的话可以直接通过order by 就可以进行拼音排序了</p>
<p>但如果是UTF8的话</p>
<p>需要处理一下字段</p>
<p>select * from 表名 order by CONVERT(字段名 USING GBK)</p>
<p>这样可以临时解决，不过某些生僻字可能无法识别</p>
<p>如果可以的话建议建立首字母表或者拼音表</p>
<p>这样效率可以提高不少</p>
]]></content:encoded>
			<wfw:commentRss>http://www.phpunion.com/%e5%a6%82%e4%bd%95%e5%9c%a8mysql%e4%b8%8butf8%e4%b8%ad%e6%96%87%e4%bd%bf%e7%94%a8%e6%8b%bc%e9%9f%b3%e6%8e%92%e5%ba%8f/feed/</wfw:commentRss>
		</item>
		<item>
		<title>最近一直在研究JQUERY，遇到了不少问题，回头发出来大家共享</title>
		<link>http://www.phpunion.com/%e6%9c%80%e8%bf%91%e4%b8%80%e7%9b%b4%e5%9c%a8%e7%a0%94%e7%a9%b6jquery%ef%bc%8c%e9%81%87%e5%88%b0%e4%ba%86%e4%b8%8d%e5%b0%91%e9%97%ae%e9%a2%98%ef%bc%8c%e5%9b%9e%e5%a4%b4%e5%8f%91%e5%87%ba%e6%9d%a5/</link>
		<comments>http://www.phpunion.com/%e6%9c%80%e8%bf%91%e4%b8%80%e7%9b%b4%e5%9c%a8%e7%a0%94%e7%a9%b6jquery%ef%bc%8c%e9%81%87%e5%88%b0%e4%ba%86%e4%b8%8d%e5%b0%91%e9%97%ae%e9%a2%98%ef%bc%8c%e5%9b%9e%e5%a4%b4%e5%8f%91%e5%87%ba%e6%9d%a5/#comments</comments>
		<pubDate>Wed, 18 Nov 2009 03:40:05 +0000</pubDate>
		<dc:creator>slash</dc:creator>
		
		<category><![CDATA[杂七杂八]]></category>

		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://www.phpunion.com/%e6%9c%80%e8%bf%91%e4%b8%80%e7%9b%b4%e5%9c%a8%e7%a0%94%e7%a9%b6jquery%ef%bc%8c%e9%81%87%e5%88%b0%e4%ba%86%e4%b8%8d%e5%b0%91%e9%97%ae%e9%a2%98%ef%bc%8c%e5%9b%9e%e5%a4%b4%e5%8f%91%e5%87%ba%e6%9d%a5/</guid>
		<description><![CDATA[总体感觉JQUERY还是比较强大的可以避免很多不兼容的问题不过相对来说加载的内容也太多了点速度有所减慢
]]></description>
			<content:encoded><![CDATA[<p>总体感觉JQUERY还是比较强大的可以避免很多不兼容的问题不过相对来说加载的内容也太多了点速度有所减慢</p>
]]></content:encoded>
			<wfw:commentRss>http://www.phpunion.com/%e6%9c%80%e8%bf%91%e4%b8%80%e7%9b%b4%e5%9c%a8%e7%a0%94%e7%a9%b6jquery%ef%bc%8c%e9%81%87%e5%88%b0%e4%ba%86%e4%b8%8d%e5%b0%91%e9%97%ae%e9%a2%98%ef%bc%8c%e5%9b%9e%e5%a4%b4%e5%8f%91%e5%87%ba%e6%9d%a5/feed/</wfw:commentRss>
		</item>
		<item>
		<title>手机在地铁上发bLOg</title>
		<link>http://www.phpunion.com/%e6%89%8b%e6%9c%ba%e5%9c%a8%e5%9c%b0%e9%93%81%e4%b8%8a%e5%8f%91blog/</link>
		<comments>http://www.phpunion.com/%e6%89%8b%e6%9c%ba%e5%9c%a8%e5%9c%b0%e9%93%81%e4%b8%8a%e5%8f%91blog/#comments</comments>
		<pubDate>Fri, 23 Oct 2009 10:40:52 +0000</pubDate>
		<dc:creator>slash</dc:creator>
		
		<category><![CDATA[杂七杂八]]></category>

		<guid isPermaLink="false">http://www.phpunion.com/%e6%89%8b%e6%9c%ba%e5%9c%a8%e5%9c%b0%e9%93%81%e4%b8%8a%e5%8f%91blog/</guid>
		<description><![CDATA[
真是好玩啊
]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.phpunion.com/wap_uploads/20091023184052.jpg"/></p>
<p>真是好玩啊</p>
]]></content:encoded>
			<wfw:commentRss>http://www.phpunion.com/%e6%89%8b%e6%9c%ba%e5%9c%a8%e5%9c%b0%e9%93%81%e4%b8%8a%e5%8f%91blog/feed/</wfw:commentRss>
		</item>
		<item>
		<title>建国大业高清免费BT种子下载及在线观看</title>
		<link>http://www.phpunion.com/%e5%bb%ba%e5%9b%bd%e5%a4%a7%e4%b8%9a%e9%ab%98%e6%b8%85%e5%85%8d%e8%b4%b9bt%e7%a7%8d%e5%ad%90%e4%b8%8b%e8%bd%bd%e5%8f%8a%e5%9c%a8%e7%ba%bf%e8%a7%82%e7%9c%8b/</link>
		<comments>http://www.phpunion.com/%e5%bb%ba%e5%9b%bd%e5%a4%a7%e4%b8%9a%e9%ab%98%e6%b8%85%e5%85%8d%e8%b4%b9bt%e7%a7%8d%e5%ad%90%e4%b8%8b%e8%bd%bd%e5%8f%8a%e5%9c%a8%e7%ba%bf%e8%a7%82%e7%9c%8b/#comments</comments>
		<pubDate>Wed, 09 Sep 2009 04:36:24 +0000</pubDate>
		<dc:creator>slash</dc:creator>
		
		<category><![CDATA[杂七杂八]]></category>

		<guid isPermaLink="false">http://www.phpunion.com/%e5%bb%ba%e5%9b%bd%e5%a4%a7%e4%b8%9a%e9%ab%98%e6%b8%85%e5%85%8d%e8%b4%b9bt%e7%a7%8d%e5%ad%90%e4%b8%8b%e8%bd%bd%e5%8f%8a%e5%9c%a8%e7%ba%bf%e8%a7%82%e7%9c%8b/</guid>
		<description><![CDATA[
《建国大业》共有172位明星加盟，平均每3分钟就能看到一张熟悉的明星脸，其中大部分都是露一露脸就走的“龙套”。投资方除了中影集团，还有香港寰亚和英皇集团，而导演团队则由韩三平统帅，香港名导陈可辛与内地的黄建新、陈凯歌3位名导担任执行导演。业内普遍认为，这样的阵容创造国产主旋律电影新的票房纪录，一点都不成问题。
但也有人质疑——明星阵容并不一定是票房保证。这么多明星参与完成的一部电影，可能是“群英荟萃”，也可能变成“萝卜开会”。
点击下载建国大业种子
点击在线收看建国大业
]]></description>
			<content:encoded><![CDATA[<p><img width="550" src="http://www.imneter.com/wp-content/uploads/2009/09/20573161.jpg" alt="20573161" height="765" style="width: 468px; height: 765px" title="20573161" class="alignnone size-full wp-image-86" /></p>
<p>《建国大业》共有172位明星加盟，平均每3分钟就能看到一张熟悉的明星脸，其中大部分都是露一露脸就走的“龙套”。投资方除了中影集团，还有香港寰亚和英皇集团，而导演团队则由韩三平统帅，香港名导陈可辛与内地的黄建新、陈凯歌3位名导担任执行导演。业内普遍认为，这样的阵容创造国产主旋律电影新的票房纪录，一点都不成问题。</p>
<p>但也有人质疑——明星阵容并不一定是票房保证。这么多明星参与完成的一部电影，可能是“群英荟萃”，也可能变成“萝卜开会”。</p>
<p><a target="_blank" href="http://www.mmbei.cn">点击下载建国大业种子</a></p>
<p><a target="_blank" href="http://www.mmbei.cn">点击在线收看建国大业</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.phpunion.com/%e5%bb%ba%e5%9b%bd%e5%a4%a7%e4%b8%9a%e9%ab%98%e6%b8%85%e5%85%8d%e8%b4%b9bt%e7%a7%8d%e5%ad%90%e4%b8%8b%e8%bd%bd%e5%8f%8a%e5%9c%a8%e7%ba%bf%e8%a7%82%e7%9c%8b/feed/</wfw:commentRss>
		</item>
		<item>
		<title>使用PHP的SOAP时候容易出的一个问题</title>
		<link>http://www.phpunion.com/%e4%bd%bf%e7%94%a8php%e7%9a%84soap%e6%97%b6%e5%80%99%e5%ae%b9%e6%98%93%e5%87%ba%e7%9a%84%e4%b8%80%e4%b8%aa%e9%97%ae%e9%a2%98/</link>
		<comments>http://www.phpunion.com/%e4%bd%bf%e7%94%a8php%e7%9a%84soap%e6%97%b6%e5%80%99%e5%ae%b9%e6%98%93%e5%87%ba%e7%9a%84%e4%b8%80%e4%b8%aa%e9%97%ae%e9%a2%98/#comments</comments>
		<pubDate>Sun, 31 May 2009 04:00:14 +0000</pubDate>
		<dc:creator>slash</dc:creator>
		
		<category><![CDATA[杂七杂八]]></category>

		<guid isPermaLink="false">http://www.phpunion.com/%e4%bd%bf%e7%94%a8php%e7%9a%84soap%e6%97%b6%e5%80%99%e5%ae%b9%e6%98%93%e5%87%ba%e7%9a%84%e4%b8%80%e4%b8%aa%e9%97%ae%e9%a2%98/</guid>
		<description><![CDATA[Fatal error: Uncaught SoapFault exception: [Client] Function (&#8221;test&#8221;) is not a valid method for this service in D:\xampp\htdocs\clien.php:5 Stack trace: #0 [internal function]: SoapClient->__call(&#8217;test&#8217;, Array) #1 D:\xampp\htdocs\clien.php(5): SoapClient->test() #2 {main} thrown in D:\xampp\htdocs\clien.php on line
刚开始用的时候老是报这个错误
原因是写了新的方法，从生成了wsdl文件
但是总是报这个错误，好像是告诉我们没有这个方法
用var_dump($client->__getFunctions());看了一下确实没有
于是想到：缓存…………
真的很变态，不仅在SERVER端由缓存，在clien端也有…………
加上这句：ini_set(&#8221;soap.wsdl_cache_enabled&#8221;, &#8220;0&#8243;);
当然也可以更改PHP.INI文件
不过我不建议
]]></description>
			<content:encoded><![CDATA[<p>Fatal error: Uncaught SoapFault exception: [Client] Function (&#8221;test&#8221;) is not a valid method for this service in D:\xampp\htdocs\clien.php:5 Stack trace: #0 [internal function]: SoapClient->__call(&#8217;test&#8217;, Array) #1 D:\xampp\htdocs\clien.php(5): SoapClient->test() #2 {main} thrown in D:\xampp\htdocs\clien.php on line<br />
刚开始用的时候老是报这个错误<br />
原因是写了新的方法，从生成了wsdl文件<br />
但是总是报这个错误，好像是告诉我们没有这个方法<br />
用var_dump($client->__getFunctions());看了一下确实没有<br />
于是想到：缓存…………<br />
真的很变态，不仅在SERVER端由缓存，在clien端也有…………<br />
加上这句：ini_set(&#8221;soap.wsdl_cache_enabled&#8221;, &#8220;0&#8243;);<br />
当然也可以更改PHP.INI文件<br />
不过我不建议</p>
]]></content:encoded>
			<wfw:commentRss>http://www.phpunion.com/%e4%bd%bf%e7%94%a8php%e7%9a%84soap%e6%97%b6%e5%80%99%e5%ae%b9%e6%98%93%e5%87%ba%e7%9a%84%e4%b8%80%e4%b8%aa%e9%97%ae%e9%a2%98/feed/</wfw:commentRss>
		</item>
		<item>
		<title>最近人品大爆发了，很久没有搞PHP</title>
		<link>http://www.phpunion.com/%e6%9c%80%e8%bf%91%e4%ba%ba%e5%93%81%e5%a4%a7%e7%88%86%e5%8f%91%e4%ba%86%ef%bc%8c%e5%be%88%e4%b9%85%e6%b2%a1%e6%9c%89%e6%90%9ephp/</link>
		<comments>http://www.phpunion.com/%e6%9c%80%e8%bf%91%e4%ba%ba%e5%93%81%e5%a4%a7%e7%88%86%e5%8f%91%e4%ba%86%ef%bc%8c%e5%be%88%e4%b9%85%e6%b2%a1%e6%9c%89%e6%90%9ephp/#comments</comments>
		<pubDate>Mon, 16 Mar 2009 03:29:48 +0000</pubDate>
		<dc:creator>slash</dc:creator>
		
		<category><![CDATA[PHP的学习经历]]></category>

		<guid isPermaLink="false">http://www.phpunion.com/%e6%9c%80%e8%bf%91%e4%ba%ba%e5%93%81%e5%a4%a7%e7%88%86%e5%8f%91%e4%ba%86%ef%bc%8c%e5%be%88%e4%b9%85%e6%b2%a1%e6%9c%89%e6%90%9ephp/</guid>
		<description><![CDATA[最近正在研究一个新的东东
PYTHON
据说GOOGLE用他做开发
嘿嘿
而且GOOGLE好像还提供空间
得好好看看
]]></description>
			<content:encoded><![CDATA[<p>最近正在研究一个新的东东</p>
<p>PYTHON</p>
<p>据说GOOGLE用他做开发</p>
<p>嘿嘿</p>
<p>而且GOOGLE好像还提供空间</p>
<p>得好好看看</p>
]]></content:encoded>
			<wfw:commentRss>http://www.phpunion.com/%e6%9c%80%e8%bf%91%e4%ba%ba%e5%93%81%e5%a4%a7%e7%88%86%e5%8f%91%e4%ba%86%ef%bc%8c%e5%be%88%e4%b9%85%e6%b2%a1%e6%9c%89%e6%90%9ephp/feed/</wfw:commentRss>
		</item>
		<item>
		<title>用 Zend Framework V1.5 和 Google 应用程序创建高生产力软件包，第 1 部分（2）</title>
		<link>http://www.phpunion.com/%e7%94%a8-zend-framework-v15-%e5%92%8c-google-%e5%ba%94%e7%94%a8%e7%a8%8b%e5%ba%8f%e5%88%9b%e5%bb%ba%e9%ab%98%e7%94%9f%e4%ba%a7%e5%8a%9b%e8%bd%af%e4%bb%b6%e5%8c%85%ef%bc%8c%e7%ac%ac-1-%e9%83%a8-2/</link>
		<comments>http://www.phpunion.com/%e7%94%a8-zend-framework-v15-%e5%92%8c-google-%e5%ba%94%e7%94%a8%e7%a8%8b%e5%ba%8f%e5%88%9b%e5%bb%ba%e9%ab%98%e7%94%9f%e4%ba%a7%e5%8a%9b%e8%bd%af%e4%bb%b6%e5%8c%85%ef%bc%8c%e7%ac%ac-1-%e9%83%a8-2/#comments</comments>
		<pubDate>Wed, 22 Oct 2008 08:03:02 +0000</pubDate>
		<dc:creator>slash</dc:creator>
		
		<category><![CDATA[PHP的学习经历]]></category>

		<guid isPermaLink="false">http://www.phpunion.com/%e7%94%a8-zend-framework-v15-%e5%92%8c-google-%e5%ba%94%e7%94%a8%e7%a8%8b%e5%ba%8f%e5%88%9b%e5%bb%ba%e9%ab%98%e7%94%9f%e4%ba%a7%e5%8a%9b%e8%bd%af%e4%bb%b6%e5%8c%85%ef%bc%8c%e7%ac%ac-1-%e9%83%a8-2/</guid>
		<description><![CDATA[Zend Framework 基础知识
在开始编码前，首先设置基本的 Web 站点。在本节中，您将了解如何正确地设置 Zend Framework Web 站点，包括目录结构和准备默认的文件。然后您将查看基本的 Web 站点并查看如何使用 Zend_Controller 和 Zend_View 组件整合各个部分。
启动新的 Web 站点
Zend Framework 类似于 PHP 的其他框架。它为构建安全的可伸缩的站点提供许多工具，并且为与各个数据库和 Web 服务交互提供了大量库。您可以挑选需要使用的组件，而不必使用所有绑定在一起的组件。对于使用框架而不是重新编写应用程序主要部分来处理遗留站点的人员，这十分有帮助。
在启动新的 Web 站点时，Zend_Controller 组件专门用于帮助我们使用模型-视图-控制器（Model-View-Controller，MVC）设计模式给站点布局。MVC 是一个不断成长的 Web 开发标准，专门用于帮助您保持代码的良好结构和易于维护性。要了解 MVC 设计模式的更多信息，请查阅 参考资料 中列出的文章。
本教程中的应用程序代码已经被单独放到程序自己的目录中，并包含控制器、模型和视图等子目录，如清单 1 所示。对于本教程，建议使用相同结构。
清单 1. Zend Framework 站点的文件系统布局
                 [...]]]></description>
			<content:encoded><![CDATA[<p>Zend Framework 基础知识</p>
<p>在开始编码前，首先设置基本的 Web 站点。在本节中，您将了解如何正确地设置 Zend Framework Web 站点，包括目录结构和准备默认的文件。然后您将查看基本的 Web 站点并查看如何使用 Zend_Controller 和 Zend_View 组件整合各个部分。</p>
<p>启动新的 Web 站点</p>
<p>Zend Framework 类似于 PHP 的其他框架。它为构建安全的可伸缩的站点提供许多工具，并且为与各个数据库和 Web 服务交互提供了大量库。您可以挑选需要使用的组件，而不必使用所有绑定在一起的组件。对于使用框架而不是重新编写应用程序主要部分来处理遗留站点的人员，这十分有帮助。</p>
<p>在启动新的 Web 站点时，Zend_Controller 组件专门用于帮助我们使用模型-视图-控制器（Model-View-Controller，MVC）设计模式给站点布局。MVC 是一个不断成长的 Web 开发标准，专门用于帮助您保持代码的良好结构和易于维护性。要了解 MVC 设计模式的更多信息，请查阅 参考资料 中列出的文章。</p>
<p>本教程中的应用程序代码已经被单独放到程序自己的目录中，并包含控制器、模型和视图等子目录，如清单 1 所示。对于本教程，建议使用相同结构。<br />
清单 1. Zend Framework 站点的文件系统布局</p>
<p>                     application/     controllers/         IndexController.php     models/     views/         scripts/             index/                 index.phtml         helpers/         filters/     layouts/ html/     .htaccess     index.php library/     Zend/      MySite/</p>
<p>下载示例代码（请参阅 下载）将创建清单 1 所示的结构。我们将在 library 文件夹中添加样例应用程序可能使用的所有可重用代码（例如来自第三方的代码）。如果遵循了 系统要求，将很容易获得 Zend Framework ZIP 文件。将框架 ZIP 文件中的 library/Zend 文件夹导出到清单 1 的 Zend 目录中。</p>
<p>您将需要使用 Web 站点的文档根目录作为清单 1 中的 HTML 目录。这将防止从外界直接访问 PHP 代码，并且是一项优秀的安全实践。</p>
<p>如果使用的是 Apache Web 服务器，请编辑清单 1 中所示的 .htaccess 文件以添加清单 2 的内容。<br />
清单 2. .htaccess 文件</p>
<p>                     RewriteEngine on RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php</p>
<p>如果要使用其他 Web 服务器，请参考 Zend_Controller_Router 文档（请参阅 参考资料）以获得其他 Web 服务器的重写规则示例。</p>
<p>编辑 index.php 并添加清单 3 中的内容。该文件是引导文件，该文件将处理所有传入请求并把这些请求定向到相应的控制器和操作。<br />
清单 3. index.php 引导文件</p>
<p>                     <?php require_once 'Zend/Controller/Front.php'; Zend_Controller_Front::run('application/controllers');</p>
<p>您还需要设置一个默认控制器或者 IndexController。在未指定任何控制器时，例如向站点的根目录（即，http://localhost）发出请求时，则使用默认控制器。要处理这种情况，您将编辑 application/controllers/IndexController.php 文件，如下所示：<br />
清单 4. IndexController </p>
<p>                     <?php /** Zend_Controller_Action */ require_once 'Zend/Controller/Action.php';  class IndexController extends Zend_Controller_Action {     public function indexAction()     {     } }</p>
<p>这将创建默认控制器和操作。将使用 indexAction() 指定控制器的默认操作。</p>
<p>  回页首 </p>
<p>ViewRender </p>
<p>Zend_Controller 组件的一个优秀特性是通过 ViewRenderer helper 集成了 Zend_View 组件。Zend_View 组件负责呈现 Web 站点的显示，而 ViewRenderer helper 将把这两个组件绑定在一起。要获得 Zend Framework 的各个组件的详细信息，请查阅 Zend Framework 的官方手册（请参阅 参考资料）。</p>
<p>默认情况下，每个控制器都将创建 Zend_View 组件的实例。在调用操作方法中的代码后，控制器将在与控制器同名的目录下的 application/views/scripts 文件夹中查找视图文件以及与操作同名的视图模板。每次调用操作时，都将自动在随后调用视图模板，除非我们以其他方式指定。</p>
<p>对于默认控制器，它将查找 application/views/scripts/index/index.phtml，以便我们把清单 5 中的内容添加到该文件中。<br />
清单 5. index.phtml</p>
<p>                     <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"              "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html> <head>      </head> <body>
<p>Hello world!</p>
<p> </body> </html></p>
<p>当您在浏览器中查看 index.phtml 页面时，您应当会看到图 1 所示内容。<br />
图 1. Web 站点的主页面</p>
<p>另一个必须添加的特殊控制器是错误控制器。只要框架内出现错误就会调用它，例如调用不存在的控制器或者操作。错误控制器的定义（如清单 6 所示）与普通控制器定义略有不同并且保存在 application/controller/ErrorController.php 中。<br />
清单 6. ErrorController </p>
<p>                     <?php /** Zend_Controller_Action */ require_once 'Zend/Controller/Action.php';  class ErrorController extends Zend_Controller_Action {     public function errorAction()     {     } }</p>
<p>然后您可以在 application/views/scripts/error/error.phtml 文件中创建视图模板，当出现错误时，将显示该文件。</p>
<p>  回页首 </p>
<p>使用 Zend_Controller</p>
<p>现在我们已经设置了基本的站点，现在可以在该基础上开始构建。对于本教程，我们将构建用于演示如何能够高效使用 Zend Framework 的基本组件的简单 Web 站点。Zend_Controller 专门使用简短的搜索引擎优化（Search Engine Optimization，SEO）友好的 URL。这将消除 “难看的” URL，例如那些带有很多 GET 参数的 URL。它还允许您给 URL 提供上下文并且使 URL 更具可读性。考虑用于按编号查找部件的以下 URL：http://localhost/partslookup.php?partid=123456。</p>
<p>现在，让我们用 SEO 友好的 URL 处理此 URL。我们将拥有一个名为 parts 的控制器，它处理所有与部件相关的查找，并且将调用查找操作，该操作将按 partid 处理部件查找任务。下面显示了这个 URL：http://localhost/parts/lookup/partid/123456。</p>
<p>因此，对于使用 Zend_Controller 的 Zend Frameworks Web 站点，您可以使用以下格式的 URL：http://localhost/controller/action/param/value/。</p>
<p>这将指定使用哪个控制器以及在该控制器中调用哪个操作。如果脚本有指向该控制器的任何参数，则在操作之后包含这些参数，并使用参数名 — 斜杠 — 值的格式。由于重写规则添加到了 .htaccess 文件（参见清单 2）中，因此将把所有请求传递到引导文件中，该引导文件将解析该 URL 以确定要调用哪个控制器和操作，并把参数放到控制器对象中以便您可以在那里引用这些参数。</p>
<p>  回页首 </p>
<p>您的第一个控制器</p>
<p>对于站点的第一部分，您将添加名为 record 的新控制器。它将使用五个操作实现记录的创建/读取/更新/删除（Create/Read/Update/Delete，CRUD）接口，使用该接口可以针对典型数据集处理各个操作。操作将包括 list（默认情况下它将返回记录列表）、edit（将以编辑模式返回一条记录）、create（将是一张用于输入新记录的表单）、save（保存记录）和 delete（删除记录）。首先，让我们开始在 application/controllers/RecordController.php 中创建 record 控制器的定义。<br />
清单 7. RecordController </p>
<p>                     <?php /** Zend_Controller_Action */ require_once 'Zend/Controller/Action.php';  class RecordController extends Zend_Controller_Action {     public function indexAction()     {         $this->_redirect(&#8217;/record/list&#8217;);     }</p>
<p>因此在这里，我们已经添加了控制器的默认 indexAction()，它将把用户重定向到 listAction。我们这样做是因为希望 record 控制器的默认视图是记录列表。</p>
<p>现在让我们看一看 listAction。<br />
清单 8. RecordController::listAction() </p>
<p>                         public function listAction()     {     $this->view->records = array(           array(&#8221;id&#8221; => 0, &#8220;name&#8221; => &#8220;record 1&#8243;, &#8220;data&#8221; => &#8220;data 1&#8243;),           array(&#8221;id&#8221; => 1, &#8220;name&#8221; => &#8220;record 2&#8243;, &#8220;data&#8221; => &#8220;data 2&#8243;),           array(&#8221;id&#8221; => 2, &#8220;name&#8221; => &#8220;record 3&#8243;, &#8220;data&#8221; => &#8220;data 3&#8243;),           );     }</p>
<p>对于此操作，我们将为即将呈现的视图返回记录列表。在第 2 部分中，我们将看到如何从 Google Base 中检索这些记录，但是现在，我们将在联合数组的数据库中指定一个静态记录列表，类似于指定如何从数据库返回记录列表。</p>
<p>我们还将添加清单 9 中所示的 editAction，它使用记录编号作为参数并显示用于更新记录的编辑表单。在这里，我们将再次指定用于 listAction() 的同一个静态记录清单，但是还使用以数组形式返回条目的给定参数。<br />
清单 9. RecordController::editAction() </p>
<p>                         public function editAction()     {     $records = array(           array(&#8221;id&#8221; => 0, &#8220;name&#8221; => &#8220;record 1&#8243;, &#8220;data&#8221; => &#8220;data 1&#8243;),           array(&#8221;id&#8221; => 1, &#8220;name&#8221; => &#8220;record 2&#8243;, &#8220;data&#8221; => &#8220;data 2&#8243;),           array(&#8221;id&#8221; => 2, &#8220;name&#8221; => &#8220;record 3&#8243;, &#8220;data&#8221; => &#8220;data 3&#8243;),           );       $id = $this->_getParam(&#8217;print&#8217;,'0&#8242;);       $this->view->id = $id;       $this->view->record = $records[$id];     }</p>
<p>我们已经介绍过如何使用 _getParam() 方法检索传递给表单的参数。您还会注意到方法的第二个参数。如果 URL 中未指定第二个参数的默认值，那么可以进行设置。</p>
<p>createAction 类似于清单 10 中的 editAction，不同之处是返回表单没有填充任何数据。但是，我们可以重用视图，因为显示逻辑是相同的。<br />
清单 10. RecordController::createAction() </p>
<p>                         public function createAction()     {     $this->view->id = &#8216;-1&#8242;;       $this->view->record = array(&#8221;name&#8221;=>&#8221;,&#8221;data=>&#8221;);       $this->render(&#8217;edit&#8217;);     }</p>
<p>我们还将为清单 11 中的另外两个操作 delete 和 save 添加桩。在这两种情况下，将分别执行 delete 或 save 代码，然后返回到 list 视图。在第 2 部分中，我们将添加与 Google Base 的集成，但是现在，我们将让它把消息输出到浏览器中，就好像它执行了我们要求的保存或删除一样。<br />
清单 11. RecordController::saveAction() 和 RecordController::deleteAction() </p>
<p>                         public function saveAction()     {        /* here we will save the record */        $this->_redirect(&#8217;/record/list/&#8217;);     }          public function deleteAction()     {        /* here we will delete the record */        $this->_redirect(&#8217;/record/list/&#8217;);     } }</p>
<p>  回页首 </p>
<p>添加视图</p>
<p>现在让我们添加视图模板。这些模板将位于 application/views/scripts/record/ 目录中，并且有两个文件：list.phtml 和 edit.phtml。这两个文件是类似于上面创建的 index.phtml 文件的标准 HTML 文件。在清单 12 中，您将看到第一个文件 list.phtml，并且它将拥有一个记录列表以及进行编辑或删除的选项。<br />
清单 12. list.phtml</p>
<p>                     <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html> <head>      </head> <body>
<p><a href="/" mce_href="/">Home</a> |  	         <a href="/record" mce_href="/record">Record</a></p>
<p>List of records</p>
<ul>     <?php foreach ( $records as $id => $record ): ?>
<li>         <strong><?php echo $this->escape($record[&#8217;name&#8217;]);                                        ?></strong>          - <?php echo $this->escape($record[&#8217;data&#8217;]); ?>          <a href="/record/edit/<?php echo $this->escape($record[&#8217;id&#8217;]);                                    ?>&#8221;>Edit</a>          <a href="/record/delete/<?php echo $this->escape($record[&#8217;id&#8217;]);                                 ?>&#8221;>Delete</a>     </li>
<p>     <?php endforeach; ?>     </ul>
<p> </body> </html></p>
<p>图 2. 记录列表视图</p>
<p>您将注意到使用了视图 helper escape() 方法。这将转义显示的变量输出以帮助避免可能发生的安全问题，例如跨站点脚本攻击。我们稍后将查看更多其他视图 helper。</p>
<p>清单 13 中的编辑视图是标准的 HTML 表单，该表单将提交到 record 控制器的 save 操作。<br />
清单 13. edit.phtml</p>
<p>                     <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"             "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html> <head>      </head> <body>
<p><a href="/" mce_href="/">Home</a> |               <a href="/record" mce_href="/record">Record</a></p>
<form action="/record/save/id/<?php echo               $this->escape($this->record[&#8217;id&#8217;]); ?>&#8221; method=&#8221;post&#8221;>
<p>Name:<br />
<input name="name" value="<?php echo               $this->escape($this->record[&#8217;name&#8217;]); ?>&#8221;  			 type=&#8221;text&#8221; size=&#8221;20&#8243; /></p>
<p>Data:<br />
<input name="data" value="<?php echo  $this->escape($this->record[&#8217;data&#8217;]); ?>&#8221; type=&#8221;text&#8221; size=&#8221;20&#8243; /></p>
<input name="save" value="Save" type="submit" />
</p></form>
<p> </body> </html></p>
<p>如果一切就绪，您的表单应当类似图 3。<br />
图 3. Record Edit 视图</p>
<p>我们已经创建了数据的基本 CRUD 接口。现在让我们查看如何使用 Zend Framework 的一些高级功能来帮助优化我们的站点设计。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.phpunion.com/%e7%94%a8-zend-framework-v15-%e5%92%8c-google-%e5%ba%94%e7%94%a8%e7%a8%8b%e5%ba%8f%e5%88%9b%e5%bb%ba%e9%ab%98%e7%94%9f%e4%ba%a7%e5%8a%9b%e8%bd%af%e4%bb%b6%e5%8c%85%ef%bc%8c%e7%ac%ac-1-%e9%83%a8-2/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
