<?xml version="1.0" encoding="UTF-8"?>
<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/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>荷包蛋博客 &#187; method</title>
	<atom:link href="http://www.hebaodans.com/tag/method/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.hebaodans.com</link>
	<description>好的心态是成功的开始</description>
	<lastBuildDate>Tue, 20 Jul 2010 17:32:08 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>PHP的日期时间函数date()</title>
		<link>http://www.hebaodans.com/2008/08/php-date-function/</link>
		<comments>http://www.hebaodans.com/2008/08/php-date-function/#comments</comments>
		<pubDate>Thu, 28 Aug 2008 06:35:08 +0000</pubDate>
		<dc:creator></dc:creator>
				<category><![CDATA[Php]]></category>
		<category><![CDATA[date]]></category>
		<category><![CDATA[function]]></category>
		<category><![CDATA[method]]></category>
		<category><![CDATA[useful]]></category>

		<guid isPermaLink="false">http://www.hebaodans.com/?p=86</guid>
		<description><![CDATA[1，年-月-日 echo date(&#8216;Y-m-j&#8217;); 2007-02-6 echo date(&#8216;y-n-j&#8217;); 07-2-6 大写Y表示年四位数字，而小写y表示年的两位数字； 小写m表示月份的数字(带前导)，而小写n则表示不带前导的月份数字。 echo date(&#8216;Y-M-j&#8217;); 2007-Feb-6 echo date(&#8216;Y-m-d&#8217;); 2007-02-06 大写M表示月份的3个缩写字符，而小写m则表示月份的数字(带前导0); 没有大写的J，只有小写j表示月份的日期，无前导o；若需要月份带前导则使用小写d。 echo date(&#8216;Y-M-j&#8217;); 2007-Feb-6 echo date(&#8216;Y-F-jS&#8217;); 2007-February-6th 大写M表示月份的3个缩写字符，而大写F表示月份的英文全写。(没有小写f) 大写S表示日期的后缀，比如“st”、“nd”、“rd”和“th”，具体看日期数字为何。 小结： 表示年可以用大写的Y和小写y; 表示月可以用大写F、大写M、小写m和小写n(分别表示字符和数字的两种方式); 表示日可以用小写d和小写j，大写S表示日期的后缀。 2，时:分:秒 默认情况下，PHP解释显示的时间为“格林威治标准时间”，与我们本地的时间相差8个小时。 echo date(&#8216;g:i:s a&#8217;); 5:56:57 am echo date(&#8216;h:i:s A&#8217;); 05:56:57 AM 小写g表示12小时制，无前导0，而小写h则表示有前导0的12小时制。 当使用12小时制时需要表明上下午，小写a表示小写的“am”和“pm”，大写A表示大写的“AM”和“PM”。 echo date(&#8216;G:i:s&#8217;); 14:02:26 大写G表示24小时制的小时数，但是不带前导的；使用大写的H表示带前导的24小时制小时数 小结： 字母g表示小时不带前导，字母h表示小时带前导； 小写g、h表示12小时制，大写G、H表示24小时制。 3，闰年、星期、天 echo date(&#8216;L&#8217;); 今年是否闰年：0 echo [...]]]></description>
			<content:encoded><![CDATA[<p><strong>1，年-月-日<br />
</strong>echo <span class='wp_keywordlink_affiliate'><a href="http://www.hebaodans.com/tag/date/" title="View all posts in date" target="_blank">date</a></span>(&#8216;Y-m-j&#8217;);<br />
2007-02-6</p>
<p>echo <span class='wp_keywordlink_affiliate'><a href="http://www.hebaodans.com/tag/date/" title="View all posts in date" target="_blank">date</a></span>(&#8216;y-n-j&#8217;);<br />
07-2-6</p>
<p>大写Y表示年四位数字，而小写y表示年的两位数字；<br />
小写m表示月份的数字(带前导)，而小写n则表示不带前导的月份数字。</p>
<p>echo date(&#8216;Y-M-j&#8217;);<br />
2007-Feb-6</p>
<p>echo date(&#8216;Y-m-d&#8217;);<br />
2007-02-06</p>
<p>大写M表示月份的3个缩写字符，而小写m则表示月份的数字(带前导0);<br />
没有大写的J，只有小写j表示月份的日期，无前导o；若需要月份带前导则使用小写d。</p>
<p>echo date(&#8216;Y-M-j&#8217;);<br />
2007-Feb-6</p>
<p>echo date(&#8216;Y-F-jS&#8217;);<br />
2007-February-6th</p>
<p>大写M表示月份的3个缩写字符，而大写F表示月份的英文全写。(没有小写f)<br />
大写S表示日期的后缀，比如“st”、“nd”、“rd”和“th”，具体看日期数字为何。</p>
<p><strong>小结：</strong><br />
表示年可以用大写的Y和小写y;<br />
表示月可以用大写F、大写M、小写m和小写n(分别表示字符和数字的两种方式);<br />
表示日可以用小写d和小写j，大写S表示日期的后缀。</p>
<p><strong>2，时:分:秒</strong></p>
<p>默认情况下，PHP解释显示的时间为“格林威治标准时间”，与我们本地的时间相差8个小时。</p>
<p>echo date(&#8216;g:i:s a&#8217;);<br />
5:56:57 am</p>
<p>echo date(&#8216;h:i:s A&#8217;);<br />
05:56:57 AM</p>
<p>小写g表示12小时制，无前导0，而小写h则表示有前导0的12小时制。<br />
当使用12小时制时需要表明上下午，小写a表示小写的“am”和“pm”，大写A表示大写的“AM”和“PM”。</p>
<p>echo date(&#8216;G:i:s&#8217;);<br />
14:02:26</p>
<p>大写G表示24小时制的小时数，但是不带前导的；使用大写的H表示带前导的24小时制小时数</p>
<p><strong>小结：</strong><br />
字母g表示小时不带前导，字母h表示小时带前导；<br />
小写g、h表示12小时制，大写G、H表示24小时制。</p>
<p><strong>3，闰年、星期、天</strong></p>
<p>echo date(&#8216;L&#8217;);<br />
今年是否闰年：0</p>
<p>echo date(&#8216;l&#8217;);<br />
今天是：Tuesday</p>
<p>echo date(&#8216;D&#8217;);<br />
今天是：Tue</p>
<p>大写L表示判断今年是否闰年，布尔值，为真返回1，否则为0；<br />
小写l表示当天是星期几的英文全写(Tuesday)；<br />
而使用大写D表示星期几的3个字符缩写(Tue)。</p>
<p>echo date(&#8216;w&#8217;);<br />
今天星期：2</p>
<p>echo date(&#8216;W&#8217;);<br />
本周是全年中的第 06 周</p>
<p>小写w表示星期几，数字形式表示<br />
大写W表示一年中的星期数</p>
<p>echo date(&#8216;t&#8217;);<br />
本月是 28 天</p>
<p>echo date(&#8216;z&#8217;);<br />
今天是今年的第 36 天</p>
<p>小写t表示当前月份又多少天<br />
小写z表示今天是本年中第几天</p>
<p><strong>4，其他</strong></p>
<p>echo date(&#8216;T&#8217;);<br />
UTC<br />
大写T表示服务器的时间区域设置</p>
<p>echo date(&#8216;I&#8217;);<br />
0<br />
大写I表示判断当前是否为夏令时，为真返回1，否则为0</p>
<p>echo date(&#8216;U&#8217;);<br />
1170769424<br />
大写U表示从1970年1月1日到现在的总秒数，就是Unix时间纪元的UNIX时间戳。</p>
<p>echo date(&#8216;c&#8217;);<br />
2007-02-06T14:24:43+00:00<br />
小写c表示ISO8601日期，日期格式为YYYY-MM-DD，用字母T来间隔日期和时间，时间格式为HH:MM:SS，时区使用格林威治标准时间(GMT)的偏差来表示。</p>
<p>echo date(&#8216;r&#8217;);<br />
Tue, 06 Feb 2007 14:25:52 +0000<br />
小写r表示RFC822日期。<br />
转载来源：<a href="http://www.cnbruce.com/blog/showlog.asp?log_id=1150&amp;cat_id=30">http://www.cnbruce.com/blog/showlog.asp?log_id=1150&amp;cat_id=30</a></p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://www.hebaodans.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://www.hebaodans.com/2008/08/php-date-function/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>php调试思想与方法</title>
		<link>http://www.hebaodans.com/2008/08/php-debug-thingking-method/</link>
		<comments>http://www.hebaodans.com/2008/08/php-debug-thingking-method/#comments</comments>
		<pubDate>Mon, 18 Aug 2008 00:50:51 +0000</pubDate>
		<dc:creator></dc:creator>
				<category><![CDATA[Php]]></category>
		<category><![CDATA[debug]]></category>
		<category><![CDATA[method]]></category>
		<category><![CDATA[thingking]]></category>

		<guid isPermaLink="false">http://www.hebaodans.com/?p=68</guid>
		<description><![CDATA[update0815: 调整部分内容的顺序 罗嗦的放在后面 update0521: 增加OO思路 update0417: 稍微修正了一些观点, 增加一些内容, 不过内容仍然比较乱 最简单的谁都会的调试(是么?): 本来安装php是没问题 也能用了 但是又从书上抄了一些代码来发现不能用, 那就用眼睛仔细的对着书本纠正一下代码哈 肯定是你抄错了 要么是印刷错了 比如 1(yi)跟l(el) 0(ling)跟O(大写o)等 别笑哈 真的有人抄错过 还让我过去帮忙调试 过去我录入进去(他的没保存) 就全对了 言归正传 Q: &#8220;为什么要调试?&#8221; A: 当然是因为程序错啦. 你以为我有什么别的答案? Q: &#8220;可是我觉得我的程序应该没错啊!&#8221; A: 不能出来期望的结果 当然是错误发生. 有这种思想的人是根本不具备调试观念 更没有调试能力. Q: 那调试有什么用? A: 不管是你配置的php出错 还是你的程序写错 还是你写的正确的程序跟别人配置的php(比如免费空间)犯冲, 学会调试都能找出原因来 Q: 逻辑乱了能调试好么? A: 或许你偶尔改来改去改好了 以为是调试好了 其实那已经不是单纯的调试, 而是反复的用程序代码进行思考, 并且反复的改代码来&#8221;实践&#8221;某个idea是否可行. 可以说是&#8221;调试逻辑&#8221;而非&#8221;调试代码&#8221;: 逻辑没代码或者乱代码&#8211;调试/修改逻辑&#8211;>正确的逻辑->体现在代码上,出来正确的代码. 单纯的调试代码是: [...]]]></description>
			<content:encoded><![CDATA[<p>update0815: 调整部分内容的顺序 罗嗦的放在后面<br />
update0521: 增加OO思路<br />
update0417: 稍微修正了一些观点, 增加一些内容, 不过内容仍然比较乱</p>
<p>最简单的谁都会的调试(是么?):<br />
本来安装php是没问题 也能用了 但是又从书上抄了一些代码来发现不能用, 那就用眼睛仔细的对着书本纠正一下代码哈 肯定是你抄错了 要么是印刷错了<br />
比如 1(yi)跟l(el) 0(ling)跟O(大写o)等</p>
<p>别笑哈 真的有人抄错过 还让我过去帮忙调试 过去我录入进去(他的没保存) 就全对了</p>
<p>言归正传<br />
Q: &#8220;为什么要调试?&#8221;<br />
A: 当然是因为程序错啦. 你以为我有什么别的答案?<br />
Q: &#8220;可是我觉得我的程序应该没错啊!&#8221;<br />
A: 不能出来期望的结果 当然是错误发生. 有这种思想的人是根本不具备调试观念 更没有调试能力.<br />
Q: 那调试有什么用?<br />
A: 不管是你配置的php出错 还是你的程序写错 还是你写的正确的程序跟别人配置的php(比如免费空间)犯冲, 学会调试都能找出原因来<br />
Q: 逻辑乱了能调试好么?<br />
A: 或许你偶尔改来改去改好了 以为是调试好了 其实那已经不是单纯的调试, 而是反复的用程序代码进行思考, 并且反复的改代码来&#8221;实践&#8221;某个idea是否可行.<br />
可以说是&#8221;调试逻辑&#8221;而非&#8221;调试代码&#8221;:<br />
逻辑没代码或者乱代码&#8211;调试/修改逻辑&#8211;>正确的逻辑->体现在代码上,出来正确的代码.<br />
单纯的调试代码是:<br />
正确的逻辑&#8211;编码&#8211;>出错的代码&#8211;调试&#8211;>正确的代码<br />
所以调试可以分为:<br />
1.调试逻辑, 2.调试代码, 3.调试界面. 4. etc..<br />
错误的逻辑是不可能出来正确的程序. 写程序首先得把逻辑(流程)弄清楚, 然后才开始编码.<br />
合并在一起就是:<br />
含糊的逻辑&#8211;调试逻辑&#8211;>正确的逻辑&#8211;编码&#8211;>出错的代码&#8211;调试代码&#8211;>正确的代阿马<br />
其中调试逻辑你可以利用&#8221;修改代码&#8221;来辅助 免得脑子太累, 但是脑子必须动, 不能不思考乱改来改去, 而且不能跟 &#8220;调试代码&#8221; 混在一起.<br />
改小错误 常常混在一起 就解决了, 但是要养成分开的习惯, 对于大错误才能一样轻松解决.</p>
<p>别慌<br />
很初学者 一碰到错误就慌了, 脑子里只知道&#8221;不行啊 错了 惨了 找个人问问&#8221;, 要冷静下来 根据所学的知识去研究, 到底什么是<span class='wp_keywordlink_affiliate'><a href="http://www.hebaodans.com/tag/debug/" title="View all posts in debug" target="_blank">debug</a></span>, 如何<span class='wp_keywordlink_affiliate'><a href="http://www.hebaodans.com/tag/debug/" title="View all posts in debug" target="_blank">debug</a></span>, 出错了到底该干什么</p>
<p>基本调试:<br />
1. 打开调试功能: php.ini 里 设置error_reporting = E_ALL以及 display_errors = On 重启 web服务(apache)<br />
2. 刷新错误的页面 查看错误提示 行号 文件名<br />
3. 打开该文件 定位到出错行. 比如代码 echo $abc[2];<br />
4. 理解错误:<br />
a. 查看手册 理解错误含义 要能理解首先要理解语言 比如最简单的 Undefined index 2 意思是数组不存在该下标 也就说明你访问了某个数组不存在的元素<br />
b. 如果已经知道如何改 就直接修改, 比如改成 echo $abc[0];<br />
c. 不知道就显示变量内容 在同样的地方 加入 var_dump($abc); 刷新页面 看看$abc这个东西到底包含了什么元素<br />
d. 认为本该存在 $abc[2]的, 那就寻找错误源, 往上回朔, 或者用 var_dump(debug_backtrace());<br />
必要的时候 var_dump($_POST, $_GET, $_COOKIE, $_SERVER&#8230;.)</p>
<p>本人未用过单步调试 (step by step) 如果使用调试器相对简单一点 可以暂停下来 看看变量的内容 到底是不是 中应该出现的值, 如果不是 又是哪里产生这个值的</p>
<p>注意留意什么是环境<br />
环境:<br />
为什么全世界那么多人没事就你的有问题? 你的问题爱上了你 还是你爱上了你的问题?<br />
其实&#8221;一方水土养一方人&#8221;, 你的&#8221;环境&#8221;养你的bug.<br />
平时阅读书本/手册, 注意记录整理什么是&#8221;环境&#8221;.<br />
$_GET $_POST $_COOKIE $_SESSION $_SERVER 这些是程序运行的至关重要因素 当然还包括你自己搞出来的 $GLOBALS, 都可以var_dump他们 看看内容.<br />
还有strtolower/strtoupper之类 跟setlocale()函数有关, 而默认值在linux下跟 getenv(&#8220;LANG&#8221;) getenv(&#8220;LC_ALL&#8221;) 之类有关(putenv不一定起作用)<br />
还有其他的 比如php.ini的配置.<br />
还有web服务器配置, 比如apache支持某些函数而在别的服务器下就不支持</p>
<p>btw1: 你的调试能力跟你的编码能力是相互相成的, 根据你的编码经验你觉得还有什么该注意的 可以提出来<br />
btw2: 有些你或许觉得很简单很平常, 但是想想你自己是不是真的做到了</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; 以下内容比较罗嗦<br />
对于你一眼就看出来的问题, 当然可以立即解决, 但是如果没头绪那就参考:<br />
调试的大方向:<br />
抓!<br />
a. 擒贼先擒王, 最大的错误就是逻辑错误, 先审查一边逻辑, 然后才是代码关键的部位(跟错误可能相关的)<br />
b. 顺瓜摸根.., 有果必有因, 知道最终错误的&#8221;结果&#8221;, 顺着摸过去 就能发生错误的&#8221;原因&#8221;, 比如<br />
if ($logined) {<br />
$a = 100;<br />
}<br />
$_SESSION['a'] = $a; 提示Undefined variable $a, 显然要找产生$a变量的地方, 往上找到 if那块 发现只有if true的时候才有$a于是改成<br />
if ($logined) {<br />
$a = 100;<br />
} else {<br />
$a = 0;<br />
}</p>
<p>比如mysql的函数出错 就有好多提示<br />
提示 密码错误: 看看是参数的密码错了 还是mysql服务器设置的密码错了<br />
提示 sql字段不存在, 打开phpmyadmin去表里看看有哪些字段 程序写错了还是忘记添加了 还是搞错表了<br />
提示语句错误, 找mysql手册 而不是php手册</p>
<p>拆!<br />
所谓万众一心 那个什么什么来着, 但是我们是一个人面对的一个&#8221;庞大&#8221;的代码, 所以要来个&#8221;反之亦然&#8221;, 把错误从代码里分开, 把多个错误拆开. 如此一来, 对于你来说只不过是多个小小的错误, 一个个消灭.</p>
<p>忆:<br />
回想以前是不是碰到类似的错误提示, 那个时候是怎么解决的. 如果没有回想到, 那就应该找新的方法.<br />
对于初学者来说, 反复锻炼很重要, 回忆能加强学过的能力/方法, 直到联会贯通, 应用自如.</p>
<p>对比:<br />
跟本文开头说的差不多, 就是找正确的代码来对比.<br />
有时候是没有相应的正确代码的, 这个时候可以在脑子里重新构思一个正确代码来对比, 有点难 呵呵, 不过这样是避免又照着错误的思路去想<br />
再就是看看手册, 根据手册说明就知道其实应该如何 不该如何.</p>
<p>OO 思路<br />
要求你的程序比较OO(不一定是对象, 但是结构/思路上有oo)<br />
OO编程简单说就是对象化, 每个类型的对象完成某个功能, 就像一只老鼠只需要吃就能活, 一个对象/或者某部分代码 只需要所期望的一些数据就能正常工作.<br />
OO debug法就是首先要有个观念: 我的某个对象(or代码)只需要有一定的数据(环境下)就可以正常工作<br />
如果<br />
1. 有正常的数据也出错 则说明是这个对象设计错了<br />
2. 传入的数据不正常, 则说明使用这个对象的代码调用错了<br />
高手或许觉得这条很&#8221;傻&#8221;, 其实对于初学者(包括以前的我) 要形成这样的观念 以及一直使用这个观念来调试, 却是要到了很久之后 接近高手了 才懂.<br />
有点像&#8217;拆&#8217;方法 不过区别在于调试的时候:<br />
1. 取对象出来 可以单独调试, 因为好的对象(or代码) 只需要尽量简单的数据, 复杂的数据可能在对象内部或者外部生存, 而不会跨出/入对象(也就是不会传进来 也不会传出去)<br />
2. 对于web要快速调试, 并不一定要把对象的代码全部掏出来, 只需要再调用对象的部分 添加一些用来查看对象语句, 比如var_dump($obj) var_dump($obj->myabc);<br />
或者类似 echo $http->download(); 这样的调用之前 手工设置一些自己熟悉的数据 比如:<br />
$http->setUrl(&#8220;http://localhost/abc.html&#8221;);<br />
直到确保这个对象工作正常了, 就可以暂时撇开这个对象的代码了, 看看别的东西有没有错误</p>
<p>转载来源：http://club.phpe.net/index.php?act=ST&#038;f=2&#038;t=4985&</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://www.hebaodans.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share/Bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://www.hebaodans.com/2008/08/php-debug-thingking-method/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
