<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7227952526214502448</id><updated>2012-02-16T02:25:58.592-08:00</updated><category term='正規表示式'/><category term='Aptana'/><category term='opencv'/><category term='搜尋引擎'/><category term='JAVA'/><category term='副檔名'/><category term='mysql'/><category term='cache'/><category term='php'/><category term='spyc'/><category term='SFTP'/><category term='ZendFramework'/><category term='資源'/><category term='抓取'/><category term='hash'/><category term='網頁'/><category term='GAE'/><category term='input'/><category term='程式碼'/><category term='require'/><category term='template'/><category term='sybase'/><category term='include'/><category term='cookie'/><category term='mssql'/><category term='migrations mysql'/><category term='array'/><category term='rewrite'/><category term='ip'/><category term='mvc'/><category term='YAML'/><category term='jquery'/><category term='原始碼'/><category term='mysqlnd_uh'/><category term='Memcache'/><category term='css'/><category term='plugin'/><category term='ORM'/><category term='session'/><category term='drupal'/><category term='高亮度'/><category term='搜尋'/><category term='Notepad'/><category term='PHPDevShell'/><category term='framework'/><category term='基礎'/><category term='db'/><category term='google'/><title type='text'>御前帶鍵盤的php部落格</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>87</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-1347296909011654473</id><published>2011-11-15T02:28:00.000-08:00</published><updated>2011-11-15T02:28:07.082-08:00</updated><title type='text'>Linux Pipe小工具</title><content type='html'>&lt;span class="" id="result_box" lang="zh-TW"&gt;&lt;span title="Linux sort的常用"&gt;Linux sort的常用&lt;br /&gt;&lt;/span&gt;&lt;span title="按照第5个字段进行排序"&gt;按照第5個字段進行排序&lt;br /&gt;&lt;/span&gt;&lt;span title="[root@test2 smartlsData]# ll | sort -t : +5n"&gt;[root@test2 smartlsData]# ll | sort -t : +5n&lt;/span&gt;&lt;span title="-rwxrwxrwx 1 root root 178718700 12月22 18:40 Poi.bal"&gt;-rwxrwxrwx 1 root root 178718700 12月22 18:40 Poi.bal&lt;/span&gt;&lt;span title="-rwxrwxrwx 1 root root 182348152 12月22 18:40 Poi.bas"&gt;-rwxrwxrwx 1 root root 182348152 12月22 18:40 Poi.bas&lt;/span&gt;&lt;span title="-rwxrwxrwx 1 root root 18441600 12月22 18:40 Poi.ndx"&gt;-rwxrwxrwx 1 root root 18441600 12月22 18:40 Poi.ndx&lt;/span&gt;&lt;span title="-rwxrwxrwx 1 root root 194056 2006-08-29 wordTableEntry.txt"&gt;-rwxrwxrwx 1 root root 194056 2006-08-29 wordTableEntry.txt&lt;/span&gt;&lt;span title="-rwxrwxrwx 1 root root 194056 9月15 16:31 GeoWordTableEntry.txt"&gt;-rwxrwxrwx 1 root root 194056 9月15 16:31 GeoWordTableEntry.txt&lt;/span&gt;&lt;span title="-rwxrwxrwx 1 root root 20580 12月22 18:40 ACode.ndx"&gt;-rwxrwxrwx 1 root root 20580 12月22 18:40 ACode.ndx&lt;/span&gt;&lt;span title="-rwxrwxrwx 1 root root 338304 2006-08-10 AnTable.txt"&gt;-rwxrwxrwx 1 root root 338304 2006-08-10 AnTable.txt&lt;/span&gt;&lt;span title="-rwxrwxrwx 1 root root 43680 2006-08-10 CnTable.txt"&gt;-rwxrwxrwx 1 root root 43680 2006-08-10 CnTable.txt&lt;/span&gt;&lt;span title="-rwxrwxrwx 1 root root 4929920 2006-08-29 wordTable.txt"&gt;-rwxrwxrwx 1 root root 4929920 2006-08-29 wordTable.txt&lt;/span&gt;&lt;span title="-rwxrwxrwx 1 root root 4929920 9月15 16:31 GeoWordTable.txt"&gt;-rwxrwxrwx 1 root root 4929920 9月15 16:31 GeoWordTable.txt&lt;/span&gt;&lt;span title="-rwxrwxrwx 1 root root 6664 9月14 16:25 data.xml"&gt;-rwxrwxrwx 1 root root 6664 9月14 16:25 data.xml&lt;/span&gt;&lt;span title="-rwxrwxrwx 1 root root 9220800 12月22 18:40 LsID.idx"&gt;-rwxrwxrwx 1 root root 9220800 12月22 18:40 LsID.idx&lt;br /&gt;&lt;/span&gt;&lt;span title="按照纯数字进行排序（否则按照字母方式进行排序）"&gt;按照純數字進行排序（否則按照字母方式進行排序）&lt;br /&gt;&lt;/span&gt;&lt;span title="[root@test2 smartlsData]# ll | sort -n"&gt;[root@test2 smartlsData]# ll | sort -n&lt;/span&gt;&lt;span title="-rwxrwxrwx 1 root root 178718700 12月22 18:40 Poi.bal"&gt;-rwxrwxrwx 1 root root 178718700 12月22 18:40 Poi.bal&lt;/span&gt;&lt;span title="-rwxrwxrwx 1 root root 182348152 12月22 18:40 Poi.bas"&gt;-rwxrwxrwx 1 root root 182348152 12月22 18:40 Poi.bas&lt;/span&gt;&lt;span title="-rwxrwxrwx 1 root root 18441600 12月22 18:40 Poi.ndx"&gt;-rwxrwxrwx 1 root root 18441600 12月22 18:40 Poi.ndx&lt;/span&gt;&lt;span title="-rwxrwxrwx 1 root root 194056 2006-08-29 wordTableEntry.txt"&gt;-rwxrwxrwx 1 root root 194056 2006-08-29 wordTableEntry.txt&lt;/span&gt;&lt;span title="-rwxrwxrwx 1 root root 194056 9月15 16:31 GeoWordTableEntry.txt"&gt;-rwxrwxrwx 1 root root 194056 9月15 16:31 GeoWordTableEntry.txt&lt;/span&gt;&lt;span title="-rwxrwxrwx 1 root root 20580 12月22 18:40 ACode.ndx"&gt;-rwxrwxrwx 1 root root 20580 12月22 18:40 ACode.ndx&lt;/span&gt;&lt;span title="-rwxrwxrwx 1 root root 338304 2006-08-10 AnTable.txt"&gt;-rwxrwxrwx 1 root root 338304 2006-08-10 AnTable.txt&lt;/span&gt;&lt;span title="-rwxrwxrwx 1 root root 43680 2006-08-10 CnTable.txt"&gt;-rwxrwxrwx 1 root root 43680 2006-08-10 CnTable.txt&lt;/span&gt;&lt;span title="-rwxrwxrwx 1 root root 4929920 2006-08-29 wordTable.txt"&gt;-rwxrwxrwx 1 root root 4929920 2006-08-29 wordTable.txt&lt;/span&gt;&lt;span title="-rwxrwxrwx 1 root root 4929920 9月15 16:31 GeoWordTable.txt"&gt;-rwxrwxrwx 1 root root 4929920 9月15 16:31 GeoWordTable.txt&lt;/span&gt;&lt;span title="-rwxrwxrwx 1 root root 6664 9月14 16:25 data.xml"&gt;-rwxrwxrwx 1 root root 6664 9月14 16:25 data.xml&lt;/span&gt;&lt;span title="-rwxrwxrwx 1 root root 9220800 12月22 18:40 LsID.idx"&gt;-rwxrwxrwx 1 root root 9220800 12月22 18:40 LsID.idx&lt;/span&gt;&lt;span title="总用量 390484"&gt;總用量 390484&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span title="Linux wc 的使用"&gt;Linux wc 的使用&lt;br /&gt;&lt;/span&gt;&lt;span title="wc -l 行号"&gt;wc -l 行號&lt;br /&gt;&lt;/span&gt;&lt;span title="wc -m"&gt;wc -m&lt;br /&gt;&lt;/span&gt;&lt;span title="wc -w"&gt;wc -w&lt;br /&gt;&lt;/span&gt;&lt;span title="[root@test2 smartlsData]# ll | wc -l"&gt;[root@test2 smartlsData]# ll | wc -l&lt;/span&gt;&lt;span title="13"&gt;13&lt;br /&gt;&lt;/span&gt;&lt;span title="替换"&gt;替換&lt;br /&gt;&lt;/span&gt;&lt;span title="[root@test2 smartlsData]# ll | tr -d 'A'"&gt;[root@test2 smartlsData]# ll | tr -d 'A'&lt;/span&gt;&lt;span title="总用量 390484"&gt;總用量 390484&lt;/span&gt;&lt;span title="-rwxrwxrwx 1 root root 20580 12月22 18:40 Code.ndx"&gt;-rwxrwxrwx 1 root root 20580 12月22 18:40 Code.ndx&lt;/span&gt;&lt;span title="-rwxrwxrwx 1 root root 338304 2006-08-10 nTable.txt"&gt;-rwxrwxrwx 1 root root 338304 2006-08-10 nTable.txt&lt;/span&gt;&lt;span title="-rwxrwxrwx 1 root root 43680 2006-08-10 CnTable.txt"&gt;-rwxrwxrwx 1 root root 43680 2006-08-10 CnTable.txt&lt;/span&gt;&lt;span title="-rwxrwxrwx 1 root root 6664 9月14 16:25 data.xml"&gt;-rwxrwxrwx 1 root root 6664 9月14 16:25 data.xml&lt;/span&gt;&lt;span title="-rwxrwxrwx 1 root root 194056 9月15 16:31 GeoWordTableEntry.txt"&gt;-rwxrwxrwx 1 root root 194056 9月15 16:31 GeoWordTableEntry.txt&lt;/span&gt;&lt;span title="-rwxrwxrwx 1 root root 4929920 9月15 16:31 GeoWordTable.txt"&gt;-rwxrwxrwx 1 root root 4929920 9月15 16:31 GeoWordTable.txt&lt;/span&gt;&lt;span title="-rwxrwxrwx 1 root root 9220800 12月22 18:40 LsID.idx"&gt;-rwxrwxrwx 1 root root 9220800 12月22 18:40 LsID.idx&lt;/span&gt;&lt;span title="-rwxrwxrwx 1 root root 178718700 12月22 18:40 Poi.bal"&gt;-rwxrwxrwx 1 root root 178718700 12月22 18:40 Poi.bal&lt;/span&gt;&lt;span title="-rwxrwxrwx 1 root root 182348152 12月22 18:40 Poi.bas"&gt;-rwxrwxrwx 1 root root 182348152 12月22 18:40 Poi.bas&lt;/span&gt;&lt;span title="-rwxrwxrwx 1 root root 18441600 12月22 18:40 Poi.ndx"&gt;-rwxrwxrwx 1 root root 18441600 12月22 18:40 Poi.ndx&lt;/span&gt;&lt;span title="-rwxrwxrwx 1 root root 194056 2006-08-29 wordTableEntry.txt"&gt;-rwxrwxrwx 1 root root 194056 2006-08-29 wordTableEntry.txt&lt;/span&gt;&lt;span title="-rwxrwxrwx 1 root root 4929920 2006-08-29 wordTable.txt"&gt;-rwxrwxrwx 1 root root 4929920 2006-08-29 wordTable.txt&lt;br /&gt;&lt;/span&gt;&lt;span title="[root@test2 smartlsData]# ll | cut -d &amp;quot; &amp;quot; -f 4"&gt;[root@test2 smartlsData]# ll | cut -d " " -f 4&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span title="root"&gt;root&lt;/span&gt;&lt;span title="root"&gt;root&lt;/span&gt;&lt;span title="root"&gt;root&lt;/span&gt;&lt;span title="root"&gt;root&lt;/span&gt;&lt;span title="root"&gt;root&lt;/span&gt;&lt;span title="root"&gt;root&lt;/span&gt;&lt;span title="root"&gt;root&lt;/span&gt;&lt;span title="root"&gt;root&lt;/span&gt;&lt;span title="root"&gt;root&lt;/span&gt;&lt;span title="root"&gt;root&lt;/span&gt;&lt;span title="root"&gt;root&lt;/span&gt;&lt;span title="root"&gt;root&lt;br /&gt;&lt;/span&gt;&lt;span title="拆分 按照大小 和 行 来拆分"&gt;拆分 按照大小 和 行 來拆分&lt;br /&gt;&lt;/span&gt;&lt;span title="split -b 1m detailWebsite.htm detailWebsite.htm_"&gt;split -b 1m detailWebsite.htm detailWebsite.htm_&lt;/span&gt;&lt;span title="split -l 5 detailWebsite.htm detailWebsite.htm_"&gt;split -l 5 detailWebsite.htm detailWebsite.htm_&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-1347296909011654473?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/1347296909011654473/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=1347296909011654473' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/1347296909011654473'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/1347296909011654473'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2011/11/linux-pipe.html' title='Linux Pipe小工具'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-2326680197597741379</id><published>2011-11-15T02:26:00.001-08:00</published><updated>2011-11-15T02:27:18.883-08:00</updated><title type='text'>yum 收藏的php pear庫</title><content type='html'>yum list |grep php-pear|cut -d " " -f 1&lt;br /&gt;php-pear.noarch&lt;br /&gt;php-pear-Auth.noarch&lt;br /&gt;php-pear-Auth-OpenID.noarch&lt;br /&gt;php-pear-Auth-RADIUS.noarch&lt;br /&gt;php-pear-Auth-SASL.noarch&lt;br /&gt;php-pear-Auth-Yubico.noarch&lt;br /&gt;php-pear-Auth-radius.noarch&lt;br /&gt;php-pear-Auth-samba.noarch&lt;br /&gt;php-pear-Auth_HTTP.noarch&lt;br /&gt;php-pear-Benchmark.noarch&lt;br /&gt;php-pear-CAS.noarch&lt;br /&gt;php-pear-Cache.noarch&lt;br /&gt;php-pear-Cache-Lite.noarch&lt;br /&gt;php-pear-CodeGen.noarch&lt;br /&gt;php-pear-CodeGen-PECL.noarch&lt;br /&gt;php-pear-Console-Color.noarch&lt;br /&gt;php-pear-Console-CommandLine.noarch&lt;br /&gt;php-pear-Console-Getargs.noarch&lt;br /&gt;php-pear-Console-ProgressBar.noarch&lt;br /&gt;php-pear-Console-Table.noarch&lt;br /&gt;php-pear-Crypt-Blowfish.noarch&lt;br /&gt;php-pear-Crypt-CHAP.noarch&lt;br /&gt;php-pear-DB.noarch&lt;br /&gt;php-pear-DB-DataObject.noarch&lt;br /&gt;php-pear-DB-DataObject-FormBuilder.noarch&lt;br /&gt;php-pear-DB-QueryTool.noarch&lt;br /&gt;php-pear-Date.noarch&lt;br /&gt;php-pear-Date-Holidays.noarch&lt;br /&gt;php-pear-Date-Holidays-USA.noarch&lt;br /&gt;php-pear-Event-Dispatcher.noarch&lt;br /&gt;php-pear-File.noarch&lt;br /&gt;php-pear-File-Bittorrent2.noarch&lt;br /&gt;php-pear-File-Find.noarch&lt;br /&gt;php-pear-File-Passwd.noarch&lt;br /&gt;php-pear-File-SMBPasswd.noarch&lt;br /&gt;php-pear-HTML-Common.noarch&lt;br /&gt;php-pear-HTML-QuickForm.noarch&lt;br /&gt;php-pear-HTML-QuickForm-ElementGrid.noarch&lt;br /&gt;php-pear-HTML-QuickForm-advmultiselect.noarch&lt;br /&gt;php-pear-HTML-Table.noarch&lt;br /&gt;php-pear-HTML-Template-IT.noarch&lt;br /&gt;php-pear-HTML_Javascript.noarch&lt;br /&gt;php-pear-HTML_Template_PHPLIB.noarch&lt;br /&gt;php-pear-HTTP.noarch&lt;br /&gt;php-pear-HTTP-Client.noarch&lt;br /&gt;php-pear-HTTP-OAuth.noarch&lt;br /&gt;php-pear-HTTP-Request.noarch&lt;br /&gt;php-pear-HTTP-Request2.noarch&lt;br /&gt;php-pear-HTTP-Upload.noarch&lt;br /&gt;php-pear-Image-Canvas.noarch&lt;br /&gt;php-pear-Image-Color.noarch&lt;br /&gt;php-pear-Image-Graph.noarch&lt;br /&gt;php-pear-Image-GraphViz.noarch&lt;br /&gt;php-pear-Log.noarch&lt;br /&gt;php-pear-MDB2.noarch&lt;br /&gt;php-pear-MDB2-Driver-mysql.noarch&lt;br /&gt;php-pear-MDB2-Driver-mysqli.noarch&lt;br /&gt;php-pear-MDB2-Driver-pgsql.noarch&lt;br /&gt;php-pear-MDB2-Schema.noarch&lt;br /&gt;php-pear-Mail.noarch&lt;br /&gt;php-pear-Mail-Mime.noarch&lt;br /&gt;php-pear-Mail-mimeDecode.noarch&lt;br /&gt;php-pear-Math-Stats.noarch&lt;br /&gt;php-pear-Net-Curl.noarch&lt;br /&gt;php-pear-Net-DIME.noarch&lt;br /&gt;php-pear-Net-DNS.noarch&lt;br /&gt;php-pear-Net-FTP.noarch&lt;br /&gt;php-pear-Net-IDNA2.noarch&lt;br /&gt;php-pear-Net-IPv4.noarch&lt;br /&gt;php-pear-Net-POP3.noarch&lt;br /&gt;php-pear-Net-Ping.noarch&lt;br /&gt;php-pear-Net-SMTP.noarch&lt;br /&gt;php-pear-Net-Sieve.noarch&lt;br /&gt;php-pear-Net-Socket.noarch&lt;br /&gt;php-pear-Net-Traceroute.noarch&lt;br /&gt;php-pear-Net-URL.noarch&lt;br /&gt;php-pear-Net-URL-Mapper.noarch&lt;br /&gt;php-pear-Net-URL2.noarch&lt;br /&gt;php-pear-Net-UserAgent-Detect.noarch&lt;br /&gt;php-pear-Numbers-Roman.noarch&lt;br /&gt;php-pear-Numbers-Words.noarch&lt;br /&gt;php-pear-OLE.noarch&lt;br /&gt;php-pear-PEAR-Command-Packaging.noarch&lt;br /&gt;php-pear-PHP-CodeSniffer.noarch&lt;br /&gt;php-pear-PHP-Compat.noarch&lt;br /&gt;php-pear-PHP-CompatInfo.noarch&lt;br /&gt;php-pear-Pager.noarch&lt;br /&gt;php-pear-Payment-Process.noarch&lt;br /&gt;php-pear-PhpDocumentor.noarch&lt;br /&gt;php-pear-PhpDocumentor-docs.noarch&lt;br /&gt;php-pear-SOAP.noarch&lt;br /&gt;php-pear-Services-Twitter.noarch&lt;br /&gt;php-pear-Services-Weather.noarch&lt;br /&gt;php-pear-Spreadsheet-Excel-Writer.noarch&lt;br /&gt;php-pear-Structures-DataGrid.noarch&lt;br /&gt;php-pear-Structures-DataGrid-DataSource-Array.noarch&lt;br /&gt;php-pear-Structures-DataGrid-DataSource-DataObject.noarch&lt;br /&gt;php-pear-Structures-DataGrid-DataSource-MDB2.noarch&lt;br /&gt;php-pear-Structures-DataGrid-DataSource-RSS.noarch&lt;br /&gt;php-pear-Structures-DataGrid-Renderer-Pager.noarch&lt;br /&gt;php-pear-Structures-DataGrid-Renderer-Smarty.noarch&lt;br /&gt;php-pear-Text-Diff.noarch&lt;br /&gt;php-pear-Validate.noarch&lt;br /&gt;php-pear-Validate-Finance-CreditCard.noarch&lt;br /&gt;php-pear-Var-Dump.noarch&lt;br /&gt;php-pear-XML-Beautifier.noarch&lt;br /&gt;php-pear-XML-Parser.noarch&lt;br /&gt;php-pear-XML-RPC2.noarch&lt;br /&gt;php-pear-XML-RSS.noarch&lt;br /&gt;php-pear-XML-Serializer.noarch&lt;br /&gt;php-pear-phing.noarch&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Additional PEAR Library &lt;/h2&gt;&lt;h3&gt;&lt;a href="" name="PHPUnit_for_Unit_Testing"&gt;&lt;/a&gt;&lt;a href="" name="PHPUnit_for_Unit_Testing_"&gt;&lt;/a&gt;PHPUnit (for Unit Testing) &lt;/h3&gt;&lt;ul&gt;&lt;li&gt;URL: &lt;a href="http://pear.php.net/package/PHPUnit2/" target="_top"&gt;http://pear.php.net/package/PHPUnit2/&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;Home URL: &lt;a href="http://www.phpunit.de/" target="_top"&gt;http://www.phpunit.de/&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;Stable version: 2.3.6  &lt;/li&gt;&lt;li&gt;Download URL: &lt;a href="http://pear.php.net/package/PHPUnit2/download" target="_top"&gt;http://pear.php.net/package/PHPUnit2/download&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;Installed Servers: vm1, vm2  &lt;/li&gt;&lt;li&gt;Path: /opt/php/lib/php/PHPUnit/ &lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;&lt;a href="" name="PHPMailer"&gt;&lt;/a&gt;PHPMailer &lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Home URL: &lt;a href="http://phpmailer.codeworxtech.com/" target="_top"&gt;http://phpmailer.codeworxtech.com/&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;Latest version: 2.2.1  &lt;/li&gt;&lt;li&gt;Download URL: &lt;a href="http://phpmailer.codeworxtech.com/index.php?pg=sf&amp;amp;p=dl" target="_top"&gt;http://phpmailer.codeworxtech.com/index.php?pg=sf&amp;amp;p=dl&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;Installed Servers: vm1, vm2  &lt;/li&gt;&lt;li&gt;Path: /opt/php/lib/php/PHPMailer/ &lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;&lt;a href="" name="Zend_Framework"&gt;&lt;/a&gt;Zend Framework &lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Home URL: &lt;a href="http://framework.zend.com/" target="_top"&gt;http://framework.zend.com/&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;Latest version: 1.6.1  &lt;/li&gt;&lt;li&gt;Download URL: &lt;a href="http://framework.zend.com/download/latest" target="_top"&gt;http://framework.zend.com/download/latest&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;Installed Server: vm2 (for admin system development)  &lt;/li&gt;&lt;li&gt;Path: /opt/php/lib/php/Zend/ &lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;&lt;a href="" name="PEAR_Package_Excel_and_Spreadshe"&gt;&lt;/a&gt;PEAR Package - Excel and Spreadsheet (Reference Only) &lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Spreadsheet_Excel_Writer: &lt;a href="http://pear.php.net/package/Spreadsheet_Excel_Writer" target="_top"&gt;http://pear.php.net/package/Spreadsheet_Excel_Writer&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;Structures_DataGrid_DataSource_Excel: &lt;a href="http://pear.php.net/package/Structures_DataGrid_DataSource_Excel" target="_top"&gt;http://pear.php.net/package/Structures_DataGrid_DataSource_Excel&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;Structures_DataGrid: &lt;a href="http://pear.php.net/package/Structures_DataGrid" target="_top"&gt;http://pear.php.net/package/Structures_DataGrid&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;Structures_DataGrid_DataSource_Array: &lt;a href="http://pear.php.net/package/Structures_DataGrid_DataSource_Array" target="_top"&gt;http://pear.php.net/package/Structures_DataGrid_DataSource_Array&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;Structures_DataGrid_Renderer_XLS: &lt;a href="http://pear.php.net/package/Structures_DataGrid_Renderer_XLS/" target="_top"&gt;http://pear.php.net/package/Structures_DataGrid_Renderer_XLS/&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;h2&gt;&lt;a href="" name="Reference"&gt;&lt;/a&gt;Reference &lt;/h2&gt;&lt;h3&gt;&lt;a href="" name="PHP_Email"&gt;&lt;/a&gt;PHP - Email &lt;/h3&gt;&lt;ul&gt;&lt;li&gt;PHP Mail Library Presentation: &lt;a href="http://www.phplondon.org/conference/2008/media/docs/marcus_bointon_mail_presentation.pdf" target="_top"&gt;http://www.phplondon.org/conference/2008/media/docs/marcus_bointon_mail_presentation.pdf&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;PHPMailer Tips and Tools: &lt;a href="http://phpmailer.codeworxtech.com/index.php?pg=tips" target="_top"&gt;http://phpmailer.codeworxtech.com/index.php?pg=tips&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;Sending Email with Zend Framework: &lt;a href="http://www.talkphp.com/vbarticles.php?do=article&amp;amp;articleid=51&amp;amp;title=sending-emails-with-the-zend-framework" target="_top"&gt;http://www.talkphp.com/vbarticles.php?do=article&amp;amp;articleid=51&amp;amp;title=sending-emails-with-the-zend-framework&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;&lt;a href="" name="Bounce_Email_Tracking"&gt;&lt;/a&gt;Bounce Email Tracking &lt;/h3&gt;&lt;ul&gt;&lt;li&gt;URL: &lt;a href="http://forums.devshed.com/php-development-5/bounce-e-mail-tracking-522635.html" target="_top"&gt;http://forums.devshed.com/php-development-5/bounce-e-mail-tracking-522635.html&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;Steps to detect bounce emails: &lt;a href="http://www.php.net/manual/sk/ref.mail.php#24963" target="_top"&gt;http://www.php.net/manual/sk/ref.mail.php#24963&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;PHP class for tracking bounce emails: &lt;a href="http://www.phpclasses.org/browse/package/2691.html" target="_top"&gt;http://www.phpclasses.org/browse/package/2691.html&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;Article on Incoming mails and php: &lt;a href="http://www.evolt.org/article/Incoming_Mail_and_PHP/18/27914/" target="_top"&gt;http://www.evolt.org/article/Incoming_Mail_and_PHP/18/27914/&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;&lt;a href="" name="PHP_Bulk_Email_Best_Practice"&gt;&lt;/a&gt;PHP Bulk Email - Best Practice &lt;/h3&gt;&lt;ul&gt;&lt;li&gt;URL: &lt;a href="http://www.phpbuilder.com/board/showthread.php?s=&amp;amp;postid=10781635" target="_top"&gt;http://www.phpbuilder.com/board/showthread.php?s=&amp;amp;postid=10781635&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;&lt;a href="" name="phplist_Features"&gt;&lt;/a&gt;phplist Features &lt;/h3&gt;&lt;ul&gt;&lt;li&gt;URL: &lt;a href="http://www.phplist.com/details" target="_top"&gt;http://www.phplist.com/details&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;&lt;a href="" name="Wiki"&gt;&lt;/a&gt;Wiki &lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Bounce Message: &lt;a href="http://en.wikipedia.org/wiki/Bounce_message" target="_top"&gt;http://en.wikipedia.org/wiki/Bounce_message&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;Bounce Address Tag Validation (BATV): &lt;a href="http://en.wikipedia.org/wiki/Bounce_Address_Tag_Validation" target="_top"&gt;http://en.wikipedia.org/wiki/Bounce_Address_Tag_Validation&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;Sender Policy Framework (SPF): &lt;a href="http://en.wikipedia.org/wiki/Sender_Policy_Framework" target="_top"&gt;http://en.wikipedia.org/wiki/Sender_Policy_Framework&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;Simple Mail Transfer Protocol (SMTP): &lt;a href="http://en.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol" target="_top"&gt;http://en.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;Variable Envelope Return Path (VERP): &lt;a href="http://en.wikipedia.org/wiki/Variable_envelope_return_path" target="_top"&gt;http://en.wikipedia.org/wiki/Variable_envelope_return_path&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;&lt;a href="" name="Software"&gt;&lt;/a&gt;Software &lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Email Marketing Software (Mach5 Mailer): &lt;a href="http://www.mach5.com/products/mailer/index.php" target="_top"&gt;http://www.mach5.com/products/mailer/index.php&lt;/a&gt;  &lt;/li&gt;&lt;li&gt;Email Bounce Handling Solution: &lt;a href="http://www.boogietools.com/" target="_top"&gt;http://www.boogietools.com/&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-2326680197597741379?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/2326680197597741379/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=2326680197597741379' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/2326680197597741379'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/2326680197597741379'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2011/11/yum-php-pear.html' title='yum 收藏的php pear庫'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-4488926570463378524</id><published>2011-11-14T18:19:00.001-08:00</published><updated>2011-11-14T18:56:51.420-08:00</updated><title type='text'>Zend Framework 輸出xml的幾種方法</title><content type='html'>&lt;span class="long_text" id="result_box" lang="zh-TW"&gt;&lt;span title="Zend Framework 输出xml的几种方法。"&gt;Zend Framework 輸出xml的幾種方法。&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="long_text" id="result_box" lang="zh-TW"&gt;&lt;span title="Zend Framework 输出xml的几种方法。"&gt;&amp;nbsp;&lt;/span&gt;&lt;span title="见代码："&gt;見代碼：&lt;/span&gt;&lt;span title="1."&gt;1.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="long_text" id="result_box" lang="zh-TW"&gt;&lt;span title="1."&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span title="class TestController extends Zend_Controller_Action {"&gt;class TestController extends Zend_Controller_Action {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span title="/**"&gt;/**&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span title="* The default action - show the home page"&gt;* The default action - show the home page&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span title="*/"&gt;*/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span title="public function indexAction() {"&gt;public function indexAction() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span title="$content = &amp;quot;&amp;lt;?xml version='1.0'?&amp;gt;&amp;lt;foo&amp;gt;bar&amp;lt;/foo&amp;gt;&amp;quot;;"&gt;$content = "&lt;foo&gt;bar&lt;/foo&gt;";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span title="header('Content-Type: text/xml');"&gt;header('Content-Type: text/xml');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span title="echo $content;"&gt;echo $content;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span title="exit;"&gt;exit;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span title="}"&gt;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span title="}"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="long_text" id="result_box" lang="zh-TW"&gt;&lt;span title="}"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="long_text" id="result_box" lang="zh-TW"&gt;&lt;span title="}"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="long_text" id="result_box" lang="zh-TW"&gt;&lt;span title="}"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="long_text" id="result_box" lang="zh-TW"&gt;&lt;span title="}"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span title="加一句exit;这样可以不用关闭view."&gt;加一句exit;這樣可以不用關閉view.&lt;br /&gt;&lt;/span&gt;&lt;span title="2."&gt;2.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span title="class TestController extends Zend_Controller_Action {"&gt;class TestController extends Zend_Controller_Action {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span title="/**"&gt;/**&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span title="* The default action - show the home page"&gt;* The default action - show the home page&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span title="*/"&gt;*/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span title="public function indexAction() {"&gt;public function indexAction() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span title="// XML-related routine"&gt;// XML-related routine&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span title="$xml = new DOMDocument('1.0', 'utf-8');"&gt;$xml = new DOMDocument('1.0', 'utf-8');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span title="$xml-&amp;gt;appendChild($xml-&amp;gt;createElement('foo', 'bar'));"&gt;$xml-&amp;gt;appendChild($xml-&amp;gt;createElement('foo', 'bar'));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span title="$output = $xml-&amp;gt;saveXML();"&gt;$output = $xml-&amp;gt;saveXML();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span title="// Both layout and view renderer should be disabled"&gt;// Both layout and view renderer should be disabled&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span title="Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer')-&amp;gt;setNoRender(true);"&gt;Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer')-&amp;gt;setNoRender(true);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span title="Zend_Layout::getMvcInstance()-&amp;gt;disableLayout();"&gt;Zend_Layout::getMvcInstance()-&amp;gt;disableLayout();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span title="// Setting up headers and body"&gt;// Setting up headers and body&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span title="$this-&amp;gt;_response-&amp;gt;setHeader('Content-Type', 'text/xml; charset=utf-8')"&gt;$this-&amp;gt;_response-&amp;gt;setHeader('Content-Type', 'text/xml; charset=utf-8')&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span title="-&amp;gt;setBody($output);"&gt;-&amp;gt;setBody($output);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span title="}"&gt;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span title="}"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span title="第二种方法可以调用DOMDocument对象来创建更丰富的xml."&gt;第二種方法可以調用DOMDocument對象來創建更豐富的xml.&lt;br /&gt;&lt;/span&gt;&lt;span title="本文出自“Bob” 博客，请务必保留此出处http://phpbob.blog.51cto.com/636017/631102"&gt;本文出自“Bob” 博客，請務必保留此出處http://phpbob.blog.51cto.com/636017/631102&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-4488926570463378524?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/4488926570463378524/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=4488926570463378524' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/4488926570463378524'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/4488926570463378524'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2011/11/zend-framework-xml.html' title='Zend Framework 輸出xml的幾種方法'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-2719752505610703210</id><published>2011-10-03T23:27:00.000-07:00</published><updated>2011-10-03T23:27:15.101-07:00</updated><title type='text'>Function session_register() is deprecated</title><content type='html'>session_register()函式在php5.3環境下&lt;br /&gt;是不給用的&lt;br /&gt;建議&lt;br /&gt;if(&lt;span style="color: red;"&gt;session_register( “abc” )&lt;/span&gt;){&lt;br /&gt;&amp;nbsp; &amp;nbsp; echo 'XXX'; &lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;改為&lt;br /&gt;if($_SESSION['abc'] = null){&lt;br /&gt;&amp;nbsp;&amp;nbsp; echo 'XXX';&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-2719752505610703210?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/2719752505610703210/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=2719752505610703210' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/2719752505610703210'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/2719752505610703210'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2011/10/function-sessionregister-is-deprecated.html' title='Function session_register() is deprecated'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-7612568305674406062</id><published>2011-10-03T23:20:00.000-07:00</published><updated>2011-10-03T23:20:54.535-07:00</updated><title type='text'>function ereg() is deprecated</title><content type='html'>&lt;h2&gt;&lt;a href="http://www.liuhuadong.com/archives/727/index.html" rel="bookmark" title="Permanent Link to php5.3开始出现的Function ereg() is deprecated Error问题解决办法"&gt;&lt;/a&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-weight: normal;"&gt;php5.3之後關於正規表示式會出現錯誤&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;&lt;h2 style="font-weight: normal;"&gt;&lt;span style="font-size: small;"&gt;function ereg() is deprecated&amp;nbsp;&lt;/span&gt;&lt;/h2&gt;&lt;h2 style="font-weight: normal;"&gt;&lt;span style="font-size: small;"&gt;請修改函式&lt;/span&gt;&lt;/h2&gt;&lt;div class="hl-surround"&gt;&lt;div class="hl-main"&gt;&lt;span style="color: blue;"&gt;ereg&lt;/span&gt;&lt;span style="color: olive;"&gt;(&lt;/span&gt;&lt;span style="color: darkred;"&gt;"&lt;/span&gt;&lt;span style="color: red;"&gt;^[0-9]*$&lt;/span&gt;&lt;span style="color: darkred;"&gt;"&lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: darkblue;"&gt;$page&lt;/span&gt;&lt;span style="color: olive;"&gt;)&lt;/span&gt;&lt;span style="color: grey;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;為 &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;preg_match&lt;/span&gt;&lt;span style="color: olive;"&gt;(&lt;/span&gt;&lt;span style="color: darkred;"&gt;"&lt;/span&gt;&lt;span style="color: red;"&gt;/^[0-9]*$/&lt;/span&gt;&lt;span style="color: darkred;"&gt;"&lt;/span&gt;&lt;span style="color: grey;"&gt;,&lt;/span&gt;&lt;span style="color: darkblue;"&gt;$page&lt;/span&gt;&lt;span style="color: olive;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;h2&gt;&amp;nbsp;&lt;/h2&gt;&lt;h2&gt;&lt;br /&gt;&lt;/h2&gt;&lt;h2&gt;&lt;br /&gt;&lt;/h2&gt;&lt;h2&gt;&lt;br /&gt;&lt;/h2&gt;&lt;h2&gt;&lt;br /&gt;&lt;/h2&gt;&lt;h2&gt;&lt;br /&gt;&lt;/h2&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-7612568305674406062?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/7612568305674406062/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=7612568305674406062' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/7612568305674406062'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/7612568305674406062'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2011/10/function-ereg-is-deprecated.html' title='function ereg() is deprecated'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-1923744796169560004</id><published>2011-07-17T00:52:00.000-07:00</published><updated>2011-07-17T00:52:12.422-07:00</updated><title type='text'>ZF 在多個地方放置模組</title><content type='html'>如果想將模組分為核心及外加模組，可透過ZF本身定義設定檔的方式&lt;br /&gt;由&lt;br /&gt;resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"&lt;br /&gt;&lt;br /&gt;&amp;nbsp;修改為&lt;br /&gt;resources.frontController.moduleDirectory[] = APPLICATION_PATH "/modules/core"&lt;br /&gt;resources.frontController.moduleDirectory[] = APPLICATION_PATH "/modules/local"&lt;br /&gt;&lt;br /&gt;可以定義多個放置module位置&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-1923744796169560004?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/1923744796169560004/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=1923744796169560004' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/1923744796169560004'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/1923744796169560004'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2011/07/zf_17.html' title='ZF 在多個地方放置模組'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-4250906400579726926</id><published>2011-07-05T23:42:00.000-07:00</published><updated>2011-07-05T23:42:11.964-07:00</updated><title type='text'>PHP讀取資料夾內檔案列表</title><content type='html'>&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; color: #525252; font-size: 15px;"&gt;PHP的內建函式，以物件的方式處理，可以用來顯示資料夾內的檔案&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; color: #525252; font-size: 15px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; color: #525252; font-size: 15px;"&gt;$d = dir($Path);&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; color: #525252; font-size: 15px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; color: #525252; font-size: 15px;"&gt;while( $entry = $d-&amp;gt;read() ){&lt;/span&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; color: #525252; font-size: 15px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; color: #525252; font-size: 15px;"&gt;&amp;nbsp;　if ($entry!= “.” &amp;amp;&amp;amp;　$entry!= “..”) {&lt;/span&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; color: #525252; font-size: 15px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; color: #525252; font-size: 15px;"&gt;　　&lt;/span&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; color: #525252; font-size: 15px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; color: #525252; font-size: 15px;"&gt;　}&lt;/span&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; color: #525252; font-size: 15px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; color: #525252; font-size: 15px;"&gt;}&lt;/span&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; color: #525252; font-size: 15px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; color: #525252; font-size: 15px;"&gt;closedir($d);&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-4250906400579726926?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/4250906400579726926/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=4250906400579726926' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/4250906400579726926'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/4250906400579726926'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2011/07/php_05.html' title='PHP讀取資料夾內檔案列表'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-1017991779579226135</id><published>2011-07-05T23:17:00.001-07:00</published><updated>2011-07-05T23:18:28.256-07:00</updated><title type='text'>PHP遞迴建資料夾</title><content type='html'>&lt;div class="content" style="color: #444444; font-family: Verdana, 'Lucida Grande', Arial, Helvetica, sans-serif; font-size: 14px; line-height: 25px; word-break: break-all; word-wrap: break-word;"&gt;function mkdirs($dir)&lt;/div&gt;&lt;div class="content" style="color: #444444; font-family: Verdana, 'Lucida Grande', Arial, Helvetica, sans-serif; font-size: 14px; line-height: 25px; word-break: break-all; word-wrap: break-word;"&gt;{&lt;/div&gt;&lt;div class="content" style="color: #444444; font-family: Verdana, 'Lucida Grande', Arial, Helvetica, sans-serif; font-size: 14px; line-height: 25px; word-break: break-all; word-wrap: break-word;"&gt;&lt;blockquote&gt;if(!is_dir($dir))&lt;br /&gt;{&lt;br /&gt;&lt;blockquote&gt;if(!mkdirs(dirname($dir))){&lt;br /&gt;&amp;nbsp;return false;&lt;br /&gt;}&lt;br /&gt;if(!mkdir($dir,0777)){&lt;br /&gt;&amp;nbsp;return false;&lt;br /&gt;}&lt;/blockquote&gt;&amp;nbsp;}&lt;br /&gt;return true;&lt;/blockquote&gt;&lt;/div&gt;&lt;div class="content" style="color: #444444; font-family: Verdana, 'Lucida Grande', Arial, Helvetica, sans-serif; font-size: 14px; line-height: 25px; word-break: break-all; word-wrap: break-word;"&gt;&amp;nbsp;}&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-1017991779579226135?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/1017991779579226135/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=1017991779579226135' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/1017991779579226135'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/1017991779579226135'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2011/07/php.html' title='PHP遞迴建資料夾'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-627296220510567329</id><published>2011-07-03T07:50:00.000-07:00</published><updated>2011-07-03T07:50:16.593-07:00</updated><title type='text'>ZF 啟用模組功能</title><content type='html'>使用ZF的建立工具&lt;br /&gt;&lt;br /&gt;新增module的功能可以發現&lt;br /&gt;&lt;br /&gt;他會在 application.ini中新增&lt;br /&gt;&lt;br /&gt;resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"&lt;br /&gt;&lt;br /&gt;這樣便可啟用模組功能&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-627296220510567329?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/627296220510567329/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=627296220510567329' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/627296220510567329'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/627296220510567329'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2011/07/zf.html' title='ZF 啟用模組功能'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-2809146152576775270</id><published>2011-04-22T04:48:00.000-07:00</published><updated>2011-04-22T04:48:24.020-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ZendFramework'/><category scheme='http://www.blogger.com/atom/ns#' term='sybase'/><title type='text'>ZendFramework使用FreeTDS連接Sybase</title><content type='html'>請務必把/etc/freetds.conf&lt;br /&gt;&lt;br /&gt;中該資料庫&amp;nbsp; 的TDS版本 設定為tds version = 6.3 或 6.0才會正常&lt;br /&gt;&lt;br /&gt;ZF的INI設定&lt;br /&gt;&lt;br /&gt;resources.db.adapter = "PDO_MSSQL"&lt;br /&gt;resources.db.params.pdoType = "dblib"&lt;br /&gt;resources.db.params.host = "名稱"&lt;br /&gt;resources.db.params.username = "帳號"&lt;br /&gt;resources.db.params.password = "密碼"&lt;br /&gt;resources.db.params.dbname = "資料庫名稱"&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;如果沒有設成tds version = 6.3&lt;br /&gt;會有登入錯誤的問題&lt;br /&gt;&lt;br /&gt;(SQLSTATE[28000] Login incorrect. (severity 9)  )&lt;br /&gt;&lt;br /&gt;參考&lt;br /&gt;&lt;br /&gt;http://blog.wabow.com/archives/335&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-2809146152576775270?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/2809146152576775270/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=2809146152576775270' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/2809146152576775270'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/2809146152576775270'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2011/04/zendframeworkfreetdssybase.html' title='ZendFramework使用FreeTDS連接Sybase'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-9207169923717601943</id><published>2011-04-17T17:35:00.000-07:00</published><updated>2011-04-17T17:35:43.211-07:00</updated><title type='text'>PHP的__call</title><content type='html'>在Ruby中如果呼叫該物件沒有的方法時可透過(method_missin)來處理&lt;br /&gt;&lt;pre&gt;def method_missing(id, *args)&lt;br /&gt;    return self.find(Regexp.last_match(1),  args[0]) if id.id2name =~ /find_by_(.+)/&lt;br /&gt;    raise NoMethodError&lt;br /&gt;  end&lt;/pre&gt;&lt;br /&gt;如果是PHP則透過&lt;code class="php plain"&gt;__call來達到同等的目的&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code class="php plain"&gt;詳見&lt;/code&gt;&lt;br /&gt;&lt;h3 class="blogbogy_title2"&gt;&lt;a href="http://blog.roodo.com/rocksaying/archives/2683180.html%20"&gt;活用 PHP5 的 magic methods&lt;/a&gt;&lt;/h3&gt;&lt;code class="php plain"&gt;&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-9207169923717601943?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/9207169923717601943/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=9207169923717601943' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/9207169923717601943'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/9207169923717601943'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2011/04/phpcall.html' title='PHP的__call'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-7401136480176745812</id><published>2011-04-07T00:39:00.000-07:00</published><updated>2011-04-07T00:39:20.847-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ZendFramework'/><title type='text'>ZendFramework的分頁</title><content type='html'>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 網路上很像很少人在講Zend_Paginator::factory&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; 這個ZF原裝分頁類&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 在初始化(factory)時，可以用ZF_model或array都可以分頁&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $Plists = $qunit -&amp;gt; getList(0);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; //分頁設定&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; $limit = $this -&amp;gt; _getParam('limit', 10);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; $page = $this -&amp;gt; _getParam('page', 1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; //分頁&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $paginator = Zend_Paginator::factory($Plists);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $paginator -&amp;gt; setCurrentPageNumber($page)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -&amp;gt; setItemCountPerPage($limit);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $uCount = $paginator -&amp;gt;getTotalItemCount();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $this -&amp;gt; view -&amp;gt;assign('fromData', $paginator);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  $uCount&amp;nbsp;&amp;nbsp; 總筆數&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $limit&amp;nbsp; 每頁筆數&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $page 預設從第幾頁開始&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $paginator 分頁處理後的資料集&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-7401136480176745812?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/7401136480176745812/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=7401136480176745812' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/7401136480176745812'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/7401136480176745812'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2011/04/zendframework.html' title='ZendFramework的分頁'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-380070362962054647</id><published>2011-04-06T22:58:00.000-07:00</published><updated>2011-04-06T22:58:13.119-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ZendFramework'/><title type='text'>ZendFramework的預設route</title><content type='html'>&amp;nbsp;當我們的網址Action 為&lt;span style="color: red;"&gt;group-user-add&lt;/span&gt;時&lt;br /&gt;ctrl會對應至public function &lt;span style="color: red;"&gt;groupUserAdd&lt;/span&gt;Action()&lt;br /&gt;而 view會對應至&lt;span style="color: red;"&gt;group-user-add.phtml&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&lt;span style="color: black;"&gt;當使用&lt;/span&gt;&lt;/span&gt;&lt;span style="color: red;"&gt;group_user_add&lt;span style="color: black;"&gt;時&lt;/span&gt;&lt;/span&gt;&lt;span style="color: red;"&gt;&lt;span style="color: black;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&lt;span style="color: black;"&gt;ctrl會對應至&lt;/span&gt;groupuseradd&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black;"&gt;而view還是會對應至&lt;/span&gt;&lt;span style="color: red;"&gt;group-user-add.phtml&lt;/span&gt;&lt;br /&gt;&lt;div style="color: black;"&gt; &lt;/div&gt;&lt;div style="color: black;"&gt;所以可以利用下底線的組合來共用同名ctrl切換不同view?&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;是偶然嗎?&lt;/div&gt;&lt;span style="color: red;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-380070362962054647?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/380070362962054647/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=380070362962054647' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/380070362962054647'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/380070362962054647'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2011/04/zendframeworkroute.html' title='ZendFramework的預設route'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-1107456919171509275</id><published>2011-04-01T04:49:00.000-07:00</published><updated>2011-04-01T04:49:57.527-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ZendFramework'/><title type='text'>Zend_Session</title><content type='html'>Zend_Session::rememberMe();&lt;br /&gt;&lt;br /&gt;不帶參數的話，可以使SESSION生命週期為兩周&lt;br /&gt;&amp;nbsp;帶參數的話以秒為單位。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-1107456919171509275?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/1107456919171509275/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=1107456919171509275' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/1107456919171509275'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/1107456919171509275'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2011/04/zendsession.html' title='Zend_Session'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-7244725664526639096</id><published>2011-03-30T21:03:00.001-07:00</published><updated>2011-03-30T22:09:11.032-07:00</updated><title type='text'>Zend_Cache 檔案快取</title><content type='html'>&lt;span id="internal-source-marker_0.08074021145372545" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;//設定緩存生命期&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;$frontendOptions = array('lifeTime' =&amp;gt;5, // 5秒&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;’automatic_serialization’ =&amp;gt; true);&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;//放緩存文件的目錄);&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;$backendOptions = array('cache_dir' =&amp;gt; './temp/cache');&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;//取得一個Zend_Cache_Core 對象&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;$cache = Zend_Cache::factory('Core','File',$frontendOptions,$backendOptions);&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;//取緩存數據&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;if(!$cacheBuffer = $cache-&amp;gt;load(‘mycache’)){&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;//如果沒有命中，則重新生成緩存&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;$data=array(&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;”測試zend 的 cache”,time()&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;);&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;//將數據系列化後存入緩存文件&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;$cache-&amp;gt;save($data, ‘mycache’);&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;//echo “ok”;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;}else{&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;//將取出的數據反序列列化&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;$data=unserialize($cacheBuffer);&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;}&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-7244725664526639096?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/7244725664526639096/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=7244725664526639096' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/7244725664526639096'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/7244725664526639096'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2011/03/zendcache.html' title='Zend_Cache 檔案快取'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-976583627183820139</id><published>2011-03-18T16:18:00.000-07:00</published><updated>2011-03-18T16:21:25.741-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='migrations mysql'/><title type='text'>php-migrations</title><content type='html'>在ruby中有方便的&lt;br /&gt;&lt;pre class="syntax-highlight"&gt;rake db:migrate&lt;/pre&gt;&lt;pre class="syntax-highlight"&gt;可以在開發環境中方便的做&lt;/pre&gt;&lt;pre class="syntax-highlight"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="syntax-highlight"&gt;資料庫的版本控制(結構的新增與回復)&lt;/pre&gt;&lt;pre class="syntax-highlight"&gt;&lt;/pre&gt;&lt;pre class="syntax-highlight"&gt;PHP也有clone的版本&lt;/pre&gt;&lt;pre class="syntax-highlight"&gt;&lt;/pre&gt;&lt;pre class="syntax-highlight"&gt;mysql-php-migrations&lt;/pre&gt;&lt;pre class="syntax-highlight"&gt;&lt;/pre&gt;&lt;pre class="syntax-highlight"&gt;http://code.google.com/p/mysql-php-migrations/ &lt;/pre&gt;&lt;pre class="syntax-highlight"&gt;&lt;/pre&gt;&lt;pre class="syntax-highlight"&gt;使用方式&lt;/pre&gt;&lt;pre class="syntax-highlight"&gt;&lt;/pre&gt;&lt;pre class="syntax-highlight"&gt;執行&lt;/pre&gt;&lt;pre class="syntax-highlight"&gt;&lt;tt&gt;php migrate.php add&lt;/tt&gt;&lt;/pre&gt;&lt;pre class="syntax-highlight"&gt;&lt;tt&gt;&amp;nbsp;&lt;/tt&gt;&lt;/pre&gt;&lt;pre class="syntax-highlight"&gt;&lt;tt&gt;&amp;nbsp;會依日期建立某版本號&lt;/tt&gt;&lt;/pre&gt;&lt;pre class="syntax-highlight"&gt;&lt;tt&gt;&amp;nbsp;&lt;/tt&gt;&lt;/pre&gt;&lt;pre class="syntax-highlight"&gt;&lt;tt&gt;在其中&lt;/tt&gt;&lt;/pre&gt;&lt;pre class="syntax-highlight"&gt;&lt;tt&gt; &lt;/tt&gt;&lt;/pre&gt;&lt;pre class="syntax-highlight"&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="kwd"&gt;public&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="kwd"&gt;function&lt;/span&gt;&lt;span class="pln"&gt; up&lt;/span&gt;&lt;span class="pun"&gt;(&lt;/span&gt;&lt;span class="pln"&gt;PDO &lt;/span&gt;&lt;span class="pun"&gt;&amp;amp;&lt;/span&gt;&lt;span class="pln"&gt;$pdo&lt;/span&gt;&lt;span class="pun"&gt;)&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class="pun"&gt;{&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $pdo&lt;/span&gt;&lt;span class="pun"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="kwd"&gt;exec&lt;/span&gt;&lt;span class="pun"&gt;(&lt;/span&gt;&lt;span class="str"&gt;"ALTER TABLE `test0` ADD `field1` VARCHAR(24) NOT NULL"&lt;/span&gt;&lt;span class="pun"&gt;);&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class="pun"&gt;}&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class="kwd"&gt;public&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="kwd"&gt;function&lt;/span&gt;&lt;span class="pln"&gt; down&lt;/span&gt;&lt;span class="pun"&gt;(&lt;/span&gt;&lt;span class="pln"&gt;PDO &lt;/span&gt;&lt;span class="pun"&gt;&amp;amp;&lt;/span&gt;&lt;span class="pln"&gt;$pdo&lt;/span&gt;&lt;span class="pun"&gt;)&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class="pun"&gt;{&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $pdo&lt;/span&gt;&lt;span class="pun"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="kwd"&gt;exec&lt;/span&gt;&lt;span class="pun"&gt;(&lt;/span&gt;&lt;span class="str"&gt;"ALTER TABLE `test0` DROP `field1`"&lt;/span&gt;&lt;span class="pun"&gt;);&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span class="pun"&gt;}&lt;/span&gt;&lt;span class="pln"&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="syntax-highlight"&gt;&lt;/pre&gt;&lt;pre class="syntax-highlight"&gt;去寫新增或回滾的SQL語法就行&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-976583627183820139?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/976583627183820139/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=976583627183820139' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/976583627183820139'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/976583627183820139'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2011/03/php-migrations.html' title='php-migrations'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-6454657461337882144</id><published>2011-03-01T18:50:00.000-08:00</published><updated>2011-03-01T18:50:20.116-08:00</updated><title type='text'>網頁強制不緩衝(HTML &amp; PHP)</title><content type='html'>HTML&lt;br /&gt;&lt;span&gt;&lt;span class="comments"&gt;&lt;!--&amp;nbsp;no&amp;nbsp;cache&amp;nbsp;headers&amp;nbsp;--&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;meta&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;http-equiv&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"Pragma"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;content&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"no-cache"&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;meta&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;http-equiv&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"no-cache"&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;meta&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;http-equiv&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"Expires"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;content&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"-1"&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;meta&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;http-equiv&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"Cache-Control"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;content&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"no-cache"&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span class="comments"&gt;&lt;!--&amp;nbsp;end&amp;nbsp;no&amp;nbsp;cache&amp;nbsp;headers&amp;nbsp;--&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span&gt;PHP&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span&gt;header(&lt;/span&gt;&lt;span class="string"&gt;'Expires:&amp;nbsp;Sat,&amp;nbsp;26&amp;nbsp;Jul&amp;nbsp;1997&amp;nbsp;05:00:00&amp;nbsp;GMT'&lt;/span&gt;&lt;span&gt;);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;header(&lt;span class="string"&gt;'Last-Modified:&amp;nbsp;'&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span class="func"&gt;gmdate&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class="string"&gt;'D,&amp;nbsp;d&amp;nbsp;M&amp;nbsp;Y&amp;nbsp;H:i:s'&lt;/span&gt;&lt;span&gt;).&lt;/span&gt;&lt;span class="string"&gt;'&amp;nbsp;GMT'&lt;/span&gt;&lt;span&gt;);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;header(&lt;span class="string"&gt;'Cache-Control:&amp;nbsp;no-store,&amp;nbsp;no-cache,&amp;nbsp;must-revalidate'&lt;/span&gt;&lt;span&gt;);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;header(&lt;span class="string"&gt;'Cache-Control:&amp;nbsp;post-check=0,&amp;nbsp;pre-check=0'&lt;/span&gt;&lt;span&gt;,&amp;nbsp;false&amp;nbsp;);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;header(&lt;span class="string"&gt;'Pragma:&amp;nbsp;no-cache'&lt;/span&gt;&lt;span&gt;);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span&gt;資料來源：&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span&gt;&lt;a href="http://www.sougee.com/blog/html%E3%80%81asp%E3%80%81php-%E5%BC%BA%E5%88%B6%E4%B8%8D%E7%BC%93%E5%AD%98%E9%A1%B5%E9%9D%A2%E4%BB%A3%E7%A0%81.html"&gt;HTML、ASP、PHP 強制不緩存頁面代碼(SOUGEE)&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-6454657461337882144?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/6454657461337882144/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=6454657461337882144' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/6454657461337882144'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/6454657461337882144'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2011/03/html-php.html' title='網頁強制不緩衝(HTML &amp; PHP)'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-3525818729522829719</id><published>2011-02-11T01:54:00.000-08:00</published><updated>2011-02-11T01:54:23.704-08:00</updated><title type='text'>Sybase datetime格式</title><content type='html'>Sybase中的date格式需使用date轉成ISO8601標準格式寫入&lt;br /&gt;比較時間也是 &lt;br /&gt;&lt;br /&gt;先轉為時間戳記在轉為YMD&lt;br /&gt;&lt;br /&gt;date('Y-m-d H:i:s',strtotime($rs['sendDate']))&lt;br /&gt;&lt;br /&gt;date( "Y-m-d", strtotime($mInfo['PubDate']))&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-3525818729522829719?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/3525818729522829719/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=3525818729522829719' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/3525818729522829719'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/3525818729522829719'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2011/02/sybase-datetime.html' title='Sybase datetime格式'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-706258224955548340</id><published>2011-02-10T19:58:00.000-08:00</published><updated>2011-02-10T21:37:19.290-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ZendFramework'/><category scheme='http://www.blogger.com/atom/ns#' term='sybase'/><title type='text'>Zend Framework連接Sybase</title><content type='html'>使用ZendFrame work時需在主機上安裝&lt;br /&gt;&lt;br /&gt;dblib&lt;br /&gt;&amp;nbsp;指定設定檔的&lt;br /&gt;&lt;br /&gt;resources.db.adapter = "PDO_MSSQL"&lt;br /&gt;resources.db.params.pdoType = "dblib"&lt;br /&gt;&lt;br /&gt;在zend model update會發生型態問題&lt;br /&gt;&lt;br /&gt;Implicit conversion from datatype 'VARCHAR' to 'INT' is not allowed&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;不知為什麼ZF不判斷型態&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;可透過&lt;br /&gt;protected &lt;span style="color: blue;"&gt;$_metadata&lt;/span&gt; = &lt;a href="http://www.php.net/array"&gt;&lt;span style="color: #000066;"&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="programlisting php"&gt;&lt;div class="phpcode"&gt;&lt;div class="php" style="font-family: monospace;"&gt;&lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal;"&gt;&amp;nbsp; &lt;span style="color: red;"&gt;'&lt;column_name&gt;'&lt;/column_name&gt;&lt;/span&gt; =&amp;gt; &lt;a href="http://www.php.net/array"&gt;&lt;span style="color: #000066;"&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #66cc66;"&gt;(&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: red;"&gt;'SCHEMA_NAME'&lt;/span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; =&amp;gt; &lt;string&gt;,&lt;/string&gt;&lt;/div&gt;&lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: red;"&gt;'TABLE_NAME'&lt;/span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;=&amp;gt; &lt;string&gt;,&lt;/string&gt;&lt;/div&gt;&lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: red;"&gt;'COLUMN_NAME'&lt;/span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; =&amp;gt; &lt;string&gt;,&lt;/string&gt;&lt;/div&gt;&lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: red;"&gt;'COLUMN_POSITION'&lt;/span&gt;&amp;nbsp; =&amp;gt; &lt;int&gt;,&lt;/int&gt;&lt;/div&gt;&lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: red;"&gt;'DATA_TYPE'&lt;/span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; =&amp;gt; &lt;string&gt;,&lt;/string&gt;&lt;/div&gt;&lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: red;"&gt;'DEFAULT'&lt;/span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; =&amp;gt; NULL|&lt;value&gt;,&lt;/value&gt;&lt;/div&gt;&lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: red;"&gt;'NULLABLE'&lt;/span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;=&amp;gt; &lt;bool&gt;,&lt;/bool&gt;&lt;/div&gt;&lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: red;"&gt;'LENGTH'&lt;/span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;=&amp;gt; &lt;string -="" length=""&gt;,&lt;/string&gt;&lt;/div&gt;&lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: red;"&gt;'SCALE'&lt;/span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; =&amp;gt; NULL|&lt;value&gt;,&lt;/value&gt;&lt;/div&gt;&lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: red;"&gt;'PRECISION'&lt;/span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; =&amp;gt; NULL|&lt;value&gt;,&lt;/value&gt;&lt;/div&gt;&lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: red;"&gt;'UNSIGNED'&lt;/span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;=&amp;gt; NULL|&lt;bool&gt;,&lt;/bool&gt;&lt;/div&gt;&lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: red;"&gt;'PRIMARY'&lt;/span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; =&amp;gt; &lt;bool&gt;,&lt;/bool&gt;&lt;/div&gt;&lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: red;"&gt;'PRIMARY_POSITION'&lt;/span&gt; =&amp;gt; &lt;int&gt;,&lt;/int&gt;&lt;/div&gt;&lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: red;"&gt;'IDENTITY'&lt;/span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;=&amp;gt; &lt;bool&gt;,&lt;/bool&gt;&lt;/div&gt;&lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;,&lt;/div&gt;&lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal;"&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: grey; font-style: italic;"&gt;// additional columns...&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal;"&gt;&lt;span style="color: #66cc66;"&gt;)&lt;/span&gt;;&lt;/div&gt;&lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal;"&gt;&lt;/div&gt;&lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal;"&gt;自行定義 &lt;span style="color: blue;"&gt;metadata&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal;"&gt;&lt;/div&gt;&lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal;"&gt;&lt;span style="color: blue;"&gt;&lt;span style="color: black;"&gt;或在data中使用SQL轉型&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal;"&gt;&lt;/div&gt;&lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal;"&gt;&lt;span style="color: blue;"&gt;&lt;span style="color: black;"&gt;'sort_no' =&amp;gt; new Zend_Db_Expr('convert(int,' . $sort_no . ') ') &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal;"&gt;&lt;/div&gt;&lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal;"&gt;&lt;span style="color: blue;"&gt;&lt;span style="color: black;"&gt;Sybase轉型為int型態&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal;"&gt;&lt;span style="color: blue;"&gt;&lt;span style="color: black;"&gt;convert(int,' . $sort_no . ')&lt;/span&gt;&lt;/span&gt;&lt;span style="color: blue;"&gt;&lt;span style="color: black;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal;"&gt;&lt;span style="color: blue;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal;"&gt;&lt;span style="color: blue;"&gt;&lt;span style="color: black;"&gt;目前沒在mysql上發現問題，在Sybase卡了很久，使用settype()及(int)在PHP上轉型&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal;"&gt;&lt;span style="color: blue;"&gt;&lt;span style="color: black;"&gt;進入ZF的update後!!都不行只好透過以上方法!!&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&lt;span style="color: black;"&gt;自動編號需使用identity&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-706258224955548340?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/706258224955548340/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=706258224955548340' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/706258224955548340'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/706258224955548340'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2011/02/zend-frameworksybase.html' title='Zend Framework連接Sybase'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-1972223505600004291</id><published>2010-11-26T08:20:00.000-08:00</published><updated>2010-11-26T08:20:24.208-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='drupal'/><title type='text'>CCK型態</title><content type='html'>&lt;div style="font-family: Arial, Tahoma, Verdan, sans-serif; font-size: 13px; margin-bottom: 15px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;從頭開始試真的是件痛苦的事@@&lt;br style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" /&gt;首先新增一個內容類型&lt;br style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" /&gt;然後開始新增fields(欄位)&lt;br style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" /&gt;麻煩的是fields的TYPE有6個:&lt;br style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" /&gt;Float – 浮點數&lt;br style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" /&gt;Integer – 整數&lt;br style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" /&gt;Decimal – 實數&lt;br style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" /&gt;Text – 文字&lt;br style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" /&gt;Node Reference – 節點參照&lt;br style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" /&gt;User Reference – 使用者參照&lt;br style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" /&gt;&lt;span id="more-294" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;/span&gt;&lt;br style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" /&gt;再來就是一個一個設來測試囉&lt;/div&gt;&lt;div style="font-family: Arial, Tahoma, Verdan, sans-serif; font-size: 13px; margin-bottom: 15px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;把測試的重點記一下…&lt;br style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" /&gt;&lt;span style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Float:&lt;/span&gt;&lt;br style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" /&gt;check boxes/redio buttons&lt;br style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" /&gt;&lt;span style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Number of values:&lt;/span&gt;&amp;nbsp;2&lt;br style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" /&gt;&lt;span style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Allowed values list:&lt;/span&gt;&lt;br style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" /&gt;1.222&lt;br style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" /&gt;3.4&lt;br style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" /&gt;5.6666&lt;br style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" /&gt;&lt;span style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Integer:&lt;/span&gt;&lt;br style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" /&gt;check boxes/redio buttons&lt;br style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" /&gt;&lt;span style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Number of values:&amp;nbsp;&lt;/span&gt;1&lt;br style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" /&gt;&lt;span style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Allowed values list:&lt;/span&gt;&lt;br style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" /&gt;123,456&lt;br style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" /&gt;789&lt;br style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" /&gt;&lt;span style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Decimal:&lt;/span&gt;&lt;br style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" /&gt;Select list(下拉式選單欄位)&lt;br style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" /&gt;&lt;span style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Allowed values list:&lt;/span&gt;&lt;br style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" /&gt;aaa,bbb&lt;br style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" /&gt;ccc&lt;br style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" /&gt;&lt;span style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Text:&lt;/span&gt;&lt;br style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" /&gt;text feild&lt;br style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" /&gt;&lt;span style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Node Reference:&lt;/span&gt;&lt;br style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" /&gt;Select list(下拉式選單欄位)&lt;br style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" /&gt;&lt;span style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Number of values:&lt;/span&gt;&amp;nbsp;5&lt;br style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" /&gt;&lt;span style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;User Reference:&lt;/span&gt;&lt;br style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" /&gt;Autocomplete text filed(會自動拼出符合的字串的文字欄位)&lt;/div&gt;&lt;div style="font-family: Arial, Tahoma, Verdan, sans-serif; font-size: 13px; margin-bottom: 15px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial, Tahoma, Verdan, sans-serif; font-size: 13px; margin-bottom: 15px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;原始來源：&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;a href="http://justfly.idv.tw/2008/09/23/Just_294.html"&gt;http://justfly.idv.tw/2008/09/23/Just_294.html&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-1972223505600004291?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/1972223505600004291/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=1972223505600004291' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/1972223505600004291'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/1972223505600004291'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2010/11/cck.html' title='CCK型態'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-7620548329820513057</id><published>2010-11-26T08:13:00.001-08:00</published><updated>2010-11-26T08:16:13.410-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='drupal'/><title type='text'>水滴關鍵說明</title><content type='html'>&lt;ul style="font-size: 16px; line-height: 24px;"&gt;&lt;li style="margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 1em;"&gt;&lt;strong&gt;ontent type&lt;/strong&gt;: 就是一種文件的形式、內容。譬如說，卡片的格式和書信的格式不同，公文的格式跟相片集的格式不同。&lt;/li&gt;&lt;li style="margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 1em;"&gt;&lt;strong&gt;node&lt;/strong&gt;: 就是每一個單一的文件，在drupal被視為節點，每一個單一文件是依據不同的形式發表出來。&lt;/li&gt;&lt;li style="margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 1em;"&gt;&lt;strong&gt;taxonomy terms&lt;/strong&gt;: 就是為該文件標注分類，跟文件的「形式」不同。分類的重要任務，是為了將不同形式的文件串連在一起整合運用，或對文件做歸檔整理以供日後用途，並且可以定義樹狀結構表現出不同類別的父子關係。他的範疇可能包含每一個node（如tag），也可能是針對某幾種文件的形式來做分類。如公文裡頭可以分成不同年度，書信可以分成札記和散文，相片文件可以分成不同的相簿...等。&lt;/li&gt;&lt;li style="margin-bottom: 1em; margin-left: 0px; margin-right: 0px; margin-top: 1em;"&gt;&lt;strong&gt;views&lt;/strong&gt;: views如名，就是專門管理呈現的部份。因為一個站可能有上萬個nodes，views可以用各種交叉條件篩選出畫面中想呈現的nodes（通常是文件）。可能是不同分類（taxonomy）不同文章形式（content type）還是不同的欄位（年度）的交集。views也提供呈現的方式的設定，如地圖的方式、表格的方式、摘要文的方式、全文的方式、清單的方式...等。&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="line-height: 24px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="line-height: 24px;"&gt;參考：&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="line-height: 24px;"&gt;&lt;a href="http://drupaltaiwan.org/files/20070721/drupal_summer_course.html"&gt;http://drupaltaiwan.org/files/20070721/drupal_summer_course.html&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-7620548329820513057?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/7620548329820513057/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=7620548329820513057' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/7620548329820513057'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/7620548329820513057'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2010/11/blog-post.html' title='水滴關鍵說明'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-7615801315716254150</id><published>2010-11-26T08:09:00.000-08:00</published><updated>2010-11-26T08:11:08.454-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='drupal'/><title type='text'>content-type決定content-template 資料形式決定資料樣板</title><content type='html'>&lt;span class="Apple-style-span" style="color: #333333; font-family: 'Trebuchet MS', 'Bitstream Vera Serif', Utopia, 'Times New Roman', times, serif; font-size: 13px; line-height: 20px;"&gt;drupal 中 node是用來記錄資料的一個單位&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: 'Trebuchet MS', 'Bitstream Vera Serif', Utopia, 'Times New Roman', times, serif; font-size: 13px; line-height: 20px;"&gt;會依content-type決定content-&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: 'Trebuchet MS', 'Bitstream Vera Serif', Utopia, 'Times New Roman', times, serif; font-size: 13px; line-height: 20px;"&gt;template&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: 'Trebuchet MS', 'Bitstream Vera Serif', Utopia, 'Times New Roman', times, serif; font-size: 13px; line-height: 20px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: 'Trebuchet MS', 'Bitstream Vera Serif', Utopia, 'Times New Roman', times, serif; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; line-height: 20px;"&gt;假設&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: 'Trebuchet MS', 'Bitstream Vera Serif', Utopia, 'Times New Roman', times, serif; font-size: 13px; line-height: 20px;"&gt;comment-book.tpl.php樣板存在，所訪問&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: 'Trebuchet MS', 'Bitstream Vera Serif', Utopia, 'Times New Roman', times, serif; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; line-height: 20px;"&gt;的note-type是book時，&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: 'Trebuchet MS', 'Bitstream Vera Serif', Utopia, 'Times New Roman', times, serif; font-size: 13px; line-height: 20px;"&gt;drupal會使用&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: 'Trebuchet MS', 'Bitstream Vera Serif', Utopia, 'Times New Roman', times, serif; font-size: 13px; line-height: 20px;"&gt;comment-book.tpl.php&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: 'Trebuchet MS', 'Bitstream Vera Serif', Utopia, 'Times New Roman', times, serif; font-size: 13px; line-height: 20px;"&gt;而不是預設的&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: 'Trebuchet MS', 'Bitstream Vera Serif', Utopia, 'Times New Roman', times, serif; font-size: 13px; line-height: 20px;"&gt;comment.tpl.php&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: 'Trebuchet MS', 'Bitstream Vera Serif', Utopia, 'Times New Roman', times, serif; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; line-height: 20px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: 'Trebuchet MS', 'Bitstream Vera Serif', Utopia, 'Times New Roman', times, serif; font-size: 13px; line-height: 20px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: 'Trebuchet MS', 'Bitstream Vera Serif', Utopia, 'Times New Roman', times, serif; font-size: 13px; line-height: 20px;"&gt;&lt;a href="http://www.joetsuihk.com/define-comment-template"&gt;http://www.joetsuihk.com/define-comment-template&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-7615801315716254150?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/7615801315716254150/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=7615801315716254150' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/7615801315716254150'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/7615801315716254150'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2010/11/content-typecontent-template.html' title='content-type決定content-template 資料形式決定資料樣板'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-905613608236894492</id><published>2010-11-13T20:14:00.000-08:00</published><updated>2010-11-13T20:24:06.399-08:00</updated><title type='text'>Blog的按月歸檔</title><content type='html'>第一種&lt;br /&gt;&lt;code&gt;&lt;br /&gt;$allvaliddates=$blog-&amp;gt;getarraybyquery("SELECT `pubtime` FROM `{$db_prefix}blogs` ORDER BY `pubtime` DESC");&lt;br /&gt;$allvaliddates=$allvaliddates['pubtime'];&lt;br /&gt;$resultdates=array();&lt;br /&gt;$result="";&lt;br /&gt;if (is_array($allvaliddates)) {&lt;br /&gt;foreach ($allvaliddates as $time) {&lt;br /&gt;$y=gmdate('Y', $time+3600*$config['timezone']);&lt;br /&gt;$m=gmdate('n', $time+3600*$config['timezone']);&lt;br /&gt;$resultdates[$y][$m]+=1;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;第二種&lt;br /&gt;&lt;code&gt;&lt;br /&gt;$archives = $DMC-&amp;gt;query("SELECT postTime FROM ".$DBPrefix."logs where $saveType ORDER BY postTime DESC");&lt;br /&gt;$articledb = array();&lt;br /&gt;while ($article = $DMC-&amp;gt;fetchArray($archives)) {&lt;br /&gt;$article['dateline'] = format_time("Y,m",$article['postTime']);&lt;br /&gt;$articledb[]=$article['dateline'];&lt;br /&gt;}&lt;br /&gt;unset($article);&lt;br /&gt;$archivedb = array_count_values($articledb);&lt;br /&gt;unset($articledb);&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-905613608236894492?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/905613608236894492/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=905613608236894492' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/905613608236894492'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/905613608236894492'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2010/11/blog.html' title='Blog的按月歸檔'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-531941022717207682</id><published>2010-11-01T20:52:00.000-07:00</published><updated>2010-11-01T20:52:10.619-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='require'/><category scheme='http://www.blogger.com/atom/ns#' term='include'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>include  和 require</title><content type='html'>&lt;ul&gt;&lt;li&gt;引用方式的不同&lt;/li&gt;&lt;/ul&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; require 的使用方法通常使用在PHP程式的前頭，在執行前會將因入的檔案展開至原本的程式，實際上文件的內容是去替換該語句。&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; include 通常放在流程控制中，在讀到那一行時才去讀取該文件內容。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;警告方式的不同&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; include()會產生一個警告，而require()則導致一個致命的錯誤（出現錯誤，腳本停止執行）&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; require() :如果文件不存在，會報出一個fatal error.腳本停止執行&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-531941022717207682?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/531941022717207682/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=531941022717207682' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/531941022717207682'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/531941022717207682'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2010/11/include-require.html' title='include  和 require'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-8028071630443725378</id><published>2010-09-29T19:41:00.000-07:00</published><updated>2010-09-29T19:43:58.336-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ZendFramework'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>ZF快速建模的工具zend-db-model-generator</title><content type='html'>羨慕ROR有好用的工具可以掃描資料庫並建出model嗎?&lt;br /&gt;最近發現一個好工具，zend-db-model-generator&lt;br /&gt;&lt;br /&gt;在開發時可以先下載這個工具&lt;br /&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/zend-db-model-generator/"&gt;http://code.google.com/p/zend-db-model-generator/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;svn checkout http://zend-db-model-generator.googlecode.com/svn/trunk/ zend-db-model-generator-read-only&lt;br /&gt;&lt;br /&gt;然後將config資料夾下的config.php-default 複製一份成為 config.php&lt;br /&gt;&lt;br /&gt;並修改裡面資料庫的設定&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;回到上一層後&lt;br /&gt;&lt;br /&gt;執行zend-db-model-generator.php 看有什麼功能好用&lt;br /&gt;&lt;br /&gt;--database            : database name&lt;br /&gt;--location            : specify where to create the files (default is current directory)&lt;br /&gt;--namespace           : override config file's default namespace&lt;br /&gt;*  --table               : table name (parameter can be used more then once)&lt;br /&gt;--all-tables          : create classes for all the scripts in the database&lt;br /&gt;*  --ignore-table        : not to create a class for a specific table&lt;br /&gt;*  --ignore-tables-regex : ignore tables by perl regular expression&lt;br /&gt;*  --tables-regex        : add tables by perl regular expression&lt;br /&gt;&lt;br /&gt;先來試用一下&lt;br /&gt;&lt;br /&gt;php zend-db-model-generator.php --database musicscript --all-tables&lt;br /&gt;&lt;br /&gt;他會將你資料庫中的musicscript所有的資料表都建立model在目前資料夾底下&lt;br /&gt;如果想指定位置只要設定--location參數即可。&lt;br /&gt;&lt;br /&gt;也能指定資料表user&lt;br /&gt;&lt;br /&gt;php zend-db-model-generator.php --database musicscript --table user&lt;br /&gt;&lt;br /&gt;測試下--all-tables好像有錯誤訊息!!但不影響建模&lt;br /&gt;&lt;br /&gt;當然如果你不喜歡他所建立的內容，也有模版可以自己修改在templates資料夾下&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-8028071630443725378?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/8028071630443725378/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=8028071630443725378' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/8028071630443725378'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/8028071630443725378'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2010/09/zfzend-db-model-generator.html' title='ZF快速建模的工具zend-db-model-generator'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-4333394382719502762</id><published>2010-09-27T18:42:00.000-07:00</published><updated>2010-09-27T18:54:47.464-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mysqlnd_uh'/><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>一個用php操控Mysqlnd的接口mysqlnd_uh</title><content type='html'>以往我們使用PHP連接MySQL時，大部分都是C接口&lt;br /&gt;而這個是使用純粹PHP寫出的PHP功能&lt;br /&gt;&lt;a href="http://pecl.php.net/package/mysqlnd_uh"&gt;&lt;br /&gt;http://pecl.php.net/package/mysqlnd_uh&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;可以用來使用PHP Mysql Proxy的功能&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;關於Mysqlnd是PHP5.3以上提供的庫，為資料源提供緩衝&lt;br /&gt;也可節省更多資源的消耗詳情請看&lt;br /&gt;&lt;br /&gt;http://www.javaeye.com/news/380&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-4333394382719502762?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/4333394382719502762/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=4333394382719502762' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/4333394382719502762'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/4333394382719502762'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2010/09/php_27.html' title='一個用php操控Mysqlnd的接口mysqlnd_uh'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-4114018319428961840</id><published>2010-09-22T19:25:00.000-07:00</published><updated>2010-09-22T19:25:55.027-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>PHP的Include與Autoload性能比較</title><content type='html'>直譯語言在運行期時可以動態載入欲執行的物件，在速度上都會認為Autorun其實不然&lt;br /&gt;&lt;br /&gt;請看autoload 與 include性能比較&lt;br /&gt;http://calos-tw.blogspot.com/2009/08/php-autoload-include.html&lt;br /&gt;&lt;br /&gt;文中測試結果&lt;br /&gt;迴圈為1 時 . include_once 比較快&lt;br /&gt;迴圈為1000時. __autoload 快很多&lt;br /&gt;&lt;br /&gt;當重覆載入時__autoload比較快，但實際上在開發,要重覆載入一個物件的機會可能比較少，使用時&lt;br /&gt;Autorun倒是可以減少許多手工寫code的部份&amp;^^&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-4114018319428961840?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/4114018319428961840/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=4114018319428961840' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/4114018319428961840'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/4114018319428961840'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2010/09/phpincludeautoload.html' title='PHP的Include與Autoload性能比較'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-4565399876451088072</id><published>2010-09-20T20:24:00.000-07:00</published><updated>2011-03-28T23:32:57.438-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>取得PHP物件中的屬性及方法</title><content type='html'>在使用第三方的物件時由於文件缺乏，可以使用&lt;br /&gt;&lt;br /&gt;get_class_vars         返回由類的默認屬性組成的數組&lt;br /&gt;get_class_methods  返回由類的方法名組成的數組 &lt;br /&gt;&lt;br /&gt;method_exists(物件名稱, 屬性) 該物件是否有該方法&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;來取得該物件的屬性及方法&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-4565399876451088072?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/4565399876451088072/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=4565399876451088072' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/4565399876451088072'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/4565399876451088072'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2010/09/php.html' title='取得PHP物件中的屬性及方法'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-11695214467646814</id><published>2010-09-09T02:03:00.000-07:00</published><updated>2010-09-09T02:03:24.882-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='副檔名'/><title type='text'>字串切隔取得副檔名</title><content type='html'>$aryExtend = explode('.', 'abc.gif');&lt;br /&gt;# /**&lt;br /&gt;# * $filename 是 abc.gif&lt;br /&gt;# * $aryExtend為陣列&lt;br /&gt;# */&lt;br /&gt;$extend = end($aryExtend);&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-11695214467646814?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/11695214467646814/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=11695214467646814' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/11695214467646814'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/11695214467646814'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2010/09/blog-post.html' title='字串切隔取得副檔名'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-6251255360473011196</id><published>2010-09-07T00:58:00.000-07:00</published><updated>2011-11-14T18:56:16.049-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ZendFramework'/><category scheme='http://www.blogger.com/atom/ns#' term='Memcache'/><category scheme='http://www.blogger.com/atom/ns#' term='session'/><title type='text'>使用ZendFrame Work達到跨站使用Ｓession(同個網域下)</title><content type='html'>Ｍemo(有空再來測試)&lt;br /&gt;&lt;br /&gt;實現多個伺服器使用同一份SESSION&lt;br /&gt;http://hi.baidu.com/renyuan1985/blog/item/081d8ff3f431cf58352accb9.html&lt;br /&gt;&lt;br /&gt;為Zend_Session 添加一個Memcache_ SaveHandler&lt;br /&gt;http://hi.baidu.com/billdkj/blog/item/049d04f0b2a896c47831aa1c.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-6251255360473011196?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/6251255360473011196/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=6251255360473011196' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/6251255360473011196'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/6251255360473011196'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2010/09/endframe-workession.html' title='使用ZendFrame Work達到跨站使用Ｓession(同個網域下)'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-8755856654204485859</id><published>2010-09-06T09:37:00.000-07:00</published><updated>2010-09-06T09:37:38.555-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='spyc'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='YAML'/><title type='text'>PHP中讀取YAML</title><content type='html'>先至http://sourceforge.net/projects/spyc/files/&lt;br /&gt;&lt;br /&gt;下載spyc可供使用&lt;br /&gt;基於Ruby帶動了一股使用YAML的風潮，想在PHP中使用可以試試spyc物件。&lt;br /&gt;YAML就結構上比XML更簡潔。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;include('spyc.php');&lt;br /&gt;&lt;br /&gt;// 讀取YAML文件,生成陣列&lt;br /&gt;$yaml = Spyc::YAMLLoad('spyc.yaml');&lt;br /&gt;&lt;br /&gt;// 將陣列轉換成YAML文件&lt;br /&gt;$array['name'] = 'lrenwang';&lt;br /&gt;$array['site'] = 'blog.lrenwang.com';&lt;br /&gt;$yaml = Spyc::YAMLDump($array);&lt;br /&gt;&lt;br /&gt;Spyc::YAMLDump只是提供轉換，想修改檔案可以參考一下&lt;br /&gt;&lt;br /&gt;file_put_contents('spyc.yaml',$yaml);&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-8755856654204485859?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/8755856654204485859/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=8755856654204485859' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/8755856654204485859'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/8755856654204485859'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2010/09/phpyaml.html' title='PHP中讀取YAML'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-4334463933575584289</id><published>2010-08-23T23:20:00.000-07:00</published><updated>2010-09-18T22:34:18.339-07:00</updated><title type='text'>centos 安裝pdo-mysql</title><content type='html'>透過pear來安裝^^"，yum沒有辦法直接裝pdo-mysql&lt;br /&gt;&lt;br /&gt;yum install php-devel php-pear mysql-devel httpd-devel&lt;br /&gt;pecl install pdo&lt;br /&gt;pecl install pdo_mysql&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-4334463933575584289?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/4334463933575584289/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=4334463933575584289' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/4334463933575584289'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/4334463933575584289'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2010/08/centos-pdo-mysql.html' title='centos 安裝pdo-mysql'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-8730939228845790745</id><published>2010-05-17T17:38:00.001-07:00</published><updated>2010-05-17T17:42:18.203-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>最近關注的網站</title><content type='html'>http://code.google.com/p/memcache-cluster-failover-php/&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;http://code.google.com/p/phuselage/&lt;br /&gt;&lt;br /&gt;http://www.agavi.org/&lt;br /&gt;&lt;br /&gt;http://www.michaelheid.de/gophe-search-service/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-8730939228845790745?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/8730939228845790745/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=8730939228845790745' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/8730939228845790745'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/8730939228845790745'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2010/05/blog-post.html' title='最近關注的網站'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-1561960988505435732</id><published>2010-05-04T03:07:00.000-07:00</published><updated>2010-05-04T03:08:43.882-07:00</updated><title type='text'>checkBox Jquery UI</title><content type='html'>蠻美觀的ＪQuery UI CheckBox&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.protofunc.com/scripts/jquery/checkbox-radiobutton/"&gt;http://www.protofunc.com/scripts/jquery/checkbox-radiobutton/&lt;/a&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_wHesrN3Xxxg/S9_yEIQmQnI/AAAAAAAAAF0/MPWtLkAgZHo/s1600/checkbox.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_wHesrN3Xxxg/S9_yEIQmQnI/AAAAAAAAAF0/MPWtLkAgZHo/s320/checkbox.PNG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-1561960988505435732?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/1561960988505435732/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=1561960988505435732' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/1561960988505435732'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/1561960988505435732'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2010/05/checkbox-jquery-ui.html' title='checkBox Jquery UI'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_wHesrN3Xxxg/S9_yEIQmQnI/AAAAAAAAAF0/MPWtLkAgZHo/s72-c/checkbox.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-1340013200139243988</id><published>2010-04-27T04:14:00.001-07:00</published><updated>2010-04-27T04:14:51.916-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>常用的PHP function</title><content type='html'>在php開發中，我們經常會遇到一些函數，下面是整理好的，可以直接使用，方便開發效率，不過建議大家一定要先看懂，然後在這個基礎上增加功能就提高了自身能力了&lt;br /&gt;&lt;br /&gt;1.產生隨機字符串函數&lt;br /&gt;&lt;br /&gt;function random($length) {&lt;br /&gt;&lt;br /&gt;$hash = @#@#;&lt;br /&gt;&lt;br /&gt;$chars = @#abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz@#;&lt;br /&gt;&lt;br /&gt;$max = strlen($chars) - 1;&lt;br /&gt;&lt;br /&gt;mt_srand((double)microtime() * 1000000);&lt;br /&gt;&lt;br /&gt;for($i = 0; $i &lt; $length; $i ) {$hash .= $chars[mt_rand(0, $max)];}return $hash;}2.截取一定長度的字符串注：該函數對gb2312使用有效function wordscut($string, $length ,$sss=0) {if(strlen($string) &gt; $length) {&lt;br /&gt;&lt;br /&gt;if($sss){&lt;br /&gt;&lt;br /&gt;$length=$length - 3;&lt;br /&gt;&lt;br /&gt;$addstr=@# ...@#;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;for($i = 0; $i &lt; $length; $i ) {if(ord($string[$i]) &gt; 127) {&lt;br /&gt;&lt;br /&gt;$wordscut .= $string[$i].$string[$i 1];&lt;br /&gt;&lt;br /&gt;$i ;&lt;br /&gt;&lt;br /&gt;} else {&lt;br /&gt;&lt;br /&gt;$wordscut .= $string[$i];&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;return $wordscut.$addstr;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;return $string;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;3.取得客戶端ip 地址&lt;br /&gt;&lt;br /&gt;function getip(){&lt;br /&gt;&lt;br /&gt;if (getenv("http_client_ip") &amp;&amp; strcasecmp(getenv("http_client_ip"), "unknown"))&lt;br /&gt;&lt;br /&gt;$ip = getenv("http_client_ip");&lt;br /&gt;&lt;br /&gt;else if (getenv("http_x_forwarded_for") &amp;&amp; strcasecmp(getenv("http_x_forwarded_for"), "unknown"))&lt;br /&gt;&lt;br /&gt;$ip = getenv("http_x_forwarded_for");&lt;br /&gt;&lt;br /&gt;else if (getenv("remote_addr") &amp;&amp; strcasecmp(getenv("remote_addr"), "unknown"))&lt;br /&gt;&lt;br /&gt;$ip = getenv("remote_addr");&lt;br /&gt;&lt;br /&gt;else if (isset($_server[@#remote_addr@#]) &amp;&amp; $_server[@#remote_addr@#] &amp;&amp; strcasecmp($_server[@#remote_addr@#], "unknown"))&lt;br /&gt;$ip = $_server[@#remote_addr@#];&lt;br /&gt;&lt;br /&gt;else&lt;br /&gt;&lt;br /&gt;$ip = "unknown";&lt;br /&gt;&lt;br /&gt;return($ip);&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;4. 創建相應的文件夾&lt;br /&gt;&lt;br /&gt;function createdir($dir=@#@#)&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;if (!is_dir($dir))&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;$temp = explode(@#/@#,$dir);&lt;br /&gt;&lt;br /&gt;$cur_dir = @#@#;&lt;br /&gt;&lt;br /&gt;for($i=0;$i&lt;count($temp);$i ){$cur_dir .= $temp[$i].@#/@#;if (!is_dir($cur_dir)){@mkdir($cur_dir,0777);}}}}5. 判斷郵箱地址function checkemail($inaddress){return (ereg("^([a-za-z0-9_-]) @([a-za-z0-9_-]) (\.[a-za-z0-9_-]) ",$inaddress) );}6.跳轉function gotourl($message=@#@#,$url=@#@#,$title=@#@#){$html ="&lt;html&gt;&lt;head&gt;";&lt;br /&gt;&lt;br /&gt;if(!empty($url))&lt;br /&gt;&lt;br /&gt;$html .="&lt;metahttp-equiv=@#refresh@# content=\"3;url=@#".$url."@#\"&gt;";&lt;br /&gt;&lt;br /&gt;$html .="&lt;linkhref=@#../templates/style.css@# type=text/css rel=stylesheet&gt;";&lt;br /&gt;&lt;br /&gt;$html .="&lt;/head&gt;&lt;body&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;";&lt;br /&gt;&lt;br /&gt;$html .="&lt;tablecellspacing=@#0@#cellpadding=@#0@#border=@#1@#width=@#450@#align=@#center@#&gt;";&lt;br /&gt;&lt;br /&gt;$html .="&lt;tr&gt;&lt;tdbgcolor=@##ffffff@#&gt;";&lt;br /&gt;&lt;br /&gt;$html .="&lt;tableborder=@#1@#cellspacing=@#1@#cellpadding=@#4@#width=@#100%@#&gt;";&lt;br /&gt;&lt;br /&gt;$html .="&lt;trclass=@#m_title@#&gt;";&lt;br /&gt;&lt;br /&gt;$html .="&lt;td&gt;".$title."&lt;/td&gt;&lt;/tr&gt;";&lt;br /&gt;&lt;br /&gt;$html .="&lt;trclass=@#line_1@#&gt;&lt;tdalign=@#center@#height=@#60@#&gt;";&lt;br /&gt;&lt;br /&gt;$html .="&lt;br&gt;".$message."&lt;br&gt;&lt;br&gt;";&lt;br /&gt;&lt;br /&gt;if (!empty($url))&lt;br /&gt;&lt;br /&gt;$html .="系統將在3秒後返回&lt;br&gt;如果您的瀏覽器不能自動返回,請點擊[&lt;a href=".$url." target=_self&gt;這裡&lt;/a&gt;]進入";&lt;br /&gt;else&lt;br /&gt;&lt;br /&gt;$html .="[&lt;a href=@##@#=@#history.go(-1)@#&gt;返回&lt;/a&gt;]";&lt;br /&gt;&lt;br /&gt;$html .="&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;";&lt;br /&gt;&lt;br /&gt;$html .="&lt;/body&gt;&lt;/html&gt;";&lt;br /&gt;&lt;br /&gt;echo $html;&lt;br /&gt;&lt;br /&gt;exit;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;7. 分頁（兩個函數配合使用）&lt;br /&gt;&lt;br /&gt;function getpage($sql,$page_size=20)&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;global $page,$totalpage,$sums; //out param&lt;br /&gt;&lt;br /&gt;$page = $_get["page"];&lt;br /&gt;&lt;br /&gt;//$eachpage = $page_size;&lt;br /&gt;&lt;br /&gt;$pagesql = strstr($sql," from ");&lt;br /&gt;&lt;br /&gt;$pagesql = "select count(*) as ids ".$pagesql;&lt;br /&gt;&lt;br /&gt;$result = mysql_query($pagesql);&lt;br /&gt;&lt;br /&gt;if($rs = mysql_fetch_array($result)) $sums = $rs[0];&lt;br /&gt;&lt;br /&gt;$totalpage = ceil($sums/$page_size);&lt;br /&gt;&lt;br /&gt;if((!$page)||($page&lt;1)) $page=1;$startpos = ($page-1)*$page_size;$sql .=" limit $startpos,$page_size ";return $sql;}function showbar($string=""){global $page,$totalpage;$out="共&amp; lt;font ".$totalpage."color=@#red@#&gt;&lt;b&gt;".$totalpage."&lt;/b&gt;&lt; /font&gt;頁";&lt;br /&gt;&lt;br /&gt;$linknum =4;&lt;br /&gt;$start = ($page-round($linknum/2))&gt;0 ? ($page-round($linknum/2)) : "1";&lt;br /&gt;&lt;br /&gt;$end = ($page round($linknum/2))&lt;$totalpage ? ($page round($linknum/2)) : $totalpage;$prestart=$start-1;$nextend=$end 1;if($page&lt;&gt;1)&lt;br /&gt;&lt;br /&gt;$out .= "&lt;ahref=@#?page=1&amp;&amp;".$string."@#title=第一頁&gt;第一頁&lt;/a&gt; ";&lt;br /&gt;&lt;br /&gt;if($start&gt;1)&lt;br /&gt;&lt;br /&gt;$out.="&lt;ahref=@#?page=".$prestart."@# title=上一頁&gt;..&lt;&lt;&lt;/a&gt; ";&lt;br /&gt;&lt;br /&gt;for($t=$start;$t&lt;=$end;$t ){$out .= ($page==$t) ? "&lt;font [".$t."]color=@#red@#&gt;&lt;b&gt;[".$t."]&lt;/b&gt;&lt;/font &gt; " : "&lt;a$thref=@#?page=$t&amp;&amp;".$string."@#&gt;$t&lt;/a&gt; ";&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;if($end&lt;$totalpage)$out.="&lt;ahref=@#?page=".$nextend."&amp;&amp;".$string."@# title=下一頁&gt;&gt;&gt;..&lt;/a&gt;";&lt;br /&gt;&lt;br /&gt;if($page&lt;&gt;$totalpage)&lt;br /&gt;&lt;br /&gt;$out .= " &lt;ahref=@#?page=".$totalpage."&amp;&amp;".$string."@# title=最後頁&gt;最後頁&lt;/a&gt;";&lt;br /&gt;&lt;br /&gt;return $out;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;8.獲取新插入數據的 id&lt;br /&gt;&lt;br /&gt;&lt;?mysql_insert_id();?&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-1340013200139243988?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/1340013200139243988/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=1340013200139243988' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/1340013200139243988'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/1340013200139243988'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2010/04/php-function.html' title='常用的PHP function'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-7929166457518226771</id><published>2010-04-26T22:47:00.000-07:00</published><updated>2010-04-26T22:47:03.541-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jquery'/><category scheme='http://www.blogger.com/atom/ns#' term='css'/><title type='text'>帥氣的輸入框樣式</title><content type='html'>平淡無奇的輸入框，看到膩了嗎?&lt;br /&gt;&lt;br /&gt;嘗試一下&lt;br /&gt;http://buildinternet.com/2009/01/changing-form-input-styles-on-focus-with-jquery/&lt;br /&gt;&lt;br /&gt;DEMO頁面&lt;br /&gt;http://buildinternet.com/live/jqueryform/jqueryform1.php?status=20&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-7929166457518226771?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/7929166457518226771/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=7929166457518226771' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/7929166457518226771'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/7929166457518226771'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2010/04/blog-post_26.html' title='帥氣的輸入框樣式'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-4936925250191376740</id><published>2010-04-26T22:45:00.000-07:00</published><updated>2010-04-26T22:45:21.803-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jquery'/><category scheme='http://www.blogger.com/atom/ns#' term='css'/><title type='text'>透過Jquery及CSS就可以讓你的輸入框，自動對齊。</title><content type='html'>如標題!!&lt;br /&gt;想自動對齊，請服用。&lt;br /&gt;http://www.jankoatwarpspeed.com/post/2008/07/09/Justify-elements-using-jQuery-and-CSS.aspx&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-4936925250191376740?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/4936925250191376740/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=4936925250191376740' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/4936925250191376740'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/4936925250191376740'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2010/04/jquerycss.html' title='透過Jquery及CSS就可以讓你的輸入框，自動對齊。'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-8049580574761976090</id><published>2010-04-26T19:26:00.000-07:00</published><updated>2010-04-26T19:26:47.950-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='plugin'/><category scheme='http://www.blogger.com/atom/ns#' term='jquery'/><title type='text'>jquery 自動完成 autoComplete插件</title><content type='html'>紀錄一下各參數的意思!!&lt;br /&gt;http://ltl3884.javaeye.com/blog/512738&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-8049580574761976090?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/8049580574761976090/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=8049580574761976090' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/8049580574761976090'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/8049580574761976090'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2010/04/jquery-autocomplete.html' title='jquery 自動完成 autoComplete插件'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-786273193768303566</id><published>2010-04-25T18:22:00.000-07:00</published><updated>2010-07-20T20:49:09.354-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ZendFramework'/><category scheme='http://www.blogger.com/atom/ns#' term='input'/><title type='text'>Zend Framework中，View的From組件</title><content type='html'>如PEAR一樣，ZF的View也有好用的From組件&lt;br /&gt;&lt;br /&gt;$this-&amp;gt;formText('date' , '',array('size'=&amp;gt;4))&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;以上就是，建立一個id為Date,&lt;br /&gt;&lt;br /&gt;name也是Date&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;無預設內容，文字長度為4的輸入框。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-786273193768303566?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/786273193768303566/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=786273193768303566' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/786273193768303566'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/786273193768303566'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2010/04/zend-frameworkviewfrom.html' title='Zend Framework中，View的From組件'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-929829904684137263</id><published>2010-04-23T03:50:00.000-07:00</published><updated>2010-04-23T03:50:24.856-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='array'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>檢查數值是否存在於陣列的Key或Value</title><content type='html'>在PHP中常用的in_array是用來檢查&lt;br /&gt;&lt;br /&gt;$array = array("a", "b, "c");&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;in_array("a",$array);&lt;br /&gt;&lt;br /&gt;這樣結果為真，那當你想知道是否在鍵中可以用&lt;br /&gt;&lt;br /&gt;$array = array("a"=&gt;0, "b"=&gt;1, "c"=&gt;0);&lt;br /&gt;&lt;br /&gt;array_key_exists("a", $array)&lt;br /&gt;&lt;br /&gt;結果為真&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-929829904684137263?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/929829904684137263/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=929829904684137263' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/929829904684137263'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/929829904684137263'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2010/04/keyvalue.html' title='檢查數值是否存在於陣列的Key或Value'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-2079126313313749610</id><published>2010-04-20T03:24:00.000-07:00</published><updated>2010-04-20T03:24:20.925-07:00</updated><title type='text'>查詢中文編碼，的資料庫</title><content type='html'>http://www.unicode.org/cgi-bin/GetUnihanData.pl?codepoint=%E6%96%87&lt;br /&gt;&lt;br /&gt;有&lt;br /&gt;Decimal   UTF-8   UTF-16   UTF-32&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-2079126313313749610?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/2079126313313749610/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=2079126313313749610' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/2079126313313749610'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/2079126313313749610'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2010/04/blog-post.html' title='查詢中文編碼，的資料庫'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-7620331768168212999</id><published>2010-04-13T17:51:00.000-07:00</published><updated>2010-04-13T17:51:49.092-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='opencv'/><title type='text'>使用PHP來做人臉辨識</title><content type='html'>透過利用OPENCV來製作人臉辨識的效果&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;http://ithelp.ithome.com.tw/question/10036727&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-7620331768168212999?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/7620331768168212999/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=7620331768168212999' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/7620331768168212999'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/7620331768168212999'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2010/04/php.html' title='使用PHP來做人臉辨識'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-205670891650366054</id><published>2010-04-06T19:20:00.001-07:00</published><updated>2010-04-06T19:20:06.339-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Notepad'/><title type='text'>Notepad++</title><content type='html'>Notepad++&lt;br /&gt;自動完成&lt;br /&gt;&lt;br /&gt;及&lt;br /&gt;&lt;br /&gt;quicktext&lt;br /&gt;&lt;br /&gt;結合!!超強&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-205670891650366054?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/205670891650366054/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=205670891650366054' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/205670891650366054'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/205670891650366054'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2010/04/notepad.html' title='Notepad++'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-1791778371027845232</id><published>2010-04-05T09:51:00.001-07:00</published><updated>2010-04-05T09:54:54.176-07:00</updated><title type='text'>在GAE中寫php</title><content type='html'>介紹&lt;br /&gt;http://www.youtube.com/watch?v=bXZlF-HPSq8&amp;feature=related&lt;br /&gt;&lt;br /&gt;用Google App Engine跑CodeIgniter&lt;br /&gt;&lt;br /&gt;http://fillano.blog.ithome.com.tw/post/257/25696&lt;br /&gt;&lt;br /&gt;在GAE中下SQL語法jiql&lt;br /&gt;&lt;br /&gt;http://www.jiql.org/xwiki/bin/view/Main/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-1791778371027845232?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/1791778371027845232/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=1791778371027845232' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/1791778371027845232'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/1791778371027845232'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2010/04/gaephp.html' title='在GAE中寫php'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-2171401200115734257</id><published>2010-03-13T01:47:00.000-08:00</published><updated>2010-03-13T01:47:11.986-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ZendFramework'/><title type='text'>ZendX的下載點</title><content type='html'>在使用ZendFramework時，有時會用到jquery&lt;br /&gt;&lt;br /&gt;可以透過SVN下載ZendX&lt;br /&gt;&lt;br /&gt;http://framework.zend.com/svn/framework/extras/trunk&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-2171401200115734257?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/2171401200115734257/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=2171401200115734257' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/2171401200115734257'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/2171401200115734257'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2010/03/zendx.html' title='ZendX的下載點'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-7727534969286679937</id><published>2010-03-09T18:54:00.000-08:00</published><updated>2010-03-09T18:54:10.133-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ZendFramework'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>Zend Framework Session</title><content type='html'>ZF的Session可以在全域使用&lt;br /&gt;可用再換頁時的資料傳遞&lt;br /&gt;&lt;br /&gt;$DF = new Zend_Session_Namespace('DF');&lt;br /&gt;&lt;br /&gt;指定&lt;br /&gt;$DF-&gt;contacts = array('A', 'B','C');&lt;br /&gt;&lt;br /&gt;取用&lt;br /&gt;&lt;br /&gt; $contacts = (array) $DF-&gt;contacts;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-7727534969286679937?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/7727534969286679937/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=7727534969286679937' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/7727534969286679937'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/7727534969286679937'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2010/03/zend-framework-session.html' title='Zend Framework Session'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-3374811958264388314</id><published>2010-03-05T00:54:00.001-08:00</published><updated>2010-03-05T00:54:21.095-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jquery'/><title type='text'>jquery自動登入!!抓按鍵事件</title><content type='html'>$(document).keydown(function(e){&lt;br /&gt;  //keyCode為Enter&lt;br /&gt;  if (e.keyCode == 13) {&lt;br /&gt;  $("#form1").submit();&lt;br /&gt;  }&lt;br /&gt;});&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-3374811958264388314?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/3374811958264388314/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=3374811958264388314' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/3374811958264388314'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/3374811958264388314'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2010/03/jquery.html' title='jquery自動登入!!抓按鍵事件'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-641161918453394963</id><published>2010-03-02T22:39:00.000-08:00</published><updated>2010-03-03T18:58:42.717-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ZendFramework'/><title type='text'>Zend-framework設定快取</title><content type='html'>$this-&gt;getResponse()-&gt;setHeader('Expires', '', true);&lt;br /&gt;$this-&gt;getResponse()-&gt;setHeader('Cache-Control', 'public', true);&lt;br /&gt;$this-&gt;getResponse()-&gt;setHeader('Cache-Control', 'max-age=3800');&lt;br /&gt;$this-&gt;getResponse()-&gt;setHeader('Pragma', '', true);&lt;br /&gt;透過重寫ZendFramework的Header可以設定快取&lt;br /&gt;&lt;br /&gt;也可以輸出XML的Header&lt;br /&gt;$this-&gt;getResponse()-&gt;setHeader('Content-Type', 'text/html; charset=UTF-8');&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-641161918453394963?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/641161918453394963/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=641161918453394963' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/641161918453394963'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/641161918453394963'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2010/03/zend-framework.html' title='Zend-framework設定快取'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-5261567253753510451</id><published>2010-02-28T16:35:00.000-08:00</published><updated>2010-02-28T16:35:07.926-08:00</updated><title type='text'>Zend_Auth、Zend_Acl的使用實例（在Action中使用Acl)</title><content type='html'>數據庫表：&lt;br /&gt;&lt;br /&gt;CREATE TABLE `user` (&lt;br /&gt;&lt;br /&gt;`uid` SMALLINT( 5 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,&lt;br /&gt;`username` VARCHAR( 20 ) CHARACTER SET gbk COLLATE gbk_chinese_ci NOT NULL ,&lt;br /&gt;`password` CHAR( 32 ) NOT NULL ,&lt;br /&gt;`role` ENUM( 'user', 'staff', 'admin' ) NOT NULL ,&lt;br /&gt;`truename` VARCHAR( 20 ) CHARACTER SET gbk COLLATE gbk_chinese_ci NOT NULL ,&lt;br /&gt;INDEX ( `role` , `truename` ) ,&lt;br /&gt;UNIQUE (&lt;br /&gt;&lt;br /&gt;`username`&lt;br /&gt;&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;) ENGINE = MYISAM CHARACTER SET gbk COLLATE gbk_chinese_ci COMMENT = '用戶表';&lt;br /&gt;&lt;br /&gt;在數據庫中存儲了一個role字段（枚舉類型），以保存用戶角色信息！&lt;br /&gt;&lt;br /&gt;&lt;?phperror_reporting(E_ALL);require './Zend/Loader.php';function __autoload($class){    Zend_Loader::loadClass($class);}//初始化訪問控制連$acl = new Zend_Acl;$acl-&gt;add(new Zend_Acl_Resource('Default'));&lt;br /&gt;$acl-&gt;add(new Zend_Acl_Resource('News'));&lt;br /&gt;//上面對應我的兩個module，一個Default,一個News&lt;br /&gt;$acl-&gt;addRole(new Zend_Acl_Role('guest'));&lt;br /&gt;$acl-&gt;addRole(new Zend_Acl_Role('user'), 'guest');&lt;br /&gt;$acl-&gt;addRole(new Zend_Acl_Role('staff'), 'user');&lt;br /&gt;$acl-&gt;addRole(new Zend_Acl_Role('admin'));&lt;br /&gt;&lt;br /&gt;$acl-&gt;allow('guest', array('Default', 'News'), 'view');&lt;br /&gt;$acl-&gt;allow('user', array('Default', 'News'), array('reply', 'download'));&lt;br /&gt;$acl-&gt;allow('staff', array('Default', 'News'), array('delete', 'update'));&lt;br /&gt;$acl-&gt;allow('admin');&lt;br /&gt;  &lt;br /&gt;//驗證權限,如果沒有登錄則以遊客身份登錄&lt;br /&gt;$auth = Zend_Auth::getInstance();&lt;br /&gt;if(!$auth-&gt;hasIdentity())&lt;br /&gt;{&lt;br /&gt;     $auth-&gt;getStorage()-&gt;write((object)array('username' =&gt; 'Guest',&lt;br /&gt;                                                'role' =&gt; 'guest',&lt;br /&gt;                                                'truename' =&gt; '遊客'));&lt;br /&gt;}&lt;br /&gt;$router = new Zend_Controller_Router_Rewrite();&lt;br /&gt;//$router-&gt;addRoute('root',new Zend_Controller_Router_Route('/',array('module' =&gt;'News', 'controller' =&gt; 'Index', 'Action' =&gt; 'index'))); 也是給出默認控制器的&lt;br /&gt;$front = Zend_Controller_Front::getInstance()-&gt;setControllerDirectory(array(&lt;br /&gt;                                                                    'default' =&gt; './Default/Controllers',&lt;br /&gt;                                                                    'News' =&gt; './News/Controllers'&lt;br /&gt;                                                                    ))&lt;br /&gt;                                                 -&gt;setRouter($router)&lt;br /&gt;                                                 -&gt;setParam('Zend_Acl', $acl)&lt;br /&gt;                                                 -&gt;setParam('Zend_Auth', $auth)&lt;br /&gt;                                                 -&gt;setBaseUrl('/zf/index.php')&lt;br /&gt;                                                 -&gt;setParam('noViewRenderer', true)&lt;br /&gt;                                                 -&gt;setParam('useDefaultControllerAlways',true)&lt;br /&gt;                                                 -&gt;throwExceptions(true)-&gt;returnResponse(false)&lt;br /&gt;                                                 -&gt;dispatch();&lt;br /&gt;?&gt;&lt;br /&gt;&lt;br /&gt;在Action中使用Zend_Acl(Default模塊中的IndexController，訪問他的downloadAction)：&lt;br /&gt;&lt;br /&gt;&lt;?phpclass IndexController extends Zend_Controller_Action{           public function indexAction()           {        $view = new Zend_View;        $view-&gt;name = '張心靈';&lt;br /&gt;        $view-&gt;title = '測試';&lt;br /&gt;        $view-&gt;setScriptPath('./Default/Views/Index');&lt;br /&gt;        $view-&gt;addScriptPath('./Default/Views');&lt;br /&gt;        $this-&gt;getResponse()-&gt;appendBody($view-&gt;render('Index.phtml'));&lt;br /&gt;           }&lt;br /&gt;           public function downloadAction()&lt;br /&gt;           {&lt;br /&gt;        $acl = $this-&gt;getInvokeArg('Zend_Acl');&lt;br /&gt;               if(!$acl-&gt;isAllowed($this-&gt;getInvokeArg('Zend_Auth')-&gt;getStorage()-&gt;read()-&gt;role, 'Default', 'download')) $this-&gt;getResponse()-&gt;appendBody('訪問不合法');&lt;br /&gt;               else $this-&gt;getResponse()-&gt;appendBody('合法訪問');&lt;br /&gt;           }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;測試地址:http://localhost/zf/index.php/index/download&lt;br /&gt;&lt;br /&gt;當然，據稱更好的辦法是在 preDispatch 方法中控制權限&lt;br /&gt;&lt;br /&gt;測試代碼如下：&lt;br /&gt;&lt;br /&gt;&lt;?phpclass IndexController extends Zend_Controller_Action{       public function preDispatch()       {           if(!$this-&gt;getInvokeArg('Zend_Acl')-&gt;isAllowed($this-&gt;getInvokeArg('Zend_Auth')-&gt;getStorage()-&gt;read()-&gt;role, ucfirst($this-&gt;getRequest()-&gt;getModuleName()),  $this-&gt;getRequest()-&gt;getActionName()))&lt;br /&gt;            $this-&gt;_forward('index', 'user', 'Default');&lt;br /&gt;       }&lt;br /&gt;       public function indexAction()&lt;br /&gt;       {&lt;br /&gt;        $view = new Zend_View;&lt;br /&gt;        $view-&gt;name = '張心靈';&lt;br /&gt;        $view-&gt;title = '測試';&lt;br /&gt;        $view-&gt;setScriptPath('./Default/Views/Index');&lt;br /&gt;        $view-&gt;addScriptPath('./Default/Views');&lt;br /&gt;        $this-&gt;getResponse()-&gt;appendBody($view-&gt;render('Index.phtml'));&lt;br /&gt;       }&lt;br /&gt;       public function downloadAction()&lt;br /&gt;       {&lt;br /&gt;        $acl = $this-&gt;getInvokeArg('Zend_Acl');&lt;br /&gt;           if(!$acl-&gt;isAllowed($this-&gt;getInvokeArg('Zend_Auth')-&gt;getStorage()-&gt;read()-&gt;role, 'Default', 'download')) $this-&gt;getResponse()-&gt;appendBody('訪問不合法');&lt;br /&gt;           else $this-&gt;getResponse()-&gt;appendBody('合法訪問');&lt;br /&gt;       }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;執行結果還是OK的！不過就是感覺在 preDispatch 中控制權限比較呆板啦！&lt;br /&gt;&lt;br /&gt;運行的Perfect!(感謝CCTV、感謝Channal V................)&lt;br /&gt;&lt;br /&gt;很簡單的是，您可以將 訪問不合法那句 改為 _froward 等等，讓用戶登錄就行了，看起來Zend Framework使用還是蠻方便的（除了Zend_XmlRpc，那麼大個Bug，居然這麼就了都沒修復)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-5261567253753510451?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/5261567253753510451/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=5261567253753510451' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/5261567253753510451'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/5261567253753510451'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2010/02/zendauthzendaclactionacl.html' title='Zend_Auth、Zend_Acl的使用實例（在Action中使用Acl)'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-7676321633890094661</id><published>2010-02-24T20:03:00.000-08:00</published><updated>2010-02-24T20:03:08.971-08:00</updated><title type='text'>圖片縮圖的好用物件</title><content type='html'>裡面封裝有：&lt;br /&gt;1、上傳圖片功能&lt;br /&gt;2、按指定大小（單位PX）生成縮略圖&lt;br /&gt;3、按指定百分比（原圖百分比）生成縮略圖&lt;br /&gt;4、自動水印功能，包括文字水印和圖片水印。&lt;br /&gt;5、外圍封裝了調用接口，一條語句實現圖片從上傳&gt;&gt;生成縮略圖&gt;&gt;打上水印三部曲。&lt;br /&gt;6、自動識別，當圖片少於多少時不生成縮略圖。&lt;br /&gt;7、自動識別，當圖片小於多少時，不打水印。&lt;br /&gt;8、外圍封裝接口，可以直接調用子功能（上傳、縮略圖、水印）&lt;br /&gt;&lt;br /&gt;調用方法：&lt;br /&gt;&lt;?php//設置網站根目錄define('MK_ROOT', 'tmp/image');//設置網站圖片根目錄define('MK_IMGDIR', 'tmp/image');//程序執行完返回的提示頁路徑$_MK['reff'] = 'index.php';//調用圖片類include 'image.inc.php';//類實例化$img = new mk_img;//調用，返回$file_info 是一個數組，裡面有圖片的各種信息。$file_info = $img-&gt;autoimg(表單中NAME名稱,圖片根目錄下的子目錄名,文件最大上傳大小, 縮略圖寬, 縮略圖高);&lt;br /&gt;//完成，後續處理，將圖片資訊存放數據庫&lt;br /&gt;?&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;image.inc.php&lt;br /&gt;&lt;?phpif(!defined('IN_MK')) {        exit('Access Denied');}class mk_img{        var $new_width = 160;        var $new_height = 120;        var $img_info;        var $imgdir_s = 'aaa';        var $func;        var $base_name ;        function get_name(){                $this-&gt;base_name = $this-&gt;base_name ? $this-&gt;base_name : './'.time().'_'.random(6);&lt;br /&gt;                return $this-&gt;base_name;&lt;br /&gt;        }&lt;br /&gt;        function get_info($old_img){&lt;br /&gt;                if (is_file($old_img)){&lt;br /&gt;                        $this-&gt;img_info = GetImageSize($old_img);&lt;br /&gt;                        if ($this-&gt;img_info['2'] == 2){&lt;br /&gt;                                $this-&gt;func['create'] = 'imagecreatefromjpeg';&lt;br /&gt;                                $this-&gt;func['copy'] = 'imagejpeg';&lt;br /&gt;                                $this-&gt;img_info['extension'] = 'jpg';&lt;br /&gt;                        }elseif ($this-&gt;img_info['2'] == 1){&lt;br /&gt;                                $this-&gt;func['create'] = 'imagecreatefromgif';&lt;br /&gt;                                $this-&gt;func['copy'] = 'imagegif';&lt;br /&gt;                                $this-&gt;img_info['extension'] = 'gif';&lt;br /&gt;                        }elseif ($this-&gt;img_info['2'] == 3){&lt;br /&gt;                                $this-&gt;func['create'] = 'imagecreatefrompng';&lt;br /&gt;                                $this-&gt;func['copy'] = 'imagepng';&lt;br /&gt;                                $this-&gt;img_info['extension'] = 'png';&lt;br /&gt;                        }else{&lt;br /&gt;                                $this-&gt;error('not image file');&lt;br /&gt;                        }&lt;br /&gt;                }else{&lt;br /&gt;                        $this-&gt;error('file no find');&lt;br /&gt;                }&lt;br /&gt;                &lt;br /&gt;        }&lt;br /&gt;        function thumb_per($img_url, $img_dir='./together/0/', $in_percent=0.35,$obj_filename=''){&lt;br /&gt;                $in_percent = ($in_percent&gt;1 || $in_percent&lt;=0) ? 0.35 : $in_percent ;                $this-&gt;get_info($img_url);&lt;br /&gt;                if ($in_percent != 0){&lt;br /&gt;                        $this-&gt;new_width = ceil($this-&gt;img_info['0'] * $in_percent);&lt;br /&gt;                        $this-&gt;new_height = ceil($this-&gt;img_info['1'] * $in_percent);&lt;br /&gt;                }else{&lt;br /&gt;                        $this-&gt;new_width = ceil($this-&gt;img_info['0']);&lt;br /&gt;                        $this-&gt;new_height = ceil($this-&gt;img_info['1']);&lt;br /&gt;                }&lt;br /&gt;                if ($obj_filename!=''){&lt;br /&gt;                        $this-&gt;new_thumb_name = $obj_filename;&lt;br /&gt;                }&lt;br /&gt;                $this-&gt;create_sub($img_url,$img_dir);&lt;br /&gt;                return $this-&gt;file_dir.$this-&gt;base_name.'.'.$this-&gt;img_info['extension'];&lt;br /&gt;        }&lt;br /&gt;        function thumb_abs($img_url, $img_dir='./together/0/', $new_width=120, $new_height=120,$obj_filename=''){&lt;br /&gt;                $this-&gt;get_info($img_url);&lt;br /&gt;                $this-&gt;new_width = ceil(abs($new_width))&gt;1 ? ceil(abs($new_width)) : $this-&gt;new_width ;&lt;br /&gt;                $this-&gt;new_height = ceil(abs($new_height))&gt;1 ? ceil(abs($new_height)) : $this-&gt;new_height;&lt;br /&gt;                if (($this-&gt;new_width &gt; $this-&gt;img_info['0']) &amp;&amp; ($this-&gt;new_height &gt; $this-&gt;img_info['1'])){&lt;br /&gt;                        $this-&gt;new_width = $this-&gt;img_info['0'];&lt;br /&gt;                        $this-&gt;new_height = $this-&gt;img_info['1'];&lt;br /&gt;                }else{&lt;br /&gt;                        if ($this-&gt;new_width &amp;&amp; ($this-&gt;img_info['0'] &lt; $this-&gt;img_info['1'])) {&lt;br /&gt;                                $this-&gt;new_width = ($this-&gt;new_height / $this-&gt;img_info['1']) * $this-&gt;img_info['0'];&lt;br /&gt;                        } else {&lt;br /&gt;                                $this-&gt;new_height = ($this-&gt;new_width / $this-&gt;img_info['0']) * $this-&gt;img_info['1'];&lt;br /&gt;                        }&lt;br /&gt;                }&lt;br /&gt;                if ($obj_filename!=''){&lt;br /&gt;                        $this-&gt;new_thumb_name = $obj_filename;&lt;br /&gt;                }&lt;br /&gt;                $this-&gt;create_sub($img_url,$img_dir);&lt;br /&gt;                return $this-&gt;file_dir.$this-&gt;base_name.'.'.$this-&gt;img_info['extension'];&lt;br /&gt;        }&lt;br /&gt;        //子創建&lt;br /&gt;        function create_sub($img_url,$img_dir){&lt;br /&gt;                $image_o = $this-&gt;func['create']($img_url);&lt;br /&gt;                if(function_exists("imagecopyresampled")){&lt;br /&gt;                        $image_n = imagecreatetruecolor($this-&gt;new_width, $this-&gt;new_height);&lt;br /&gt;                        imagecopyresampled($image_n, $image_o, 0, 0, 0, 0, $this-&gt;new_width, $this-&gt;new_height, $this-&gt;img_info['0'], $this-&gt;img_info['1']) ;&lt;br /&gt;                }else{&lt;br /&gt;                        $image_n = imagecreate($this-&gt;new_width, $this-&gt;new_height);&lt;br /&gt;                        imagecopyresized($image_n, $image_o, 0, 0, 0, 0, $this-&gt;new_width, $this-&gt;new_height, $this-&gt;img_info['0'], $this-&gt;img_info['1']) ;&lt;br /&gt;                }&lt;br /&gt;                $this-&gt;file_dir = $this-&gt;file_dir ? $this-&gt;file_dir : $img_dir;&lt;br /&gt;                $this-&gt;new_thumb_name = (!empty($this-&gt;new_thumb_name)) ? $this-&gt;new_thumb_name : $this-&gt;get_name().'_s.'.$this-&gt;img_info['extension'] ;&lt;br /&gt;                        $this-&gt;func['copy']($image_n,$this-&gt;file_dir.$this-&gt;new_thumb_name);&lt;br /&gt;                imagedestroy($image_n);&lt;br /&gt;                return true;&lt;br /&gt;        }&lt;br /&gt;        function upload($attach_value,$attach_dir='',$attach_size='1024000'){&lt;br /&gt;                global $_FILES;&lt;br /&gt;                if(COUNT($_FILES)==0){&lt;br /&gt;                        $this-&gt;error('no files');&lt;br /&gt;                }&lt;br /&gt;                $this-&gt;file_error = $_FILES[$attach_value]['error'];&lt;br /&gt;                if ($this-&gt;file_error != 0){&lt;br /&gt;                        $this-&gt;error('upload error');&lt;br /&gt;                }&lt;br /&gt;                $this-&gt;file_name = $_FILES[$attach_value]['name'];&lt;br /&gt;                $this-&gt;file_type = $_FILES[$attach_value]['type'];&lt;br /&gt;                $this-&gt;file_size = $_FILES[$attach_value]['size'];&lt;br /&gt;                $this-&gt;file_tmpname = $_FILES[$attach_value]['tmp_name'];&lt;br /&gt;                $this-&gt;get_info($this-&gt;file_tmpname);&lt;br /&gt;&lt;br /&gt;                if($attach_size &amp;&amp; $this-&gt;file_size &gt; $attach_size) {&lt;br /&gt;                        $this-&gt;error('max size:'.$this-&gt;file_size);&lt;br /&gt;                }&lt;br /&gt;                if(!is_dir(MK_IMGROOT.$attach_dir)) {&lt;br /&gt;                        mkdir(MK_IMGROOT.$attach_dir, 0777);&lt;br /&gt;                }&lt;br /&gt;                $this-&gt;file_dir = MK_IMGROOT.$attach_dir;&lt;br /&gt;                $this-&gt;file_newname = $attach_dir.'/'.$this-&gt;get_name().'.'.$this-&gt;img_info['extension'];&lt;br /&gt;                $this-&gt;file_thumbname = $attach_dir.'/'.$this-&gt;get_name().'_s.'.$this-&gt;img_info['extension'];&lt;br /&gt;                $this-&gt;file_dirname = MK_IMGROOT.$this-&gt;file_newname;&lt;br /&gt;&lt;br /&gt;                if(function_exists('move_uploaded_file')) {&lt;br /&gt;                        if(@move_uploaded_file($this-&gt;file_tmpname, $this-&gt;file_dirname)) {&lt;br /&gt;                                $attach_saved = true;&lt;br /&gt;                        }&lt;br /&gt;                } elseif(@copy($this-&gt;file_tmpname, $this-&gt;file_dirname)) {&lt;br /&gt;                        $attach_saved = true;&lt;br /&gt;                }&lt;br /&gt;                $return_data = '';&lt;br /&gt;                if ($attach_saved){&lt;br /&gt;                        $return_data = array('name'=&gt;$this-&gt;file_newname , 'size'=&gt;$this-&gt;file_size , 'type'=&gt;$this-&gt;file_type, 'ext'=&gt;$this-&gt;img_info[' extension'], 'imgdir'=&gt;$this-&gt;file_dirname, 'thumb'=&gt;$this-&gt;file_thumbname, 'width'=&gt;$this-&gt;img_info['0'], 'height'=&gt;$this- &gt;img_info['1']);&lt;br /&gt;                        &lt;br /&gt;                }&lt;br /&gt;                return $return_data;&lt;br /&gt;        }&lt;br /&gt;        function watermark_img($img_url){&lt;br /&gt;                        if (is_readable(MK_IMGROOT.'./watermark.png')){&lt;br /&gt;                                $watermark_file = MK_IMGROOT.'./watermark.png';&lt;br /&gt;                                $image_w = imagecreatefrompng($watermark_file);&lt;br /&gt;                        }else{&lt;br /&gt;                                $watermark_file = MK_IMGROOT.'./watermark.gif';&lt;br /&gt;                                $image_w = imagecreatefromgif($watermark_file);&lt;br /&gt;                        }&lt;br /&gt;                $this-&gt;get_info($watermark_file);&lt;br /&gt;                $watermark_width = $this-&gt;img_info['0'];&lt;br /&gt;                $watermark_height = $this-&gt;img_info['1'];&lt;br /&gt;                $this-&gt;get_info($img_url);&lt;br /&gt;                if ($this-&gt;img_info['2'] &lt;= 3){                        $image_o = $this-&gt;func['create']($img_url);&lt;br /&gt;                        if (function_exists("imagecreatetruecolor")){&lt;br /&gt;                                $image_n = imagecreatetruecolor($this-&gt;img_info['0'], $this-&gt;img_info['1']);&lt;br /&gt;                        }else{&lt;br /&gt;                                $image_n = imagecreate($this-&gt;img_info['0'], $this-&gt;img_info['1']);&lt;br /&gt;                        }&lt;br /&gt;                        imageCopy($image_n, $image_o, 0, 0, 0, 0, $this-&gt;img_info['0'], $this-&gt;img_info['1']);&lt;br /&gt;                        unset($watermark_file);&lt;br /&gt;                        $watermark_x = $this-&gt;img_info['0'] - $watermark_width;&lt;br /&gt;                        $watermark_y = $this-&gt;img_info['1'] - $watermark_height;&lt;br /&gt;                        imageCopy($image_n, $image_w, $watermark_x, $watermark_y, 0, 0, $watermark_width, $watermark_height);&lt;br /&gt;&lt;br /&gt;                        $this-&gt;func['copy']($image_n,$img_url);&lt;br /&gt;                        imagedestroy($image_n);&lt;br /&gt;                }else{&lt;br /&gt;                        return false;&lt;br /&gt;                }&lt;br /&gt;        }&lt;br /&gt;        function watermark_text($img_url,$text_message='www.7ego.cn'){&lt;br /&gt;                $this-&gt;get_info($img_url);&lt;br /&gt;                if ($this-&gt;img_info['2'] &lt;= 3){                        $image_o = $this-&gt;func['create']($img_url);&lt;br /&gt;                        if (function_exists("imagecreatetruecolor")){&lt;br /&gt;                                $image_n = imagecreatetruecolor($this-&gt;img_info['0'], $this-&gt;img_info['1']);&lt;br /&gt;                        }else{&lt;br /&gt;                                $image_n = imagecreate($this-&gt;img_info['0'], $this-&gt;img_info['1']);&lt;br /&gt;                        }&lt;br /&gt;                        imageCopy($image_n, $image_o, 0, 0, 0, 0, $this-&gt;img_info['0'], $this-&gt;img_info['1']);&lt;br /&gt;                        $text_font = MK_ROOT.'en.fon';&lt;br /&gt;                        $text_color = imagecolorallocate($image_n, 0, 0, 0);&lt;br /&gt;                        $text_bgcolor = imagecolorallocate($image_n, 150, 150, 150);&lt;br /&gt;                        $bg_color = imagecolorallocate($image_n, 250, 250, 200);&lt;br /&gt;                        $text_width = imagefontwidth($text_message)*(strlen($text_message)-1)*2;&lt;br /&gt;                        $text_height = imagefontheight($text_message)*2;&lt;br /&gt;                        imagefilledrectangle($image_n, 2, 0, $text_width, $text_height, $bg_color);&lt;br /&gt;                        @imagettftext($image_n, 2, 0, 11, 11, $text_bgcolor, $text_font, $text_message);&lt;br /&gt;                        imagettftext($image_n, 2, 0, 10, 10, $text_color, $text_font, $text_message);&lt;br /&gt;                        $this-&gt;func['copy']($image_n,$img_url);&lt;br /&gt;                        imagedestroy($image_n);&lt;br /&gt;                }&lt;br /&gt;        }&lt;br /&gt;        function autoimg($attach_value,$attach_dir='',$attach_size='1024000', $new_width=120, $new_height=120){&lt;br /&gt;                $imgreturn = $this-&gt;upload($attach_value,$attach_dir,$attach_size);&lt;br /&gt;                //if ($imgreturn['width']&gt;800){&lt;br /&gt;                // $this-&gt;thumb_abs($imgreturn['imgdir'], $this-&gt;file_dir, 640, 480,$imgreturn['imgdir']);&lt;br /&gt;                //}&lt;br /&gt;                $this-&gt;thumb_abs($imgreturn['imgdir'], $this-&gt;file_dir, $new_width, $new_height);&lt;br /&gt;                if ($imgreturn['width']&gt;160 OR $imgreturn['height']&gt;160){&lt;br /&gt;                        $this-&gt;watermark_img($imgreturn['imgdir']);&lt;br /&gt;                        $this-&gt;watermark_text($imgreturn['imgdir'],'www.7ego.cn');&lt;br /&gt;                }&lt;br /&gt;                return $imgreturn;&lt;br /&gt;        }&lt;br /&gt;        function error($msg){&lt;br /&gt;                global $_MK;&lt;br /&gt;                showmessage($msg,$_MK['reff']);&lt;br /&gt;                function_exists('mexit') ? mexit() : exit();&lt;br /&gt;        }&lt;br /&gt;}&lt;br /&gt;?&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-7676321633890094661?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/7676321633890094661/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=7676321633890094661' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/7676321633890094661'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/7676321633890094661'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2010/02/blog-post.html' title='圖片縮圖的好用物件'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-155212614451446645</id><published>2010-02-24T19:58:00.001-08:00</published><updated>2010-02-24T19:58:09.266-08:00</updated><title type='text'>PHP生成靜態網頁</title><content type='html'>最近研究PHP的一些開發技術，發現PHP有很多ASP所沒有的優秀功能，可以完成一些以前無法完成的功能，例如動態生成HTML靜態頁面，以減少服務器CPU的負載，提高用戶訪問的速度。&lt;br /&gt;&lt;br /&gt;我們知道，PHP讀取MYSQL動態顯示，在訪問量大的情況下，會有很多性能問題，如果租用別人的虛擬主機，則會因為CPU消耗過多而被限制CPU，導致網頁無法訪問。我這裡給出一個PHP動態生成HTML的方法，可以極大降低服務器CPU負荷。&lt;br /&gt;&lt;br /&gt;首先設置.htaccess文件，將動態調用的參數轉換為靜態的HTML的URL地址，例如將在post目錄下的文件，轉發到根目錄的wp- post.php文件中，加入的語句類似：RewriteRule ^post /([a-z0-9\-]+\.html)$ wp- post.php?$1$2&lt;br /&gt;&lt;br /&gt;然後修改wp-post.php文件，在文件的開頭加入以下PHP代碼：&lt;br /&gt;ob_start();&lt;br /&gt;$qstring = isset($_SERVER["QUERY_STRING"]) ? $_SERVER["QUERY_STRING"] : "";&lt;br /&gt;define("HTML_FILE", $_SERVER['DOCUMENT_ROOT']."/post/".$qstring);&lt;br /&gt;if (file_exists(HTML_FILE))&lt;br /&gt;{&lt;br /&gt; $lcft = filemtime(HTML_FILE);&lt;br /&gt; if (($lcft + 3600) &gt; time()) //判斷上次生成HTML文件是否超過1小時，若沒有才直接輸出文件內容&lt;br /&gt; {&lt;br /&gt;  echo(file_get_contents(HTML_FILE));&lt;br /&gt;  exit(0);&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;之後是現有的PHP的代碼，然後在當前代碼的最後面加上如下的PHP代碼：&lt;br /&gt;define("HTMLMETA","&lt;!-- this is a real static html file created at ".date("Ymd H:i:s")." --&gt;");&lt;br /&gt;$buffer = ob_get_flush();&lt;br /&gt;$fp = fopen(HTML_FILE, "w");&lt;br /&gt;if ($fp)&lt;br /&gt;{&lt;br /&gt; fwrite($fp, $buffer.HTMLMETA);&lt;br /&gt; fclose($fp);&lt;br /&gt;}&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;好了，然後查看你的靜態HTML頁面，如果頁面尾部出現了註釋行，說明已經成功的創建了靜態HTML文件。&lt;br /&gt;&lt;br /&gt;這個方法的一個應用就是我先前寫的那個“WordPress年度博客統計插件”，這個統計插件由於查詢十多次數據庫，很多人訪問的時候會有很大性能問題，使用我介紹的這種動態生成HTML技術後，一天就查詢一次，生成一次統計排行，完美解決了查詢數據庫的性能問題。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-155212614451446645?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/155212614451446645/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=155212614451446645' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/155212614451446645'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/155212614451446645'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2010/02/php.html' title='PHP生成靜態網頁'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-3076351185394451194</id><published>2010-02-24T19:55:00.001-08:00</published><updated>2010-02-24T19:55:53.556-08:00</updated><title type='text'>MySQL的隨機數、MySQ隨機選取數據、MySQ隨機查詢數據、MySQ隨機更新數據</title><content type='html'>本文實現了MySQL的隨機數、MySQ隨機選取數據、MySQ隨機查詢數據、MySQ隨機更新數據。&lt;br /&gt;&lt;br /&gt;MySQ隨機查詢數據&lt;br /&gt;&lt;br /&gt;以前在群裡討論過這個問題，比較的有意思。 mysql的語法真好玩。他們原來都想用PHP的實現隨機，但取出多條好像要進行兩次以上查詢。翻了手冊，找到了下面這個語句，可以完成任務了：&lt;br /&gt;SELECT * FROM table_name ORDER BY rand() LIMIT 5;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;MySQL的rand()函數在手冊裡是這麼說的：&lt;br /&gt;RAND()&lt;br /&gt;RAND(N)&lt;br /&gt;返回在範圍0到1.0內的隨機浮點值。如果一個整數參數N被指定，它被用作種子值。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;關於MySQL的rand()函數的效率問題，大家可以參考《MySQL Order By Rand()效率》：http://www.phpq.net/mysql/mysql-order-by-rand.html。&lt;br /&gt;&lt;br /&gt;實際效果：&lt;br /&gt;&gt; select RAND();&lt;br /&gt;-&gt; 0.5925&lt;br /&gt;mysql&gt; select RAND(20);&lt;br /&gt;-&gt; 0.1811&lt;br /&gt;mysql&gt; select RAND(20);&lt;br /&gt;-&gt; 0.1811&lt;br /&gt;mysql&gt; select RAND();&lt;br /&gt;-&gt; 0.2079&lt;br /&gt;mysql&gt; select RAND();&lt;br /&gt;-&gt; 0.7888&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;MySQ隨機更新數據&lt;br /&gt;&lt;br /&gt;如何寫一個語句能一下更新幾百條MYSQL數據?&lt;br /&gt;&lt;br /&gt;需要測試的MYSQL數據庫裡面有一個上萬條數據的數據庫，如何寫一個PHP文件一下每次更新幾百條信息？我都是寫一個循環一次更新一條信息，這樣我知道用WHILE寫就可以了，要是一次更新好比100條數據改如何寫呢？&lt;br /&gt;&lt;br /&gt;正確答案：&lt;br /&gt;UPDATE cdb_posts SET views = rand();&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;其實在insert命令中，value()裡面用rand()，注意字段寬度是否夠，一直以為mysql隨機查詢幾條數據，就用下面的語句就可以了：&lt;br /&gt;SELECT * FROM `table` ORDER BY RAND() LIMIT 5&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-3076351185394451194?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/3076351185394451194/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=3076351185394451194' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/3076351185394451194'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/3076351185394451194'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2010/02/mysqlmysqmysqmysq.html' title='MySQL的隨機數、MySQ隨機選取數據、MySQ隨機查詢數據、MySQ隨機更新數據'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-8186890054934138780</id><published>2010-02-19T20:48:00.001-08:00</published><updated>2010-02-19T20:48:45.887-08:00</updated><title type='text'>Ubuntu中安裝LAMP</title><content type='html'>安裝Apache2&lt;br /&gt;&lt;br /&gt;sudo apt-get install apache2&lt;br /&gt;&lt;br /&gt;安裝MySQL&lt;br /&gt;sudo apt-get install mysql-server libmysqlclient15-dev&lt;br /&gt;&lt;br /&gt;安裝PHP&lt;br /&gt;sudo apt-get install php5 php5-common libapache2-mod-php5 php5-gd php5-dev curl libcurl3 libcurl3-dev php5-curl&lt;br /&gt;&lt;br /&gt;安裝phpmyadmin&lt;br /&gt;sudo aptitude install phpmyadmin&lt;br /&gt;&lt;br /&gt;安裝SSL&lt;br /&gt;sudo apache2-ssl-certificate&lt;br /&gt;&lt;br /&gt;sudo a2enmod ssl&lt;br /&gt;&lt;br /&gt;echo "Listen 443" | sudo tee -a /etc/apache2/ports.conf&lt;br /&gt;&lt;br /&gt;sudo ln -s /etc/apache2/sites-available/ssl /etc/apache2/sites-enabled/ssl&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/ssl&lt;br /&gt;&lt;br /&gt;sudo gedit /etc/apache2/sites-available/ssl&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;設定443port的網站&lt;br /&gt;&lt;br /&gt;NameVirtualHost *:443&lt;br /&gt;&lt;br /&gt;&lt;virtualhost *:443&gt;&lt;br /&gt;        ServerAdmin webmaster@localhost&lt;br /&gt;&lt;br /&gt;        SSLEngine On&lt;br /&gt;        SSLCertificateFile /etc/apache2/ssl/apache.pem&lt;br /&gt;&lt;br /&gt;        DocumentRoot /var/www/&lt;br /&gt;        &lt;directory /&gt;&lt;br /&gt;                Options FollowSymLinks&lt;br /&gt;                AllowOverride None&lt;br /&gt;        &lt;/directory&gt;&lt;br /&gt;&lt;br /&gt;        &lt;directory /var/www/&gt;&lt;br /&gt;                Options Indexes FollowSymLinks MultiViews&lt;br /&gt;                AllowOverride None&lt;br /&gt;                Order allow,deny&lt;br /&gt;                allow from all&lt;br /&gt;                # This directive allows us to have apache2's default start page&lt;br /&gt;                # in /apache2-default/, but still have / go to the right place&lt;br /&gt;                # Commented out for Ubuntu&lt;br /&gt;                #RedirectMatch ^/$ /apache2-default/&lt;br /&gt;        &lt;/directory&gt;&lt;br /&gt;&lt;br /&gt;        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/&lt;br /&gt;        &lt;directory "/usr/lib/cgi-bin"&gt;&lt;br /&gt;                AllowOverride None&lt;br /&gt;                Options ExecCGI -MultiViews +SymLinksIfOwnerMatch&lt;br /&gt;                Order allow,deny&lt;br /&gt;                Allow from all&lt;br /&gt;        &lt;/directory&gt;&lt;br /&gt;&lt;br /&gt;        ErrorLog /var/log/apache2/error.log&lt;br /&gt;&lt;br /&gt;        # Possible values include: debug, info, notice, warn, error, crit,&lt;br /&gt;        # alert, emerg.&lt;br /&gt;        LogLevel warn&lt;br /&gt;&lt;br /&gt;        CustomLog /var/log/apache2/access.log combined&lt;br /&gt;        ServerSignature On&lt;br /&gt;&lt;br /&gt;    Alias /doc/ "/usr/share/doc/"&lt;br /&gt;    &lt;directory "/usr/share/doc/"&gt;&lt;br /&gt;        Options Indexes MultiViews FollowSymLinks&lt;br /&gt;        AllowOverride None&lt;br /&gt;        Order deny,allow&lt;br /&gt;        Deny from all&lt;br /&gt;        Allow from 127.0.0.0/255.0.0.0 ::1/128&lt;br /&gt;    &lt;/directory&gt;&lt;br /&gt;&lt;br /&gt;&lt;/virtualhost&gt;&lt;br /&gt;&lt;br /&gt;安裝apache的模組&lt;br /&gt;&lt;br /&gt;sudo a2enmod rewrite&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;設定Apche轉送&lt;br /&gt;&lt;br /&gt;sudo gedit /etc/apache2/sites-available/default&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;AllowOverride All&lt;br /&gt;&lt;br /&gt;重啟Apache2&lt;br /&gt;&lt;br /&gt;sudo apache2 -k restart&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;PS要安裝php-pear要先有phpize 所以要先安裝php5-dev&lt;br /&gt;&lt;br /&gt;sudo apt-get install php5-dev&lt;br /&gt;&lt;br /&gt;sudo apt-get install php-pear&lt;br /&gt;&lt;br /&gt;sudo pecl install pdo&lt;br /&gt;&lt;br /&gt;sudo pecl install pdo_mysql&lt;br /&gt;&lt;br /&gt;如果有錯誤必須先安裝&lt;br /&gt;ERROR: `/tmp/tmpRiQ5ax/PDO_MYSQL-1.0.2/configure' failed&lt;br /&gt;&lt;br /&gt;先裝好mysql的lib,再試著安裝pdo_mysql&lt;br /&gt;sudo apt-get install libmysqlclient15-dev&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;接下來修改php.ini檔&lt;br /&gt;&lt;br /&gt;sudo gedit /etc/php5/apache2/php.ini&lt;br /&gt;&lt;br /&gt;sudo vim /etc/php5/apache2/php.ini&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-8186890054934138780?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/8186890054934138780/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=8186890054934138780' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/8186890054934138780'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/8186890054934138780'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2010/02/ubuntulamp.html' title='Ubuntu中安裝LAMP'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-8969756033622313686</id><published>2010-02-11T22:58:00.000-08:00</published><updated>2010-02-11T22:58:44.756-08:00</updated><title type='text'>用PHP來做Cluster的FILE</title><content type='html'>http://code.google.com/p/finefs/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-8969756033622313686?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/8969756033622313686/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=8969756033622313686' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/8969756033622313686'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/8969756033622313686'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2010/02/phpclusterfile.html' title='用PHP來做Cluster的FILE'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-749937583903579340</id><published>2010-02-04T22:27:00.000-08:00</published><updated>2010-02-04T22:27:12.960-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ZendFramework'/><title type='text'>ZendFrameWork 下載檔案</title><content type='html'>關閉layout&lt;br /&gt;&lt;br /&gt; $this-&gt;blankPage();&lt;br /&gt;header("Content-type: application/vnd.ms-excel");&lt;br /&gt; header("Content-disposition: csv" . date("Y-m-d") . ".csv");&lt;br /&gt;header("Content-disposition: filename=" . $filename . ".csv");&lt;br /&gt;print $contactsHeader . "\r\n" . $csv_output;exit;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-749937583903579340?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/749937583903579340/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=749937583903579340' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/749937583903579340'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/749937583903579340'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2010/02/zendframework_04.html' title='ZendFrameWork 下載檔案'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-4742370183927506934</id><published>2010-02-04T22:00:00.001-08:00</published><updated>2011-03-08T22:46:26.904-08:00</updated><title type='text'>ZendFramework 代碼片段</title><content type='html'>config.ini 文件&lt;br /&gt;[general]&lt;br /&gt;db.adapter = PDO_MYSQL&lt;br /&gt;db.config.host = localhost&lt;br /&gt;db.config.username = root&lt;br /&gt;db.config.password =&lt;br /&gt;db.config.dbname = zftest&lt;br /&gt;&lt;br /&gt;$config=new Zend_Config_Ini('./config/config.ini','general');&lt;br /&gt;//zend_config_ini加載配置文件用&lt;br /&gt;$db=Zend_Db::factory($config-&amp;gt;db-&amp;gt;adapter,&lt;br /&gt;$config-&amp;gt;db-&amp;gt;config-&amp;gt;toArray());&lt;br /&gt;Zend_Db::factory("資料庫的類型","把config文件中的内容换成陣列")&lt;br /&gt;&lt;br /&gt;防止資料庫攻擊方法：&lt;br /&gt;1、$value=$db-&amp;gt;quote('ADFA'DF');&lt;br /&gt;quote自動為單引號行過濾加上雙引号&lt;br /&gt;2、quoteInto()&lt;br /&gt;$value=$db-&amp;gt;quoteInto（）；&lt;br /&gt;多筆查詢&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="php" style="font-family: monospace;"&gt;&lt;span style="color: #000088;"&gt;$&lt;/span&gt;&lt;span style="color: #339933;"&gt;&lt;/span&gt;db&lt;span style="color: #339933;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #004000;"&gt;quoteInto&lt;/span&gt;&lt;span style="color: #009900;"&gt;(&lt;/span&gt;&lt;span style="color: blue;"&gt;'(a =? AND '&lt;/span&gt;&lt;span style="color: #339933;"&gt;,&lt;/span&gt; &lt;span style="color: #000088;"&gt;$a&lt;/span&gt;&lt;span style="color: #009900;"&gt;)&lt;/span&gt; &lt;span style="color: #339933;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #000088;"&gt;$&lt;/span&gt;&lt;span style="color: #339933;"&gt;&lt;/span&gt;db&lt;span style="color: #339933;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #004000;"&gt;quoteInfo&lt;/span&gt;&lt;span style="color: #009900;"&gt;(&lt;/span&gt;&lt;span style="color: blue;"&gt;'b = &amp;gt;)'&lt;/span&gt;&lt;span style="color: #339933;"&gt;,&lt;/span&gt; &lt;span style="color: #000088;"&gt;$b&lt;/span&gt;&lt;span style="color: #009900;"&gt;)&lt;/span&gt; &lt;span style="color: #339933;"&gt;.&lt;/span&gt; &lt;br /&gt;&lt;span style="color: #000088;"&gt;$db&lt;/span&gt;&lt;span style="color: #339933;"&gt;&lt;/span&gt;&lt;span style="color: #339933;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #004000;"&gt;quoteInfo&lt;/span&gt;&lt;span style="color: #009900;"&gt;(&lt;/span&gt;&lt;span style="color: blue;"&gt;' OR ( c != ?)'&lt;/span&gt;&lt;span style="color: #339933;"&gt;,&lt;/span&gt; &lt;span style="color: #000088;"&gt;$c&lt;/span&gt;&lt;span style="color: #009900;"&gt;)&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;3、直接查询&lt;br /&gt;$sql=$db-&amp;gt;quoteInto('select * from example where date&amp;gt;?','2006-01-01');&lt;br /&gt;$result=$db-&amp;gt;query($sql);&lt;br /&gt;$rows=$result-&amp;gt;fetchAll();&lt;br /&gt;4、或者使用占位符号：placeholder   如：&lt;br /&gt;$result=$db-&amp;gt;query('select * from exaple where date&amp;gt;:placeholder',&lt;br /&gt;array('placeholder'=&amp;gt;'2006-01-01')&lt;br /&gt;$rows=$result-&amp;gt;fetchAll();&lt;br /&gt;5、prepare()方法绑定&lt;br /&gt;$stmt=$db-&amp;gt;prepare('select * from example where date&amp;gt;:placeholder');&lt;br /&gt;$stmt-&amp;gt;bindvalue('placeholder','2006-01-01');&lt;br /&gt;$stmt-&amp;gt;execute();&lt;br /&gt;$rows=$stmt-&amp;gt;fetchAll();&lt;br /&gt;6、交易處理&lt;br /&gt;$db-&amp;gt;beginTransaction();&lt;br /&gt;try{&lt;br /&gt;$db-&amp;gt;query(...);&lt;br /&gt;$db-&amp;gt;commit();&lt;br /&gt;}catch(Exception $e){&lt;br /&gt;$db-&amp;gt;rollback();&lt;br /&gt;echo $d-&amp;gt;getMessage();&lt;br /&gt;}&lt;br /&gt;7、插入數據行&lt;br /&gt;$row=array('title'=&amp;gt;'king','name'=&amp;gt;'baobao',color=&amp;gt;'blue');&lt;br /&gt;$table='uer_table';&lt;br /&gt;$rows_affected=$db-&amp;gt;insert($table,$row);&lt;br /&gt;$last_insert_id=$db-&amp;gt;lastInsertId();&lt;br /&gt;8、更新數據行&lt;br /&gt;$set=array('name'=&amp;gt;'lailai')&lt;br /&gt;$table='user_table'//更新的数据表&lt;br /&gt;//where語法&lt;br /&gt;$where=$db-&amp;gt;quotuinto('name=?','baobao');&lt;br /&gt;//更新資料表，回傳行數&lt;br /&gt;$rows_affected=$db-&amp;gt;update($table,$set,$where);&lt;br /&gt;9、刪除資料航&lt;br /&gt;$table='user_table'&lt;br /&gt;where 語句&lt;br /&gt;$where =$db-&amp;gt;quoteinto('first_name=?','patsy');&lt;br /&gt;//删除資料並得到影響的行數&lt;br /&gt;$rows_affected=$db-&amp;gt;delete($table,$where);&lt;br /&gt;10、取回查詢結果&lt;br /&gt;fetchAll();fetchAssoc();fetchCol();fetchOne();fetchPairs();fetchRow();&lt;br /&gt;//fetchAll取回所有結果集合，並作為連續的雜湊返回&lt;br /&gt;$result=$db-&amp;gt;fetchAll(&lt;br /&gt;'select * from round_table where noble_title=:title',&lt;br /&gt;array('title'=&amp;gt;'sir')&lt;br /&gt;);&lt;br /&gt;fetchAssoc（）//作为关联数组返回&lt;br /&gt;fetchcol（）//取回结果行的第一个字段名&lt;br /&gt;fetchOne（）//取回第一个字段值&lt;br /&gt;fetchPairs（）//取回一个相关数组，第一个字段为码，第二个字段为值&lt;br /&gt;fetchRow（）//取得结果集中的第一行 &lt;br /&gt;$config = new Zend_Config_Ini(APP_DIR . '/config/config.ini', 'general');&lt;br /&gt;&lt;br /&gt;$this-&amp;gt;getHelper('layout')-&amp;gt;disableLayout();&lt;br /&gt;$this-&amp;gt;getHelper('viewRenderer')-&amp;gt;setNoRender();&lt;br /&gt;&lt;br /&gt;headScript()-&amp;gt;captureStart(); ?&amp;gt;&lt;br /&gt;headScript()-&amp;gt;captureEnd(); ?&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;$this-&amp;gt;view-&amp;gt;getHelper('userMemUrl')-&amp;gt;userMemUrl('info')&lt;br /&gt;&lt;br /&gt;// 分頁頁碼&lt;br /&gt;$this-&amp;gt;per = 10;&lt;br /&gt;$len = $this-&amp;gt;db-&amp;gt;fetchOne("select count(*) from `feedback` where `active`=1 and `memorial_id`=$this-&amp;gt;mid");&lt;br /&gt;$pager = new Pager($len, $this-&amp;gt;per);&lt;br /&gt;$pager-&amp;gt;setAlign('right');&lt;br /&gt;$this-&amp;gt;view-&amp;gt;pager = $pager-&amp;gt;getNavigation();&lt;br /&gt;$start = ($pager-&amp;gt;getCurrentPage()-1)*$this-&amp;gt;per;&lt;br /&gt;$obj = new Feedback();&lt;br /&gt;$this-&amp;gt;view-&amp;gt;list = $obj-&amp;gt;fetchAll("`active`=1", 'poscode desc', $this-&amp;gt;per, $start);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/* 读取上一张,下一张 */&lt;br /&gt;$this-&amp;gt;view-&amp;gt;prevRow = $obj-&amp;gt;fetchRow("`active`=1 and `id`='$row-&amp;gt;id' and `poscode`&amp;gt;'$row-&amp;gt;poscode'", 'poscode asc', 1, 0);&lt;br /&gt;$this-&amp;gt;view-&amp;gt;nextRow = $obj-&amp;gt;fetchRow("`active`=1 and `id`='$row-&amp;gt;id' and `poscode`&amp;lt;'$row-&amp;gt;poscode'", 'poscode desc', 1, 0);&lt;br /&gt;&lt;br /&gt;&lt;div class="up_town"&gt;上一条：&lt;br /&gt;prevRow): ?&amp;gt;&lt;br /&gt;&lt;a href="http://www.blogger.com/%3C?php%20echo%20$this-%3EmemUrl%28%27article-show%27,%20null,%20%27/id/%27.$this-%3EprevRow-%3Eid%29;%20?%3E" style="color: #2788e4;"&gt;prevRow-&amp;gt;title; ?&amp;gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;这是第一条&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;下一条：&lt;br /&gt;nextRow): ?&amp;gt;&lt;br /&gt;&lt;a href="http://www.blogger.com/%3C?php%20echo%20$this-%3EmemUrl%28%27article-show%27,%20null,%20%27/id/%27.$this-%3EnextRow-%3Eid%29;%20?%3E" style="color: #2788e4;"&gt;nextRow-&amp;gt;title; ?&amp;gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;这是最后一条&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;$this-&amp;gt;view-&amp;gt;headLink()-&amp;gt;appendStylesheet($this-&amp;gt;baseDir . '/css/gardens.css');&lt;br /&gt;&lt;br /&gt;$this-&amp;gt;view-&amp;gt;headScript()-&amp;gt;appendFile($this-&amp;gt;baseDir . '/js/jquery.js');&lt;br /&gt;$this-&amp;gt;view-&amp;gt;headScript()-&amp;gt;appendFile($this-&amp;gt;baseDir . '/js/common.js');&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;if(!$this-&amp;gt;_request-&amp;gt;isPost()) {&lt;br /&gt;$this-&amp;gt;view-&amp;gt;useIframe = true;&lt;br /&gt;} else {&lt;br /&gt;$data = $this-&amp;gt;_request-&amp;gt;getPost();&lt;br /&gt;if(!$data['content']) {&lt;br /&gt;echo Func::feedtop('alert("生平簡介不能為空，請重新輸入!");');&lt;br /&gt;exit();&lt;br /&gt;}&lt;br /&gt;$row-&amp;gt;content = $data['content'];&lt;br /&gt;$rs = $row-&amp;gt;save();&lt;br /&gt;if($rs) {&lt;br /&gt;echo Func::feedtop('alert("生平簡介更新成功!");');&lt;br /&gt;exit();&lt;br /&gt;} else {&lt;br /&gt;echo Func::feedtop('alert("生平簡介更新失敗,請稍後重試!");');&lt;br /&gt;exit();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// ajax 響應&lt;br /&gt;$ajaxContext = $this-&amp;gt;_helper-&amp;gt;getHelper('AjaxContext');&lt;br /&gt;$ajaxContext-&amp;gt;addActionContext('select-wish', 'html')&lt;br /&gt;-&amp;gt;addActionContext('send-wish', 'html')&lt;br /&gt;-&amp;gt;initContext();&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;$this-&amp;gt;_flashMessenger = $this-&amp;gt;_helper-&amp;gt;getHelper('FlashMessenger');&lt;br /&gt;&lt;br /&gt;$this-&amp;gt;_flashMessenger-&amp;gt;addMessage('修改成功!');&lt;br /&gt;$this-&amp;gt;view-&amp;gt;messages = $this-&amp;gt;_flashMessenger-&amp;gt;getMessages();&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;echo Func::feedtop('winFunc.go("' .$this-&amp;gt;view-&amp;gt;getHelper('baseUrl')-&amp;gt;baseUrl() . '/user/pay/cart/id/' .$rs. '");');&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;// 刷新 SESSION&lt;br /&gt;$auth = $this-&amp;gt;getInvokeArg('auth');&lt;br /&gt;$auth-&amp;gt;getStorage()-&amp;gt;write($row);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;//驗證碼&lt;br /&gt;$this-&amp;gt;vcode = new Zend_Session_Namespace('vcode');&lt;br /&gt;if ($data['vcode'] != $this-&amp;gt;vcode-&amp;gt;user_login) {&lt;br /&gt;echo Func::feedtop('alert("驗證碼輸入有誤，請確認!");$("#vcode")[0].focus()');&lt;br /&gt;exit();&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-4742370183927506934?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/4742370183927506934/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=4742370183927506934' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/4742370183927506934'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/4742370183927506934'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2010/02/zendframework.html' title='ZendFramework 代碼片段'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-669783240544688270</id><published>2010-02-04T21:51:00.000-08:00</published><updated>2010-02-04T21:51:33.317-08:00</updated><title type='text'>Zend Framework添加CSS 和 JS的方法</title><content type='html'>$this-&gt;view-&gt;headLink()-&gt;appendStylesheet('/c/css/homepage.css'); &lt;br /&gt; $this-&gt;view-&gt;headLink()-&gt;appendStylesheet($baseUrl.'/css/admin/tinybrowser.css');&lt;br /&gt;$this-&gt;view-&gt;jQuery()-&gt;addJavascriptFile($baseUrl . '/js/admin/tiny_functions.js');&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-669783240544688270?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/669783240544688270/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=669783240544688270' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/669783240544688270'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/669783240544688270'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2010/02/zend-frameworkcss-js.html' title='Zend Framework添加CSS 和 JS的方法'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-8891953766440839131</id><published>2010-02-04T21:46:00.001-08:00</published><updated>2010-02-04T21:46:45.247-08:00</updated><title type='text'>Zend Framework轉向</title><content type='html'>Zend Framework&lt;br /&gt;&lt;br /&gt;Zend, PHP&lt;br /&gt;一. render&lt;br /&gt;不指定render&lt;br /&gt;结果： {当前Module}/{当前Controller}/{当前Action}.phtml&lt;br /&gt;&lt;br /&gt;$this-&gt;render('bar') ;&lt;br /&gt;结果： {当前Module}/{当前Controller}/bar.phtml&lt;br /&gt;&lt;br /&gt;二. forward&lt;br /&gt;$this-&gt;_forward('bar') ;&lt;br /&gt;结果： {当前Module}/{当前Controller}/bar&lt;br /&gt;&lt;br /&gt;$this-&gt;_forward('bar', 'foo') ;&lt;br /&gt;结果： {当前Module}/foo/bar&lt;br /&gt;&lt;br /&gt;$this-&gt;_forward('bar', 'foo', 'hoge') ;&lt;br /&gt;结果： hoge/foo/bar&lt;br /&gt;&lt;br /&gt;$params = array(&lt;br /&gt;'a' =&gt; '1',&lt;br /&gt;'b' =&gt; '2'&lt;br /&gt;) ;&lt;br /&gt;$this-&gt;_forward('bar', 'foo', 'hoge', $params) ;&lt;br /&gt;结果： /hoge/foo/bar/a/1/b/2&lt;br /&gt;&lt;br /&gt;三. redirect&lt;br /&gt;$this-&gt;_redirect('/hoge') ;&lt;br /&gt;结果： /hoge&lt;br /&gt;&lt;br /&gt;$this-&gt;_redirect('/hoge/foo') ;&lt;br /&gt;结果： /hoge/foo&lt;br /&gt;&lt;br /&gt;$this-&gt;_redirect('/hoge/foo/bar') ;&lt;br /&gt;结果： /hoge/foo/bar&lt;br /&gt;&lt;br /&gt;$this-&gt;_redirect('http://localhost/hoge/foo/bar') ;&lt;br /&gt;结果： http://localhost/hoge/foo/bar&lt;br /&gt;&lt;br /&gt;$this-&gt;_redirect('http://localhost/hoge/foo/bar?a=1&amp;b=2') ;&lt;br /&gt;结果： http://localhost/hoge/foo/bar?a=1&amp;b=2&lt;br /&gt;&lt;br /&gt;四. 特殊情况&lt;br /&gt;不使用 layout&lt;br /&gt;结果： $this-&gt;_helper-&gt;layout()-&gt;disableLayout() ;&lt;br /&gt;&lt;br /&gt;不使用 view&lt;br /&gt;结果： $this-&gt;_helper-&gt;viewRenderer-&gt;setNoRender() ;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-8891953766440839131?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/8891953766440839131/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=8891953766440839131' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/8891953766440839131'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/8891953766440839131'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2010/02/zend-framework.html' title='Zend Framework轉向'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-3957724452701691000</id><published>2010-01-01T12:27:00.001-08:00</published><updated>2011-04-09T11:52:30.523-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mvc'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>MVC與肯X基</title><content type='html'>MVC與肯X基&lt;br /&gt;&lt;br /&gt;晚上睡不著覺，妹妹在肯X基上班，跟他聊上班的事情，聊著聊著感覺很熟悉&lt;br /&gt;MVC架構為什麼跟肯X基的的工作流程這麼像，所以就記錄下來，希望對想了解&lt;br /&gt;架構的人能有所幫助。&lt;br /&gt;&lt;br /&gt;註：mvc是Xeroe PARC在20世紀80年代為程式語言Smalltalk-80所發明的一種開發模式&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;演出人員：&lt;br /&gt;&lt;br /&gt;櫃檯V小姐(通常都要有點好看,所以view很重要)&lt;br /&gt;總配C阿姨(通常就是看客人多少負責發落漢堡手、麵包手做事的人)&lt;br /&gt;漢堡手M1、麵包手M2、飲料手M3(就是壓麵包然後做漢堡出來跟把炸雞的人)&lt;br /&gt;最後當然還有客人(就是所謂的Client、EndUser)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;動作是這樣的&lt;br /&gt;1.等了好久客人終於進門了&lt;br /&gt;2.櫃檯V小姐展示一下產品並問客人說請問你要點什麼&lt;br /&gt;3.客人：我要一份X號餐(一份漢堡、一杯可樂、一份薯條)&lt;br /&gt;4.櫃檯V小姐把他key在收銀機上&lt;br /&gt;5.總配C阿姨從後面的螢幕上看到了客人訂餐的資料&lt;br /&gt;6.依照客人的需要總配C阿姨發落漢堡手M1、麵堡手M2及飲料手M3製作各自的東西&lt;br /&gt;7.漢堡手去找漢堡皮、肉片、萵苣絲，薯條手開始鏟薯條，飲料手開始做飲料&lt;br /&gt;8.總配檢查了一下做好的東西，看看是內用還是點餐車道，把它呈上透明的保溫箱裡或外帶的車道窗口&lt;br /&gt;9.櫃檯小姐把產品拿給客人&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;如果換成網頁程式的MVC架構是這樣解釋的&lt;br /&gt;1.也是在等使用者上這個網站&lt;br /&gt;2.使用者GET網頁，展示網頁畫面至使用者的瀏覽器(VIEW)&lt;br /&gt;3.使用者點擊某一頁，告訴Server我要這一頁&lt;br /&gt;4.無對應的動作&lt;br /&gt;5.Ctrl接受到使用者的要求&lt;br /&gt;6.依照使用者點擊的頁面的功能，開始跟Model要資料&lt;br /&gt;7.Model會依需求跟資料庫來自同一個表或不同的表查詢出資料，並做成Ctrl所能接受的資料&lt;br /&gt;8.Ctrl依照剛剛使用者的要求，看回傳給View用頁面呈現，還是Ajax來呈現&lt;br /&gt;9.View將所需求的資料呈現出來&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-3957724452701691000?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/3957724452701691000/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=3957724452701691000' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/3957724452701691000'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/3957724452701691000'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2010/01/mvcx.html' title='MVC與肯X基'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-5370972433620328374</id><published>2009-12-25T02:43:00.000-08:00</published><updated>2009-12-25T02:43:09.597-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ZendFramework'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='db'/><title type='text'>Zend FrameWork的交易</title><content type='html'>$this-&gt;db-&gt;beginTransaction();&lt;br /&gt;&lt;br /&gt;try {&lt;br /&gt;&lt;br /&gt;//執行SQL語法&lt;br /&gt;&lt;br /&gt;$this-&gt;db-&gt;insert('dbname' , array('欄位1' =&gt; '值1'));&lt;br /&gt;$this-&gt;db-&gt;insert('dbname' , array('欄位2' =&gt; '值2'));&lt;br /&gt;$this-&gt;db-&gt;insert('dbname' , array('欄位3' =&gt; '值3'));&lt;br /&gt;$this-&gt;db-&gt;commit();//成功就執行&lt;br /&gt;}catch (Zend_Db_Exception $e){&lt;br /&gt; $this-&gt;db-&gt;rollback();//失敗就回去上一步&lt;br /&gt;throw $e;&lt;br /&gt;&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-5370972433620328374?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/5370972433620328374/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=5370972433620328374' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/5370972433620328374'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/5370972433620328374'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2009/12/zend-framework.html' title='Zend FrameWork的交易'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-4671773793612899496</id><published>2009-12-13T05:14:00.001-08:00</published><updated>2010-09-27T19:22:36.533-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='framework'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='ORM'/><title type='text'>PHP的框架及ORM框架</title><content type='html'>PHP框架&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.coremvc.cn/index.php"&gt;CoreMVC官方網站&lt;/a&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/coremvc/"&gt;CodeMVC_google&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://qeephp.com/"&gt;fleaphp&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://thinkphp.cn/"&gt;ThinkPHP&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://cakephp.org/"&gt;CakePHP&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://codeigniter.com/"&gt;CodeIgniter&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://easyframework.com/"&gt;EasyFramework&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;戲法人人會變，看你喜歡用哪一種摟&lt;br /&gt;&lt;br /&gt;最近在看阿六文章&lt;br /&gt;&lt;br /&gt;有段玩笑話說&lt;br /&gt;使用Zend就像加入共產黨&lt;br /&gt;FleaPHP像是改革開放&lt;br /&gt;ThinkPHP開始實施共產主義&lt;br /&gt;所有都試過後發現無黨派的最自由&lt;br /&gt;&lt;br /&gt;PHP的ORM框架&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.doctrine-project.org/"&gt;doctrine&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-4671773793612899496?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/4671773793612899496/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=4671773793612899496' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/4671773793612899496'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/4671773793612899496'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2009/12/phporm.html' title='PHP的框架及ORM框架'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-2960167370901142572</id><published>2009-12-13T05:13:00.000-08:00</published><updated>2009-12-13T05:13:24.534-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ZendFramework'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>ZendFramework資料庫的設置</title><content type='html'>ZendFramework設定資料庫時config.ini，跟ROR一樣有個專門的設定檔&lt;br /&gt;&lt;br /&gt;[general]&lt;br /&gt;db.adapter=PDO_MYSQL  //使用PDO的MySQL接口&lt;br /&gt;db.config.host=localhost   //MySQL的主機IP&lt;br /&gt;db.config.username=root  //填入資料庫的使用者&lt;br /&gt;db.config.password=      //填入資料庫的密碼&lt;br /&gt;db.config.dbname=zendoophp //填入使用的資料庫名稱&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;然後在單一進入點的index.php&lt;br /&gt;註冊這組設定&lt;br /&gt;$config=new Zend_Config_Ini('./application/config/config.ini',null, true);&lt;br /&gt;Zend_Registry::set('config',$config);&lt;br /&gt;&lt;br /&gt;$dbAdapter=Zend_Db::factory($config-&gt;general-&gt;db-&gt;adapter,&lt;br /&gt;$config-&gt;general-&gt;db-&gt;config-&gt;toArray());&lt;br /&gt;&lt;br /&gt;設定資料庫接口從Zend_Db::factory(接口,設定陣列);&lt;br /&gt;&lt;br /&gt;$dbAdapter-&gt;query('SET NAMES UTF8');&lt;br /&gt;先送出一個SQL，將資料庫的連線語系設定為中文&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-2960167370901142572?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/2960167370901142572/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=2960167370901142572' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/2960167370901142572'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/2960167370901142572'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2009/12/zendframework.html' title='ZendFramework資料庫的設置'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-1996943596126335925</id><published>2009-11-29T10:52:00.000-08:00</published><updated>2009-11-29T11:15:14.164-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='基礎'/><title type='text'>如何動手學程式</title><content type='html'>如何動手學程式以PHP為例&lt;br /&gt;&lt;br /&gt;其實PHP有著溫和的學習曲線&lt;br /&gt;可以提供對有興趣的程式設計者&lt;br /&gt;有不錯的信心。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-1996943596126335925?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/1996943596126335925/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=1996943596126335925' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/1996943596126335925'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/1996943596126335925'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2009/11/blog-post.html' title='如何動手學程式'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-3467596281708333156</id><published>2009-10-22T20:15:00.000-07:00</published><updated>2009-10-22T20:52:09.359-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Aptana'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='SFTP'/><title type='text'>如何在Aptana設定SFTP</title><content type='html'>&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;先開啟一個PHP專案&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_wHesrN3Xxxg/SuEgjTuD2sI/AAAAAAAAAD8/8vTB5SYOKPg/s1600-h/1.PNG"&gt;&lt;img style="MARGIN: 0px 10px 10px 0px; WIDTH: 320px; FLOAT: left; HEIGHT: 270px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5395629619527539394" border="0" alt="" src="http://4.bp.blogspot.com/_wHesrN3Xxxg/SuEgjTuD2sI/AAAAAAAAAD8/8vTB5SYOKPg/s320/1.PNG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;填入專案名稱&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_wHesrN3Xxxg/SuEhARskUII/AAAAAAAAAEE/ULAb5NJm7Yc/s1600-h/2.PNG"&gt;&lt;img style="MARGIN: 0px 10px 10px 0px; WIDTH: 320px; FLOAT: left; HEIGHT: 286px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5395630117200613506" border="0" alt="" src="http://1.bp.blogspot.com/_wHesrN3Xxxg/SuEhARskUII/AAAAAAAAAEE/ULAb5NJm7Yc/s320/2.PNG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;完成專案新增後，在專案的名稱按右鍵&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_wHesrN3Xxxg/SuEjPk3AhqI/AAAAAAAAAEU/vwLClvAN0Nk/s1600-h/3.PNG"&gt;&lt;img style="WIDTH: 279px; HEIGHT: 320px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5395632579065972386" border="0" alt="" src="http://2.bp.blogspot.com/_wHesrN3Xxxg/SuEjPk3AhqI/AAAAAAAAAEU/vwLClvAN0Nk/s320/3.PNG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;選擇SFTP&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_wHesrN3Xxxg/SuEkO_2_TdI/AAAAAAAAAEc/-x4dWUpzRA0/s1600-h/4.PNG"&gt;&lt;img style="WIDTH: 320px; HEIGHT: 238px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5395633668645408210" border="0" alt="" src="http://2.bp.blogspot.com/_wHesrN3Xxxg/SuEkO_2_TdI/AAAAAAAAAEc/-x4dWUpzRA0/s320/4.PNG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;設定好SFTP，這樣就能按Ctrl+S存檔的時候自動上傳&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://4.bp.blogspot.com/_wHesrN3Xxxg/SuElWFaIwuI/AAAAAAAAAEk/kitCM5VcSi4/s1600-h/5.PNG"&gt;&lt;img style="WIDTH: 320px; HEIGHT: 174px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5395634889905717986" border="0" alt="" src="http://4.bp.blogspot.com/_wHesrN3Xxxg/SuElWFaIwuI/AAAAAAAAAEk/kitCM5VcSi4/s320/5.PNG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;如果選自動上傳SFTP有問題可以參考&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;開啟 Aptana 的 upload current file on save&lt;br /&gt;http://www.joehorn.idv.tw/archives/2009/09/04/631/&lt;br /&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-3467596281708333156?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/3467596281708333156/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=3467596281708333156' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/3467596281708333156'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/3467596281708333156'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2009/10/aptanasftp.html' title='如何在Aptana設定SFTP'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_wHesrN3Xxxg/SuEgjTuD2sI/AAAAAAAAAD8/8vTB5SYOKPg/s72-c/1.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-5392960717971637071</id><published>2009-10-19T17:42:00.000-07:00</published><updated>2009-10-19T18:01:34.228-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cookie'/><category scheme='http://www.blogger.com/atom/ns#' term='hash'/><category scheme='http://www.blogger.com/atom/ns#' term='session'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>跨網域狀態傳遞(使用者認證)</title><content type='html'>在PHP所寫的程式中，因為Http是無狀態的請求，往往許需要藉助cookie或session來記錄使用者資訊&lt;br /&gt;基於安全性考量，PHP預設cookie的使用範圍只能在網站本身的網域使用如(aaa.omusico.net),如果&lt;br /&gt;想要在(bbb.omusico.net)上也能讀到那支cookie也能紀錄的狀態，setcookie ("TestCookie", "", time() - 3600, "/", ".omusico.net", 1);可以將cookie的domain指定到更上一層。&lt;br /&gt;&lt;br /&gt;如果要在跨網域中共用session，要注意Session是存在於server所以兩台主機間必須共享存Session的&lt;br /&gt;檔案空間並在PHP.INI中修改session儲存位置，或是使用mencache、fastdht甚至是facebook貢獻的hive&lt;br /&gt;&lt;br /&gt;PS：修改php.ini 內 session.use_cookies將1設定改為0將會使用網址傳遞&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-5392960717971637071?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/5392960717971637071/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=5392960717971637071' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/5392960717971637071'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/5392960717971637071'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2009/10/blog-post.html' title='跨網域狀態傳遞(使用者認證)'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-7460247089645676600</id><published>2009-10-19T07:56:00.000-07:00</published><updated>2009-10-19T08:01:39.185-07:00</updated><title type='text'>PHP各資料庫的管理</title><content type='html'>PHP不只有PhpMyAdmin可以管理MySQL&lt;br /&gt;&lt;br /&gt;也可以使用phpMSAdmin來管理MSserver&lt;br /&gt;&lt;br /&gt;http://sourceforge.net/projects/phpmsadmin&lt;br /&gt;&lt;br /&gt;也可以用phpPgAdmin來管理PostgreSQ&lt;br /&gt;&lt;br /&gt;http://phppgadmin.sourceforge.net/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-7460247089645676600?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/7460247089645676600/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=7460247089645676600' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/7460247089645676600'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/7460247089645676600'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2009/10/php_3178.html' title='PHP各資料庫的管理'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-181262632011026307</id><published>2009-10-19T06:33:00.000-07:00</published><updated>2009-10-19T06:35:40.755-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='正規表示式'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>常用的PHP正規表示式</title><content type='html'>"^\d+$" //非負整數（正整數+ 0）&lt;br /&gt;"^[0-9]*[1-9][0-9]*$" //正整數&lt;br /&gt;"^((-\d+)|(0+))$" //非正整數（負整數+ 0）&lt;br /&gt;"^-[0-9]*[1-9][0-9]*$" //負整數&lt;br /&gt;"^-?\d+$" //整數&lt;br /&gt;"^\d+(\.\d+)?$" //非負浮點數（正浮點數+ 0）&lt;br /&gt;"^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\ .[0-9]+)|([0-9]*[1-9][0-9]*))$" //正浮點數&lt;br /&gt;"^((-\d+(\.\d+)?)|(0+(\.0+)?))$" //非正浮點數（負浮點數+ 0）&lt;br /&gt;"^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9] *\.[0-9]+)|([0-9]*[1-9][0-9]*)))$" //負浮點數//OSPHP.COm.CN&lt;br /&gt;"^(-?\d+)(\.\d+)?$" //浮點數&lt;br /&gt;"^[A-Za-z]+$" //由26個英文字母組成的字符串&lt;br /&gt;"^[AZ]+$" //由26個英文字母的大寫組成的字符串&lt;br /&gt;"^[az]+$" //由26個英文字母的小寫組成的字符串&lt;br /&gt;"^[A-Za-z0-9]+$" //由數字和26個英文字母組成的字符串&lt;br /&gt;"^\w+$" //由數字、26個英文字母或者下劃線組成的字符串&lt;br /&gt;"^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$" //email地址&lt;br /&gt;"^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$" // url&lt;br /&gt;/^(d{2}|d{4})-((0([1-9]{1}))|(1[1|2]))-(([0-2]([1- 9]{1}))|(3[0|1]))$/ //年-月-日&lt;br /&gt;/^((0([1-9]{1}))|(1[1|2]))/(([0-2]([1-9]{1}))|(3[0 |1]))/(d{2}|d{4})$/ //月/日/年&lt;br /&gt;"^([w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|( ([w-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$" //Emil //OSPHP.COm .CN&lt;br /&gt;/^((\+?[0-9]{2,4}\-[0-9]{3,4}\-)|([0-9]{3,4}\-))?( [0-9]{7,8})(\-[0-9]+)?$/ //電話號碼&lt;br /&gt;"^(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0- 5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[ 0-5])$" //IP地址&lt;br /&gt;&lt;br /&gt;匹配中文字符的正則表達式： [\u4e00-\u9fa5]&lt;br /&gt;匹配雙字節字符(包括漢字在內)：[^\x00-\xff]&lt;br /&gt;匹配空行的正則表達式：\n[\s| ]*\r&lt;br /&gt;匹配HTML標記的正則表達式：/&lt;(.*)&gt;.*&lt;\/\1&gt;|&lt;(.*) \/&gt;/&lt;br /&gt;匹配首尾空格的正則表達式：(^\s*)|(\s*$)&lt;br /&gt;匹配Email地址的正則表達式：\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*&lt;br /&gt;匹配網址URL的正則表達式：^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*)) *(\\?\\S*)?$&lt;br /&gt;//開源代碼OSPhP.COm.CN&lt;br /&gt;&lt;br /&gt;匹配帳號是否合法(字母開頭，允許5-16字節，允許字母數字下劃線)：^[a-zA-Z][a-zA-Z0-9_]{4,15}$&lt;br /&gt;匹配國內電話號碼：(\d{3}-|\d{4}-)?(\d{8}|\d{7})?&lt;br /&gt;匹配騰訊QQ號：^[1-9]*[1-9][0-9]*$&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;元字符及其在正則表達式上下文中的行為：&lt;br /&gt;&lt;br /&gt;\將下一個字符標記為一個特殊字符、或一個原義字符、或一個後向引用、或一個八進制轉義符。&lt;br /&gt;&lt;br /&gt;^匹配輸入字符串的開始位置。如果設置了RegExp對象的Multiline屬性，^也匹配'\n'或'\r'之後的位置。&lt;br /&gt;&lt;br /&gt;$匹配輸入字符串的結束位置。如果設置了RegExp對象的Multiline屬性，$也匹配'\n'或'\r'之前的位置。&lt;br /&gt;&lt;br /&gt;*匹配前面的子表達式零次或多次。&lt;br /&gt;&lt;br /&gt;+匹配前面的子表達式一次或多次。 +等價於{1,}。&lt;br /&gt;&lt;br /&gt;?匹配前面的子表達式零次或一次。 ?等價於{0,1}。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;{n} n是一個非負整數，匹配確定的n次。&lt;br /&gt;&lt;br /&gt;{n,} n是一個非負整數，至少匹配n次。&lt;br /&gt;&lt;br /&gt;{n,m} m和n均為非負整數，其中n &lt;= m。最少匹配n次且最多匹配m次。在逗號和兩個數之間不能有空格。&lt;br /&gt;&lt;br /&gt;?當該字符緊跟在任何一個其他限制符(*, +, ?, {n}, {n,}, {n,m})後面時，匹配模式是非貪婪的。非貪婪模式盡可能少的匹配所搜索的字符串，而默認的貪婪模式則盡可能多的匹配所搜索的字符串。&lt;br /&gt;&lt;br /&gt;.匹配除"\n"之外的任何單個字符。要匹配包括'\n'在內的任何字符，請使用象'[.\n]'的模式。&lt;br /&gt;(pattern)匹配pattern並獲取這一匹配。&lt;br /&gt;&lt;br /&gt;(?:pattern)匹配pattern但不獲取匹配結果，也就是說這是一個非獲取匹配，不進行存儲供以後使用。&lt;br /&gt;&lt;br /&gt;(?=pattern)正向預查，在任何匹配pattern的字符串開始處匹配查找字符串。這是一個非獲取匹配，也就是說，該匹配不需要獲取供以後使用。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(?!pattern)負向預查，與(?=pattern)作用相反&lt;br /&gt;&lt;br /&gt;x|y匹配x或y。&lt;br /&gt;&lt;br /&gt;[xyz]字符集合。&lt;br /&gt;&lt;br /&gt;[^xyz]負值字符集合。&lt;br /&gt;&lt;br /&gt;[az]字符範圍，匹配指定範圍內的任意字符。&lt;br /&gt;&lt;br /&gt;[^az]負值字符範圍，匹配任何不在指定範圍內的任意字符。&lt;br /&gt;&lt;br /&gt;\b匹配一個單詞邊界，也就是指單詞和空格間的位置。&lt;br /&gt;&lt;br /&gt;\B匹配非單詞邊界。&lt;br /&gt;&lt;br /&gt;\cx匹配由x指明的控製字符。&lt;br /&gt;&lt;br /&gt;\d匹配一個數字字符。等價於[0-9]。&lt;br /&gt;&lt;br /&gt;\D匹配一個非數字字符。等價於[^0-9]。&lt;br /&gt;&lt;br /&gt;\f匹配一個換頁符。等價於\x0c和\cL。&lt;br /&gt;&lt;br /&gt;\n匹配一個換行符。等價於\x0a和\cJ。&lt;br /&gt;&lt;br /&gt;\r匹配一個回車符。等價於\x0d和\cM。&lt;br /&gt;&lt;br /&gt;\s匹配任何空白字符，包括空格、製表符、換頁符等等。等價於[ \f\n\r\t\v]。&lt;br /&gt;&lt;br /&gt;\S匹配任何非空白字符。等價於[^ \f\n\r\t\v]。&lt;br /&gt;//開源代碼OSPhP.COm.CN&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;\t匹配一個製表符。等價於\x09和\cI。&lt;br /&gt;&lt;br /&gt;\v匹配一個垂直製表符。等價於\x0b和\cK。&lt;br /&gt;&lt;br /&gt;\w匹配包括下劃線的任何單詞字符。等價於’[A-Za-z0-9_]’。&lt;br /&gt;&lt;br /&gt;\W匹配任何非單詞字符。等價於’[^A-Za-z0-9_]’。&lt;br /&gt;&lt;br /&gt;\xn匹配n，其中n為十六進制轉義值。十六進制轉義值必須為確定的兩個數字長。&lt;br /&gt;&lt;br /&gt;\num匹配num，其中num是一個正整數。對所獲取的匹配的引用。&lt;br /&gt;&lt;br /&gt;\n標識一個八進制轉義值或一個後向引用。如果\n之前至少n個獲取的子表達式，則n為後向引用。否則，如果n為八進制數字(0-7)，則n為一個八進制轉義值。&lt;br /&gt;&lt;br /&gt;\nm標識一個八進制轉義值或一個後向引用。如果\nm之前至少有is preceded by at least nm個獲取得子表達式，則nm為後向引用。如果\nm之前至少有n個獲取，則n為一個後跟文字m的後向引用。如果前面的條件都不滿足，若n和m均為八進制數字(0-7)，則\nm將匹配八進制轉義值nm。 //PHP開源代碼&lt;br /&gt;&lt;br /&gt;\nml如果n為八進制數字(0-3)，且m和l均為八進制數字(0-7)，則匹配八進制轉義值nml。&lt;br /&gt;&lt;br /&gt;\un匹配n，其中n是一個用四個十六進制數字表示的Unicode字符。&lt;br /&gt;&lt;br /&gt;匹配中文字符的正則表達式： [u4e00-u9fa5]&lt;br /&gt;&lt;br /&gt;匹配雙字節字符(包括漢字在內)：[^x00-xff]&lt;br /&gt;&lt;br /&gt;匹配空行的正則表達式：n[s| ]*r&lt;br /&gt;&lt;br /&gt;匹配HTML標記的正則表達式：/&lt;(.*)&gt;.*|&lt;(.*) /&gt;/&lt;br /&gt;&lt;br /&gt;匹配首尾空格的正則表達式：(^s*)|(s*$)&lt;br /&gt;&lt;br /&gt;匹配Email地址的正則表達式：w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*&lt;br /&gt;&lt;br /&gt;匹配網址URL的正則表達式：http://([w-]+.)+[w-]+(/[w- ./?%&amp;=]*)?&lt;br /&gt;&lt;br /&gt;利用正則表達式限製網頁表單裡的文本框輸入內容：&lt;br /&gt;&lt;br /&gt;用正則表達式限制只能輸入中文：onkeyup="value=value.replace(/[^u4E00-u9FA5]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData(' text').replace(/[^u4E00-u9FA5]/g,''))"&lt;br /&gt;&lt;br /&gt;用正則表達式限制只能輸入全角字符： onkeyup="value=value.replace(/[^uFF00-uFFFF]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData( 'text').replace(/[^uFF00-uFFFF]/g,''))" //OSPHP.COM.Cn開源&lt;br /&gt;&lt;br /&gt;用正則表達式限制只能輸入數字：onkeyup="value=value.replace(/[^d]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text' ).replace(/[^d]/g,''))"&lt;br /&gt;&lt;br /&gt;用正則表達式限制只能輸入數字和英文：onkeyup="value=value.replace(/[W]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text ').replace(/[^d]/g,''))"&lt;br /&gt;&lt;br /&gt;=========常用正則式&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;匹配中文字符的正則表達式： [\u4e00-\u9fa5]&lt;br /&gt;&lt;br /&gt;匹配雙字節字符(包括漢字在內)：[^\x00-\xff]&lt;br /&gt;&lt;br /&gt;匹配空行的正則表達式：\n[\s| ]*\r&lt;br /&gt;&lt;br /&gt;匹配HTML標記的正則表達式：/&lt;(.*)&gt;.*&lt;\/\1&gt;|&lt;(.*) \/&gt;/&lt;br /&gt;&lt;br /&gt;匹配首尾空格的正則表達式：(^\s*)|(\s*$)&lt;br /&gt;&lt;br /&gt;匹配IP地址的正則表達式：/(\d+)\.(\d+)\.(\d+)\.(\d+)/g //&lt;br /&gt;&lt;br /&gt;匹配Email地址的正則表達式：\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;匹配網址URL的正則表達式：http://(/[\w-]+\.)+[\w-]+(/[\w- ./?%&amp;=]*)?&lt;br /&gt;&lt;br /&gt;sql語句：^(select|drop|delete|create|update|insert).*$&lt;br /&gt;&lt;br /&gt;1、非負整數：^\d+$&lt;br /&gt;&lt;br /&gt;2、正整數：^[0-9]*[1-9][0-9]*$&lt;br /&gt;&lt;br /&gt;3、非正整數：^((-\d+)|(0+))$&lt;br /&gt;&lt;br /&gt;4、負整數：^-[0-9]*[1-9][0-9]*$&lt;br /&gt;&lt;br /&gt;5、整數：^-?\d+$&lt;br /&gt;&lt;br /&gt;6、非負浮點數：^\d+(\.\d+)?$&lt;br /&gt;&lt;br /&gt;7、正浮點數：^((0-9)+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0- 9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$&lt;br /&gt;&lt;br /&gt;8、非正浮點數：^((-\d+\.\d+)?)|(0+(\.0+)?))$&lt;br /&gt;&lt;br /&gt;9、負浮點數：^(-((正浮點數正則式)))$&lt;br /&gt;&lt;br /&gt;10、英文字符串：^[A-Za-z]+$&lt;br /&gt;&lt;br /&gt;11、英文大寫串：^[A-Z]+$&lt;br /&gt;&lt;br /&gt;12、英文小寫串：^[a-z]+$&lt;br /&gt;&lt;br /&gt;13、英文字符數字串：^[A-Za-z0-9]+$&lt;br /&gt;&lt;br /&gt;14、英數字加下劃線串：^\w+$&lt;br /&gt;&lt;br /&gt;15、E-mail地址：^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;16、URL：^[a-zA-Z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\s*)?$&lt;br /&gt;或：^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&amp;_~`@[\]\': +!]*([^&lt;&gt;\"\"])*$&lt;br /&gt;&lt;br /&gt;17、郵政編碼：^[1-9]\d{5}$&lt;br /&gt;&lt;br /&gt;18、中文：^[\u0391-\uFFE5]+$&lt;br /&gt;&lt;br /&gt;19、電話號碼：^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{ 2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$&lt;br /&gt;&lt;br /&gt;20、手機號碼：^((\(\d{2,3}\))|(\d{3}\-))?13\d{9}$&lt;br /&gt;&lt;br /&gt;21、雙字節字符(包括漢字在內)：^\x00-\xff&lt;br /&gt;&lt;br /&gt;22、匹配首尾空格：(^\s*)|(\s*$)（像vbscript那樣的trim函數）&lt;br /&gt;&lt;br /&gt;23、匹配HTML標記：&lt;(.*)&gt;.*&lt;\/\1&gt;|&lt;(.*) \/&gt;&lt;br /&gt;&lt;br /&gt;24、匹配空行：\n[\s| ]*\r&lt;br /&gt;&lt;br /&gt;25、提取信息中的網絡鏈接：(h|H)(r|R)(e|E)(f|F) *= *('|")?(\w|\\|\/|\. )+('|"| *|&gt;)?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;26、提取信息中的郵件地址：\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*&lt;br /&gt;&lt;br /&gt;27、提取信息中的圖片鏈接：(s|S)(r|R)(c|C) *= *('|")?(\w|\\|\/|\.)+('| "| *|&gt;)?&lt;br /&gt;&lt;br /&gt;28、提取信息中的IP地址：(\d+)\.(\d+)\.(\d+)\.(\d+)&lt;br /&gt;&lt;br /&gt;33、提取信息中的浮點數（即小數）：(-?\d*)\.?\d+&lt;br /&gt;&lt;br /&gt;34、提取信息中的任何數字：(-?\d*)(\.\d+)?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;35、IP：(\d+)\.(\d+)\.(\d+)\.(\d+)&lt;br /&gt;&lt;br /&gt;36、電話區號：/^0\d{2,3}$/&lt;br /&gt;&lt;br /&gt;38、帳號(字母開頭，允許5-16字節，允許字母數字下劃線)：^[a-zA-Z][a-zA-Z0-9_]{4,15}$&lt;br /&gt;&lt;br /&gt;39、中文、英文、數字及下劃線：^[\u4e00-\u9fa5_a-zA-Z0-9]+$&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-181262632011026307?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/181262632011026307/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=181262632011026307' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/181262632011026307'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/181262632011026307'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2009/10/php_19.html' title='常用的PHP正規表示式'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-9094631832597846301</id><published>2009-10-19T06:16:00.000-07:00</published><updated>2009-10-19T06:25:09.954-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='抓取'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='網頁'/><title type='text'>如何使用PHP抓取網頁內容</title><content type='html'>在PHP中可以使用檔案的操作方式來取得網頁&lt;br /&gt;&lt;br /&gt;fopen-&gt;fread-&gt;fclose&lt;br /&gt;&lt;br /&gt;打開網址，讀取檔案，關閉檔案&lt;br /&gt;&lt;br /&gt;$handle = fopen ("http://www.example.com/", "rb");&lt;br /&gt;$contents = "";&lt;br /&gt;do {&lt;br /&gt;   $data = fread($handle, 1024);&lt;br /&gt;   if (strlen($data) == 0) {&lt;br /&gt;   break;&lt;br /&gt;   }&lt;br /&gt;   $contents .= $data;&lt;br /&gt;} while(true);&lt;br /&gt;fclose ($handle); &lt;br /&gt;&lt;br /&gt;***************************************************************&lt;br /&gt;也可透過curl來使用&lt;br /&gt;&lt;br /&gt;$url = "http://www.example.com/";&lt;br /&gt;$ch = curl_init();&lt;br /&gt;$timeout = 5;&lt;br /&gt;curl_setopt($ch, CURLOPT_URL, $url);&lt;br /&gt;curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);&lt;br /&gt;curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);&lt;br /&gt;curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY); //需要使用者登入&lt;br /&gt;curl_setopt($ch, CURLOPT_USERPWD, US_NAME.":".US_PWD); //需要使用者密碼&lt;br /&gt;$contents = curl_exec($ch);&lt;br /&gt;curl_close($ch); &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;***************************************************************&lt;br /&gt;&lt;br /&gt;file_get_contents&lt;br /&gt;&lt;br /&gt;$url = "http://www.example.com/";&lt;br /&gt;$contents = file_get_contents($url);&lt;br /&gt;/***如果中文顯示有問題可以使用iconv函式轉換編碼***/&lt;br /&gt;$getcontent = iconv("big5", "utf-8",file_get_contents($url));&lt;br /&gt;&lt;br /&gt;**************************************************************&lt;br /&gt;透過ob緩衝來取的文件本身的內容&lt;br /&gt;&lt;br /&gt;session_start();&lt;br /&gt;ob_start();&lt;br /&gt;include('test.php');&lt;br /&gt;contents = ob_get_contents();&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-9094631832597846301?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/9094631832597846301/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=9094631832597846301' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/9094631832597846301'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/9094631832597846301'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2009/10/php.html' title='如何使用PHP抓取網頁內容'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-8113497179219621678</id><published>2009-04-22T20:15:00.000-07:00</published><updated>2010-07-20T20:50:49.186-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GAE'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><category scheme='http://www.blogger.com/atom/ns#' term='JAVA'/><title type='text'>在JAVA環境中!!!執行PHP</title><content type='html'>相信在台灣PHP的佔有率，蠻高的如果想要有免費的空間&lt;br /&gt;可以參考一下GAE&lt;br /&gt;在嘗試把 PHP 程式放進 GAE(Google app engine)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;http://www.webdigi.co.uk/blog/2009/ru ... on-the-google-app-engine/&lt;br /&gt;&lt;br /&gt;JAVA 執行環境可以透過 Quercus這一個實作的分支來跑&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.caucho.com/resin-3.0/quercus/"&gt;http://www.caucho.com/resin-3.0/quercus/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;補充資料&lt;br /&gt;&lt;br /&gt;&lt;a href="http://trac.nchc.org.tw/cloud/wiki/Jetty-Demo"&gt;http://trac.nchc.org.tw/cloud/wiki/Jetty-Demo&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://icyleaf.com/2009/04/14/running-php-on-google-app-engine/"&gt;http://icyleaf.com/2009/04/14/running-php-on-google-app-engine/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://icyleaf.com/2009/06/12/google-app-engine-on-the-use-of-php/"&gt;http://icyleaf.com/2009/06/12/google-app-engine-on-the-use-of-php/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-8113497179219621678?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/8113497179219621678/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=8113497179219621678' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/8113497179219621678'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/8113497179219621678'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2009/04/javaphp.html' title='在JAVA環境中!!!執行PHP'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-4601314084350546796</id><published>2009-02-24T03:34:00.000-08:00</published><updated>2010-09-09T02:13:58.669-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHPDevShell'/><title type='text'>PHPDevShell</title><content type='html'>PHPDevShell是一套可以用來快速開發PHP網站&lt;br /&gt;&lt;br /&gt;下載點&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.phpdevshell.org/"&gt;http://www.phpdevshell.org/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://codeigniter.com/"&gt;http://codeigniter.com/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-4601314084350546796?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/4601314084350546796/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=4601314084350546796' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/4601314084350546796'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/4601314084350546796'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2009/02/phpdevshell.html' title='PHPDevShell'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-4315120683462970536</id><published>2009-01-21T00:39:00.000-08:00</published><updated>2009-06-06T01:23:17.036-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><title type='text'>MySQL 好用物件分享</title><content type='html'>這MySQL物件可以以空間換時間&lt;br /&gt;提供資料庫快取，減少等待&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.ziddu.com/downloadfile/3252813/mysql.class.rar.html"&gt;http://www.ziddu.com/downloadfile/3252813/mysql.class.rar.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-4315120683462970536?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/4315120683462970536/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=4315120683462970536' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/4315120683462970536'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/4315120683462970536'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2009/01/mysql.html' title='MySQL 好用物件分享'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-339847936557388635</id><published>2009-01-20T20:29:00.000-08:00</published><updated>2009-01-20T20:32:23.519-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='cache'/><title type='text'>MySQL query cache</title><content type='html'>最近想弄一個自己的MySQL Class&lt;br /&gt;&lt;br /&gt;在找資料時發現有人已經寫好&lt;br /&gt;&lt;br /&gt;所以就不用自己動手了&lt;br /&gt;&lt;br /&gt;&lt;a href="http://hinablue.blogspot.com/2008/01/sql-tech-query.html"&gt;[sql tech.] 筆記 - 對你的 Query 作快取&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://hina.ushiisland.net/blog/hinablue/418"&gt;[php tech.] mysql 自製類別 (mysql.class.phpm)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://hinablue.blogspot.com/2008/01/php-tech-mysql-mysqlclassphpm.html"&gt;[php tech.] mysql 自製類別 (mysql.class.phpm)&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-339847936557388635?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/339847936557388635/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=339847936557388635' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/339847936557388635'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/339847936557388635'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2009/01/mysql-query-cache.html' title='MySQL query cache'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-6638263278618510270</id><published>2009-01-20T04:42:00.001-08:00</published><updated>2009-01-20T04:42:35.420-08:00</updated><title type='text'>判斷是否在時間範圍內</title><content type='html'>/***************&lt;br /&gt;判斷是否在時間範圍內&lt;br /&gt;&lt;br /&gt;***************/&lt;br /&gt;//time()函式會回傳UNIX時間戳記&lt;br /&gt;//strtotime()可將時間字串轉為UNIX時間戳記&lt;br /&gt;$start = "2009-1-31";&lt;br /&gt;$end = "2009-2-14";&lt;br /&gt;$ustart =  strtotime($start);   &lt;br /&gt;$uend = strtotime($end);   &lt;br /&gt;$now=time();&lt;br /&gt;if($now &gt; $ustart &amp;&amp; $now &lt; $uend)&lt;br /&gt;{&lt;br /&gt;echo '在時間範圍內';&lt;br /&gt;}else{&lt;br /&gt;echo '不在時間範圍內';&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-6638263278618510270?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/6638263278618510270/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=6638263278618510270' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/6638263278618510270'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/6638263278618510270'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2009/01/blog-post.html' title='判斷是否在時間範圍內'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-824354127570911393</id><published>2008-08-04T21:50:00.000-07:00</published><updated>2009-11-29T11:26:15.179-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='資源'/><category scheme='http://www.blogger.com/atom/ns#' term='原始碼'/><title type='text'>PHP資源蒐集</title><content type='html'>php資源蒐集(持續蒐集中)&lt;br /&gt;&lt;br /&gt;有好的程式碼，有如在蚌中養珍珠一樣持續的蒐集&lt;br /&gt;可以煉出程式碼的美麗(龐大&gt;美麗&gt;簡單)，簡單的&lt;br /&gt;程式碼通常是不容易閱讀的。&lt;br /&gt;&lt;br /&gt;國外&lt;br /&gt;&lt;a href="http://freshmeat.net/"&gt;http://freshmeat.net/&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://php.resourceindex.com/"&gt;&lt;br /&gt;http://php.resourceindex.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.devshed.com/"&gt;http://www.devshed.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;臺灣&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.blueshop.com.tw/board/list.asp?fumcde=FUM20041006152627A9N"&gt;藍色小鋪forPHP&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://phpbs.com/"&gt;PHP黑店&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://twpug.net/modules/xfsnippet/browse.php?by=lang&amp;amp;lang=105"&gt;台灣PHP聯盟&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://bbs.ecstart.com/forumdisplay.php?fid=61"&gt;ECstart_PHP CLASS程式交流討論&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;中國&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.osphp.com.cn/index.php"&gt;php源碼網 &lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.phpe.net/"&gt;超越PHP&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-824354127570911393?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/824354127570911393/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=824354127570911393' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/824354127570911393'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/824354127570911393'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2008/08/php.html' title='PHP資源蒐集'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-430812803761114387</id><published>2008-07-31T00:26:00.000-07:00</published><updated>2008-07-31T00:37:01.361-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='搜尋引擎'/><title type='text'>PHP搜尋引擎</title><content type='html'>基於Sphine的搜尋引擎&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Sphine官方網站&lt;/li&gt;&lt;/ul&gt;Sphine是基於GPL version 2的全文搜尋引擎，有提供PHP API及Ruby API、pure C API各語言接口可供使用&lt;br /&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;1. &lt;a href="http://72.14.235.104/translate_c?hl=zh-TW&amp;amp;sl=zh-CN&amp;amp;tl=zh-TW&amp;amp;u=http://www.xgdown.com/article/10/141067_1.htm&amp;amp;usg=ALkJrhi9YTdTnefW-85ngM2ZQW91PJrdUA" target="_blank"&gt;用PHP構建自定義搜索引擎(1)&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="" onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;/span&gt;2. &lt;a href="http://72.14.235.104/translate_c?hl=zh-TW&amp;amp;sl=zh-CN&amp;amp;tl=zh-TW&amp;amp;u=http://www.xgdown.com/article/10/141067_2.htm&amp;amp;usg=ALkJrhhrzKtFAzWoemU2IvkrkxxRRXLvgQ" target="_blank"&gt;用PHP構建自定義搜索引擎(2)&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;/span&gt;3. &lt;a href="http://72.14.235.104/translate_c?hl=zh-TW&amp;amp;sl=zh-CN&amp;amp;tl=zh-TW&amp;amp;u=http://www.xgdown.com/article/10/141067_3.htm&amp;amp;usg=ALkJrhg3FLxT5tUHYW7j_SRx3R3bMsQ2Yw" target="_blank"&gt;用PHP構建自定義搜索引擎(3)&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;/span&gt;4. &lt;a href="http://72.14.235.104/translate_c?hl=zh-TW&amp;amp;sl=zh-CN&amp;amp;tl=zh-TW&amp;amp;u=http://www.xgdown.com/article/10/141067_4.htm&amp;amp;usg=ALkJrhiVqxOmDcwkelKCMjOxtmZLs-lifA" target="_blank"&gt;用PHP構建自定義搜索引擎(4)&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;/span&gt;5. &lt;a href="http://72.14.235.104/translate_c?hl=zh-TW&amp;amp;sl=zh-CN&amp;amp;tl=zh-TW&amp;amp;u=http://www.xgdown.com/article/10/141067_5.htm&amp;amp;usg=ALkJrhiZF2XXUnacEIBLVvxhmHeiRQt4Uw" target="_blank"&gt;用PHP構建自定義搜索引擎(5)&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;/span&gt;6. &lt;a href="http://72.14.235.104/translate_c?hl=zh-TW&amp;amp;sl=zh-CN&amp;amp;tl=zh-TW&amp;amp;u=http://www.xgdown.com/article/10/141067_6.htm&amp;amp;usg=ALkJrhiTcK5btOtOkTuP-1ZKw1soJRItBA" target="_blank"&gt;用PHP構建自定義搜索引擎(6)&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;/span&gt;7. &lt;a href="http://72.14.235.104/translate_c?hl=zh-TW&amp;amp;sl=zh-CN&amp;amp;tl=zh-TW&amp;amp;u=http://www.xgdown.com/article/10/141067_7.htm&amp;amp;usg=ALkJrhg0_JAgI75GlFXZfkylRk-gnJ2afA" target="_blank"&gt;用PHP構建自定義搜索引擎(7)&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;/span&gt;8. &lt;a href="http://72.14.235.104/translate_c?hl=zh-TW&amp;amp;sl=zh-CN&amp;amp;tl=zh-TW&amp;amp;u=http://www.xgdown.com/article/10/141067_8.htm&amp;amp;usg=ALkJrhgq5CG0znmbLTeONdMC4DRaUQKbkg" target="_blank"&gt;用PHP構建自定義搜索引擎(8)&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span class="google-src-text" style="direction: ltr; text-align: left;"&gt;&lt;/span&gt;9. &lt;a href="http://72.14.235.104/translate_c?hl=zh-TW&amp;amp;sl=zh-CN&amp;amp;tl=zh-TW&amp;amp;u=http://www.xgdown.com/article/10/141067_9.htm&amp;amp;usg=ALkJrhhojNGqurKc7vGNQyi9LNmDpuUmsA" target="_blank"&gt;用PHP構建自定義搜索引擎(9)&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;10. &lt;a href="http://72.14.235.104/translate_c?hl=zh-TW&amp;amp;sl=zh-CN&amp;amp;tl=zh-TW&amp;amp;u=http://www.xgdown.com/article/10/141067_10.htm&amp;amp;usg=ALkJrhgaAET9_ptibIJ0T1aW3hGKCoCzpg" target="_blank"&gt;用PHP構建自定義搜索引擎(10)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;資料來源：&lt;/span&gt;&lt;span style="" onmouseover="_tipon(this)" onmouseout="_tipoff()"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;http://www.xgdown.com&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-430812803761114387?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/430812803761114387/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=430812803761114387' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/430812803761114387'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/430812803761114387'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2008/07/php.html' title='PHP搜尋引擎'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-4382802259907260447</id><published>2008-05-20T05:41:00.000-07:00</published><updated>2008-05-20T05:44:43.084-07:00</updated><title type='text'>Cakephp 簡明指南</title><content type='html'>&lt;p class="MsoNormal" style=""&gt;&lt;span style="" lang="EN-US"&gt;Cake&lt;i&gt;php&lt;/i&gt; &lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;簡明指南&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span  lang="EN-US" style="font-family:新細明體;"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-family:新細明體;"&gt;作者注：這個指南並非出自&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;Cake&lt;i&gt;php&lt;/i&gt;&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;的開發人員，也沒有從他們那裏得到認可。我撰寫它是因為我最近發現&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;Cake&lt;i&gt;php&lt;/i&gt; ,&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;有了很多疑問。我想其他人可能也遇上了這類問題。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="" lang="EN-US"&gt; &lt;/span&gt;&lt;span  lang="EN-US" style="font-family:新細明體;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-family:新細明體;"&gt;什麼是&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;Cake&lt;i&gt;php&lt;/i&gt;?&lt;/span&gt;&lt;span  lang="EN-US" style="font-family:新細明體;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="" lang="EN-US"&gt;Cake&lt;i&gt;php&lt;/i&gt;&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;是一個&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;&lt;i&gt;php&lt;/i&gt;&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;框架&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;,&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;就如同&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;Rails&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;對於&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;Ruby&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;。本質上講，它是&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;&lt;i&gt;php&lt;/i&gt;&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;開發人員避免重複做輪子的一個工具。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="" lang="EN-US"&gt; &lt;/span&gt;&lt;span  lang="EN-US" style="font-family:新細明體;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="" lang="EN-US"&gt;Cake&lt;i&gt;php&lt;/i&gt;&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;會對我有説明嗎？&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="" lang="EN-US"&gt;Cake&lt;i&gt;php&lt;/i&gt;&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;會對你有幫助，如果：&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-family:新細明體;"&gt;你喜歡&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;ruby on rails &lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;的靈巧和高效；&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-family:新細明體;"&gt;你已經瞭解了&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;&lt;i&gt;php&lt;/i&gt; &lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;並且沒時間去學習另一門語言；&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-family:新細明體;"&gt;你已經厭倦了編寫&lt;span style="color:black;"&gt;定制的代碼去做非常類似的事情；&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:新細明體;color:black;"  &gt;你使用共用主機；&lt;/span&gt;&lt;span  lang="EN-US" style="font-family:新細明體;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:新細明體;color:black;"  &gt;你想用少的時間去做多的工作；&lt;/span&gt;&lt;span  lang="EN-US" style="font-family:新細明體;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:新細明體;color:black;"  &gt;你想使用模版；&lt;/span&gt;&lt;span  lang="EN-US" style="font-family:新細明體;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:新細明體;color:black;"  &gt;你想用&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;美觀、&lt;span style="color:black;"&gt;方便搜索的&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:Arial;color:black;"   lang="EN-US"&gt;urls &lt;/span&gt;&lt;span style=";font-family:新細明體;color:black;"  &gt;而不是像這樣的&lt;/span&gt;&lt;span style=""&gt; &lt;span lang="EN-US"&gt;.&lt;i&gt;php&lt;/i&gt;?id=12345678&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;；&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-family:新細明體;"&gt;你不想使用命令行方式；&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-family:新細明體;"&gt;你只有一個&lt;/span&gt;&lt;span style="" lang="EN-US"&gt; mysql &lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;資料庫。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="" lang="EN-US"&gt; &lt;/span&gt;&lt;span  lang="EN-US" style="font-family:新細明體;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="" lang="EN-US"&gt;Cake&lt;i&gt;php&lt;/i&gt; &lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;與&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;Rails &lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;的優劣比較？&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="" lang="EN-US"&gt;Cake&lt;i&gt;php&lt;/i&gt;&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;像其他框架那樣遵循了&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;MVC&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;模式。我想這樣說是公平的，其開發者受到了&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;Rails&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;的啟發。然而，因為&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;&lt;i&gt;php&lt;/i&gt;&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;不同於&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;Ruby, &lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;這兩個框架沒法直接比較。在我看來&lt;/span&gt;&lt;span style=""&gt; &lt;span lang="EN-US"&gt;Rails &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;的創意很好，但你需要學習一門新的語言並且需要獨立主機。換句話說，使用&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;Cake&lt;i&gt;php&lt;/i&gt;&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;使你可以繼續留在熟悉的編程環境，使用共用主機的同時利用框架的帶來的便利。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="" lang="EN-US"&gt; &lt;/span&gt;&lt;span  lang="EN-US" style="font-family:新細明體;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="" lang="EN-US"&gt;Cake&lt;i&gt;php&lt;/i&gt;&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;能為我做什麼？&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="" lang="EN-US"&gt;  &lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;很容易地實現內容的管理（增加，更新，刪除）&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="" lang="EN-US"&gt;  &lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;使用模版樣的佈局和視圖來分離邏輯與表現&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="" lang="EN-US"&gt;  &lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;表單字段的有效性檢查&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="" lang="EN-US"&gt;  &lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;避免資料自動存入資料庫（阻止&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;SQL&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;注入式攻擊）&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="" lang="EN-US"&gt;  &lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;包含了回滾功功能（比如，在保存資料前或後執行某個行為）&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 10.5pt;"&gt;&lt;span style="font-family:新細明體;"&gt;測試資料庫的同時正式使用資料庫&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 10.5pt;"&gt;&lt;span style="" lang="EN-US"&gt; &lt;/span&gt;&lt;span  lang="EN-US" style="font-family:新細明體;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-family:新細明體;"&gt;使用&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;Cake&lt;i&gt;php&lt;/i&gt;&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;的前提條件？&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-family:新細明體;"&gt;任何安裝了&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;Apache&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;、&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;&lt;i&gt;php&lt;/i&gt; 4.3.2&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;或以上版本、&lt;/span&gt;&lt;span style=""&gt; &lt;span lang="EN-US"&gt;MySQL &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;的伺服器。如果&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;mod rewrite &lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;可配置，那麼讓你將獲得美觀的&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;urls&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;。&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;Cake&lt;i&gt;php&lt;/i&gt;&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;同樣可以運行在&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;IIS&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;上。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="" lang="EN-US"&gt; &lt;/span&gt;&lt;span  lang="EN-US" style="font-family:新細明體;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-family:新細明體;"&gt;我自己能安裝&lt;span lang="EN-US"&gt;C&lt;/span&gt;&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;ake&lt;i&gt;php&lt;/i&gt;&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;嗎？&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-family:新細明體;"&gt;可以，只需將它&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;ftp&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;上傳。你就可以運行&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;Cake&lt;i&gt;php&lt;/i&gt;&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;不需要對伺服器作任何配置變動。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="" lang="EN-US"&gt; &lt;/span&gt;&lt;span  lang="EN-US" style="font-family:新細明體;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-family:新細明體;"&gt;我需要進入命令行嗎？&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-family:新細明體;"&gt;不需要。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="" lang="EN-US"&gt; &lt;/span&gt;&lt;span  lang="EN-US" style="font-family:新細明體;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-family:新細明體;"&gt;什麼是&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;scaffolding&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;，&lt;/span&gt;&lt;span style=""&gt; &lt;span lang="EN-US"&gt;Cake&lt;i&gt;php&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;能做到嗎？&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-family:新細明體;"&gt;從本質上說，&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;scaffolding&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;意味著你可以在資料庫結構之上運行&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;script,&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;它能自動產生基本的內容管理（比如&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;web&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;表單）。是的，&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;Cake&lt;i&gt;php&lt;/i&gt;&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;可以做&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;scaffolding&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="" lang="EN-US"&gt; &lt;/span&gt;&lt;span  lang="EN-US" style="font-family:新細明體;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-family:新細明體;"&gt;包含&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;ajax&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;功能嗎？&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-family:新細明體;"&gt;是的，&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;Cake&lt;i&gt;php&lt;/i&gt;&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;包含&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;Ajax&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;功能。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="" lang="EN-US"&gt; &lt;/span&gt;&lt;span  lang="EN-US" style="font-family:新細明體;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-family:新細明體;"&gt;我如何在&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;Cake&lt;i&gt;php&lt;/i&gt;&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;中使用&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;CSS, Javascrip&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;及別的的要素？&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-family:新細明體;"&gt;你可以將所有非&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;Cake&lt;i&gt;php&lt;/i&gt;&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;檔保存在另外的目錄裏。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="" lang="EN-US"&gt; &lt;/span&gt;&lt;span  lang="EN-US" style="font-family:新細明體;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-family:新細明體;"&gt;好的，我需要&lt;/span&gt;&lt;span style="" lang="EN-US"&gt;Cake&lt;i&gt;php&lt;/i&gt;&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;！&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:新細明體;font-size:10;"  &gt;從&lt;/span&gt;&lt;a href="http://cakeforge.org/frs/?group_id=23"&gt;&lt;span style=";font-family:Verdana;font-size:10;"  lang="EN" &gt;&lt;span style=""&gt;CakeForge&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style=";font-family:新細明體;font-size:10;"  &gt;下載最新版本&lt;/span&gt;&lt;span  lang="EN-US" style="font-family:新細明體;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-4382802259907260447?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/4382802259907260447/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=4382802259907260447' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/4382802259907260447'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/4382802259907260447'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2008/05/cakephp.html' title='Cakephp 簡明指南'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-4832260692501600146</id><published>2008-05-20T05:39:00.001-07:00</published><updated>2009-01-20T20:34:36.730-08:00</updated><title type='text'>所有程式員都應該知道的5個套件(轉)</title><content type='html'>&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-family: 新細明體;"&gt;在參與了幾個大型&lt;span lang="EN-US"&gt;PHP&lt;/span&gt;項目，寫了很多&lt;span lang="EN-US"&gt;PHP&lt;/span&gt;代碼以後，我發現很多工具可以提高代碼品質，簡化發佈，使得做為&lt;span lang="EN-US"&gt;PHP&lt;/span&gt;開發人員的生涯變得輕鬆許多。許多這樣 的工具可能已經為大家所用。但是，由於一些人甚至沒有注意到這些工具的存在，我會從此開始，好了，不說廢話，下面是我認為所有&lt;span lang="EN-US"&gt;PHP&lt;/span&gt;程式師應該知道的工具 列表。 &lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;b&gt;&lt;span style="font-family: 新細明體;" lang="EN-US"&gt;Phing - &lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family: 新細明體;"&gt;一個專案構建系統&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-family: 新細明體;" lang="EN-US"&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shapetype id="_x0000_t75" coordsize="21600,21600" spt="75" preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"&gt;  &lt;v:stroke joinstyle="miter"&gt;  &lt;v:formulas&gt;   &lt;v:f eqn="if lineDrawn pixelLineWidth 0"&gt;   &lt;v:f eqn="sum @0 1 0"&gt;   &lt;v:f eqn="sum 0 0 @1"&gt;   &lt;v:f eqn="prod @2 1 2"&gt;   &lt;v:f eqn="prod @3 21600 pixelWidth"&gt;   &lt;v:f eqn="prod @3 21600 pixelHeight"&gt;   &lt;v:f eqn="sum @0 0 1"&gt;   &lt;v:f eqn="prod @6 1 2"&gt;   &lt;v:f eqn="prod @7 21600 pixelWidth"&gt;   &lt;v:f eqn="sum @8 21600 0"&gt;   &lt;v:f eqn="prod @7 21600 pixelHeight"&gt;   &lt;v:f eqn="sum @10 21600 0"&gt;  &lt;/v:formulas&gt;  &lt;v:path extrusionok="f" gradientshapeok="t" connecttype="rect"&gt;  &lt;o:lock ext="edit" aspectratio="t"&gt; &lt;/v:shapetype&gt;&lt;v:shape id="_x0000_i1025" type="#_x0000_t75" alt="Phing Logo" style="'width:97.5pt;height:29.25pt'"&gt;  &lt;v:imagedata src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image001.gif" href="http://immike.s3.amazonaws.com/wp-content/uploads/2007/08/phing-logo.gif"&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;img src="file:///C:/DOCUME%7E1/ADMINI%7E1/LOCALS%7E1/Temp/msohtml1/01/clip_image001.gif" alt="Phing Logo" shapes="_x0000_i1025" height="39" width="130" /&gt;&lt;!--[endif]--&gt;&lt;a href="http://phing.info/trac/"&gt;&lt;span style="color: rgb(0, 0, 204);"&gt;Phing&lt;/span&gt;&lt;/a&gt; &lt;/span&gt;&lt;span style="font-family: 新細明體;"&gt;是一個基於&lt;span lang="EN-US"&gt;&lt;a href="http://ant.apache.org/"&gt;&lt;span style="color: rgb(0, 0, 204);"&gt;Apache ANT&lt;/span&gt;&lt;/a&gt; &lt;/span&gt;的專案構建系統。它的名字是一個拗口的語句首字母縮寫&lt;span lang="EN-US"&gt; - &lt;b&gt;PH&lt;/b&gt;ing &lt;b&gt;I&lt;/b&gt;s &lt;b&gt;N&lt;/b&gt;ot &lt;b&gt;G&lt;/b&gt;NU make &lt;/span&gt;。&lt;span lang="EN-US"&gt;Phing&lt;/span&gt;可以做傳統構建系統比如 &lt;span lang="EN-US"&gt;&lt;a href="http://www.gnu.org/software/make/"&gt;&lt;span style="color: rgb(0, 0, 204);"&gt;GNU make&lt;/span&gt;&lt;/a&gt; &lt;/span&gt;能做的任何事情，同時沒有陡峭的學習曲線。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-family: 新細明體;"&gt;在&lt;span lang="EN-US"&gt;phing&lt;/span&gt;（以及其他的構建系統）背後的思想是評估一系列相關性，然後執行一系列&lt;span lang="EN-US"&gt;PHP&lt;/span&gt;類去正確的安裝和配置一個應用系統。構建過程用一個簡單的&lt;span lang="EN-US"&gt; XML&lt;/span&gt;配置檔控制。&lt;span lang="EN-US"&gt;Out of the box, phing&lt;/span&gt;內置可以執行一系列替換（比如：在你的開發版本和產品版本間改變&lt;span lang="EN-US"&gt;include&lt;/span&gt;路徑）、執行&lt;span lang="EN-US"&gt;SQL&lt;/span&gt;語句、移動和複製檔、運行外部腳本等等。通 過擴展包含在發行包中的&lt;span lang="EN-US"&gt;“task”&lt;/span&gt;類，你也可以創造自己的定制任務。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-family: 新細明體;"&gt;對任何需要在超過一台伺服器上部署大型&lt;span lang="EN-US"&gt;PHP&lt;/span&gt;應用的人來世，&lt;span lang="EN-US"&gt;Phing&lt;/span&gt;是一個無價之寶。同時我發現它對簡單的&lt;span lang="EN-US"&gt;PHP&lt;/span&gt;腳本也是很有用的。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;b&gt;&lt;span style="font-family: 新細明體;" lang="EN-US"&gt;Xdebug - &lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family: 新細明體;"&gt;調試和分析&lt;span lang="EN-US"&gt;&lt;a href="http://www.yeeyan.com/articles/tag/%E5%B7%A5%E5%85%B7" target="_blank"&gt;&lt;i&gt;&lt;span lang="EN-US"&gt;&lt;span lang="EN-US"&gt;工具&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-family: 新細明體;" lang="EN-US"&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1026" type="#_x0000_t75" alt="Xdebug Logo" style="'width:97.5pt;"&gt;  &lt;v:imagedata src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image002.png" href="http://immike.s3.amazonaws.com/wp-content/uploads/2007/08/xdebug-logo.png"&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;img src="file:///C:/DOCUME%7E1/ADMINI%7E1/LOCALS%7E1/Temp/msohtml1/01/clip_image003.gif" alt="Xdebug Logo" shapes="_x0000_i1026" border="0" height="75" width="130" /&gt;&lt;!--[endif]--&gt;&lt;a href="http://xdebug.org/"&gt;&lt;span style="color: rgb(0, 0, 204);"&gt;Xdebug&lt;/span&gt;&lt;/a&gt; &lt;/span&gt;&lt;span style="font-family: 新細明體;"&gt;是幫助你調試和分析腳本的一個&lt;span lang="EN-US"&gt;PHP&lt;/span&gt;擴展。&lt;span lang="EN-US"&gt;Xdebug&lt;/span&gt;中最有用的特性是在啟動後顯示的新注意資訊、警告資訊和錯誤資訊。如果一個腳本不能正常運行，&lt;span lang="EN-US"&gt;Xdebug&lt;/span&gt;將會輸出關於錯誤資訊的完整&lt;span lang="EN-US"&gt;&lt;a href="http://xdebug.org/docs/stack_trace"&gt;&lt;span style="color: rgb(0, 0, 204);" lang="EN-US"&gt;&lt;span lang="EN-US"&gt;堆跟蹤&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; &lt;/span&gt;，會附帶函數名稱、參數值、原始檔案和行號。這對於厭倦了&lt;span lang="EN-US"&gt;PHP&lt;/span&gt;默認只帶的可憐的錯誤報告功能的程式師是一個值得歡迎的特性。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-family: 新細明體;"&gt;這個擴展有很多更先進的功能，允許開發人員進行代碼覆蓋率分析，收集分析資訊以及互動式地調試腳本。&lt;span lang="EN-US"&gt;&lt;a href="http://xdebug.org/docs/profiler"&gt;&lt;span style="color: rgb(0, 0, 204);"&gt;profiling functionality&lt;/span&gt;&lt;/a&gt; &lt;/span&gt;功能尤其有用。分析器使用一個普通的輸出檔格式，允許你使用象 &lt;span lang="EN-US"&gt;&lt;a href="http://kcachegrind.sourceforge.net/cgi-bin/show.cgi"&gt;&lt;span style="color: rgb(0, 0, 204);"&gt;KCacheGrind&lt;/span&gt;&lt;/a&gt; &lt;/span&gt;這樣的工具快速發現你代碼中的瓶頸。對任何嚴肅的開發人員而言，一個好的分析器是基本工具，它使得你妥善優化你的代碼，同時避免&lt;span lang="EN-US"&gt;&lt;a href="http://immike.net/blog/2007/05/30/premature-optimization-a-serious-problem/"&gt;&lt;span style="color: rgb(0, 0, 204);" lang="EN-US"&gt;&lt;span lang="EN-US"&gt;過早優化帶來的危害&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;b&gt;&lt;span style="font-family: 新細明體;" lang="EN-US"&gt;PHPUnit - &lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family: 新細明體;"&gt;單元測試框架&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-family: 新細明體;" lang="EN-US"&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1027" type="#_x0000_t75" alt="PHPUnit logo" style="'width:70.5pt;"&gt;  &lt;v:imagedata src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image004.gif" href="http://immike.s3.amazonaws.com/wp-content/uploads/2007/08/phpunit-logo.gif"&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;img src="file:///C:/DOCUME%7E1/ADMINI%7E1/LOCALS%7E1/Temp/msohtml1/01/clip_image004.gif" alt="PHPUnit logo" shapes="_x0000_i1027" border="0" height="80" width="94" /&gt;&lt;!--[endif]--&gt;&lt;a href="http://www.phpunit.de/"&gt;&lt;span style="color: rgb(0, 0, 204);"&gt;PHPUnit&lt;/span&gt;&lt;/a&gt; &lt;/span&gt;&lt;span style="font-family: 新細明體;"&gt;是一個羽量級的&lt;span lang="EN-US"&gt;PHP&lt;/span&gt;測試框架。它是在&lt;span lang="EN-US"&gt;PHP5&lt;/span&gt;下麵的 &lt;span lang="EN-US"&gt;&lt;a href="http://www.junit.org/index.htm"&gt;&lt;span style="color: rgb(0, 0, 204);"&gt;JUnit 3.8.1&lt;/span&gt;&lt;/a&gt; &lt;/span&gt;完整移植，是&lt;span lang="EN-US"&gt;&lt;a href="http://en.wikipedia.org/wiki/XUnit"&gt;&lt;span style="color: rgb(0, 0, 204);"&gt;xUnit&lt;/span&gt;&lt;/a&gt; &lt;/span&gt;測試框架家族的一員&lt;span lang="EN-US"&gt;(&lt;/span&gt;它們基於&lt;span lang="EN-US"&gt;&lt;a href="http://immike.net/blog/category/software-patterns/"&gt;&lt;span style="color: rgb(0, 0, 204);" lang="EN-US"&gt;&lt;span lang="EN-US"&gt;軟體模式&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; &lt;/span&gt;先鋒 &lt;span lang="EN-US"&gt;&lt;a href="http://en.wikipedia.org/wiki/Kent_Beck"&gt;&lt;span style="color: rgb(0, 0, 204);"&gt;Kent Beck&lt;/span&gt;&lt;/a&gt; &lt;/span&gt;的設計&lt;span lang="EN-US"&gt;)&lt;/span&gt;。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-family: 新細明體;"&gt;單元測試是幾個現代&lt;span lang="EN-US"&gt;&lt;a href="http://en.wikipedia.org/wiki/Agile_software_development"&gt;&lt;span style="color: rgb(0, 0, 204);" lang="EN-US"&gt;&lt;span lang="EN-US"&gt;敏捷開發方法&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;的基礎，使得&lt;span lang="EN-US"&gt;PHPUnit&lt;/span&gt;成為許多大型&lt;span lang="EN-US"&gt;PHP&lt;/span&gt;項目的關鍵工具。這個工具也可以被前面討論的&lt;span lang="EN-US"&gt;Xdebug&lt;/span&gt;擴展用來生成&lt;span lang="EN-US"&gt;&lt;a href="http://www.phpunit.de/pocket_guide/3.1/en/code-coverage-analysis.html"&gt;&lt;span style="color: rgb(0, 0, 204);" lang="EN-US"&gt;&lt;span lang="EN-US"&gt;代碼覆蓋率報告&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; &lt;/span&gt;，並且可以&lt;span lang="EN-US"&gt;&lt;a href="http://www.phpunit.de/pocket_guide/3.1/en/phing.html"&gt;&lt;span style="color: rgb(0, 0, 204);" lang="EN-US"&gt;&lt;span lang="EN-US"&gt;與phing&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 204);" lang="EN-US"&gt;&lt;span lang="EN-US"&gt;集成&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;來自動測試。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;b&gt;&lt;span style="font-family: 新細明體;" lang="EN-US"&gt;Propel - ORM&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family: 新細明體;"&gt;（物件關係映射）框架&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-family: 新細明體;" lang="EN-US"&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1028" type="#_x0000_t75" alt="Propel Logo" style="'width:97.5pt;"&gt;  &lt;v:imagedata src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image005.gif" href="http://immike.s3.amazonaws.com/wp-content/uploads/2007/08/propel-logo.gif"&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;img src="file:///C:/DOCUME%7E1/ADMINI%7E1/LOCALS%7E1/Temp/msohtml1/01/clip_image005.gif" alt="Propel Logo" shapes="_x0000_i1028" border="0" height="47" width="130" /&gt;&lt;!--[endif]--&gt;&lt;a href="http://propel.phpdb.org/trac/"&gt;&lt;span style="color: rgb(0, 0, 204);"&gt;Propel&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family: 新細明體;"&gt;是一個&lt;span lang="EN-US"&gt;PHP5&lt;/span&gt;下面的&lt;span lang="EN-US"&gt;&lt;a href="http://en.wikipedia.org/wiki/Object-relational_mapping"&gt;&lt;span style="color: rgb(0, 0, 204);" lang="EN-US"&gt;&lt;span lang="EN-US"&gt;物件關係映射&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;(ORM)&lt;/span&gt;框架，它起源於&lt;span lang="EN-US"&gt;&lt;a href="http://db.apache.org/torque/"&gt;&lt;span style="color: rgb(0, 0, 204);"&gt;Apache Torque&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;項目。它提供了一個複雜但是易用的資料庫抽象層，使得你可以在&lt;span lang="EN-US"&gt;PHP&lt;/span&gt;中象使用普通類和物件一樣得使用資料庫實體。&lt;span lang="EN-US"&gt;Propel&lt;/span&gt;允許你使用一種簡單的&lt;span lang="EN-US"&gt;XML&lt;/span&gt;格式定義你的資料庫，這個&lt;span lang="EN-US"&gt;XML&lt;/span&gt;檔被用來映射資料庫，生成應用中使用的靜態類。&lt;span lang="EN-US"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-family: 新細明體;" lang="EN-US"&gt;Propel&lt;/span&gt;&lt;span style="font-family: 新細明體;"&gt;被內嵌於流行的&lt;span lang="EN-US"&gt;&lt;a href="http://www.symfony-project.com/"&gt;&lt;span style="color: rgb(0, 0, 204);"&gt;Symfony PHP&lt;/span&gt;&lt;span style="color: rgb(0, 0, 204);" lang="EN-US"&gt;&lt;span lang="EN-US"&gt;框架&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; (&lt;a href="http://propel.phpdb.org/trac/wiki/Propelled"&gt;&lt;span style="color: rgb(0, 0, 204);" lang="EN-US"&gt;&lt;span lang="EN-US"&gt;還有其他的&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;)&lt;/span&gt;，它使得代碼更靈活、模組化以及可移植。這個項目有&lt;span lang="EN-US"&gt;The project has &lt;a href="http://propel.phpdb.org/trac/wiki/Users/Documentation/1.2"&gt;&lt;span style="color: rgb(0, 0, 204);" lang="EN-US"&gt;&lt;span lang="EN-US"&gt;出色的文檔&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;，以及很棒的支持社區。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;b&gt;&lt;span style="font-family: 新細明體;" lang="EN-US"&gt;&lt;a href="http://www.yeeyan.com/articles/tag/php" target="_blank"&gt;&lt;i&gt;php&lt;/i&gt;&lt;/a&gt;MyAdmin / phpPgAdmin - &lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family: 新細明體;"&gt;基於&lt;span lang="EN-US"&gt;web&lt;/span&gt;的資料庫管理系統&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-family: 新細明體;" lang="EN-US"&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1029" type="#_x0000_t75" alt="phpMyAdmin Logo" style="'width:105pt;"&gt;  &lt;v:imagedata src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image006.gif" href="http://immike.s3.amazonaws.com/wp-content/uploads/2007/08/phpmyadmin-logo.gif"&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;img src="file:///C:/DOCUME%7E1/ADMINI%7E1/LOCALS%7E1/Temp/msohtml1/01/clip_image006.gif" alt="phpMyAdmin Logo" shapes="_x0000_i1029" border="0" height="75" width="140" /&gt;&lt;!--[endif]--&gt;&lt;/span&gt;&lt;span style="font-family: 新細明體;"&gt;歷史有點長可是還是很有用，&lt;span lang="EN-US"&gt;&lt;span style="color: rgb(0, 0, 204);"&gt;&lt;a href="http://www.yeeyan.com/articles/tag/php" target="_blank"&gt;&lt;i&gt;php&lt;/i&gt;&lt;/a&gt;MyAdmin&lt;/span&gt;&lt;/span&gt;是對於任何資料庫（對應&lt;span lang="EN-US"&gt;PostgreSQL&lt;/span&gt;和&lt;span lang="EN-US"&gt;SQLite&lt;/span&gt;是&lt;span lang="EN-US"&gt;&lt;span style="color: rgb(0, 0, 204);"&gt;&lt;a href="http://www.yeeyan.com/articles/tag/php" target="_blank"&gt;&lt;i&gt;php&lt;/i&gt;&lt;/a&gt;PgAdmin&lt;/span&gt; &lt;/span&gt;和 &lt;span lang="EN-US"&gt;&lt;span style="color: rgb(0, 0, 204);"&gt;&lt;a href="http://www.yeeyan.com/articles/tag/php" target="_blank"&gt;&lt;i&gt;php&lt;/i&gt;&lt;/a&gt;SQLiteAdmin&lt;/span&gt;&lt;/span&gt;）最有用的管理工具之一。它有助於做每一件事情&lt;span lang="EN-US"&gt; - &lt;/span&gt;從為了調試應用去創建和刪除資料庫到做備份。安裝它通常是我在一個&lt;span lang="EN-US"&gt;LAMP&lt;/span&gt;伺服器上面安裝完&lt;span lang="EN-US"&gt; Apache, PHP&lt;/span&gt;和&lt;span lang="EN-US"&gt;MySQL&lt;/span&gt;後做的第一件事情。如果你使用&lt;span lang="EN-US"&gt;MySQL&lt;/span&gt;，不知何故還沒聽說過它，那麼&lt;span lang="EN-US"&gt;&lt;a href="http://wiki.cihar.com/pma/Quick_Install"&gt;&lt;span style="color: rgb(0, 0, 204);" lang="EN-US"&gt;&lt;span lang="EN-US"&gt;現在就安裝&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; &lt;/span&gt;。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-4832260692501600146?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/4832260692501600146/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=4832260692501600146' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/4832260692501600146'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/4832260692501600146'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2008/05/5.html' title='所有程式員都應該知道的5個套件(轉)'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-6444252018693636511</id><published>2008-05-20T05:37:00.000-07:00</published><updated>2008-07-30T23:20:23.988-07:00</updated><title type='text'>優化PHP程式的40條建議</title><content type='html'>&lt;p class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;1.&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;如果一個方法可靜態化，就對它做靜態聲明。速率可提升至&lt;/span&gt;&lt;span lang="EN-US"&gt;4&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;倍。&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;br /&gt;&lt;br /&gt;2.echo &lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;比&lt;/span&gt;&lt;span lang="EN-US"&gt; print &lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;快。&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;br /&gt;&lt;br /&gt;3.&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;使用&lt;/span&gt;&lt;span lang="EN-US"&gt;echo&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;的多重參數（譯注：指用逗號而不是句點）代替字元串連接。&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;br /&gt;&lt;br /&gt;4.&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;在執行&lt;/span&gt;&lt;span lang="EN-US"&gt;for&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;迴圈之前確定最大循環數，不要每迴圈一次都計算最大值。&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;br /&gt;&lt;br /&gt;5.&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;登出那些不用的變數尤其是大陣列，以便釋放記憶體。&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;br /&gt;&lt;br /&gt;6.&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;儘量避免使用&lt;/span&gt;&lt;span lang="EN-US"&gt;__get&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;，&lt;/span&gt;&lt;span lang="EN-US"&gt;__set&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;，&lt;/span&gt;&lt;span lang="EN-US"&gt;__autoload&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;。&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;br /&gt;&lt;br /&gt;7.require_once()&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;代價昂貴。&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;br /&gt;&lt;br /&gt;8.&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;在包含檔時使用完整路徑，解析作業系統路徑所需的時間會更少。&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;br /&gt;&lt;br /&gt;9.&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;如果你想知道腳本開始執行（譯注：即伺服器端收到用戶端請求）的時刻，使用&lt;/span&gt;&lt;span lang="EN-US"&gt;$_SERVER[‘REQUEST_TIME’]&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;要好於&lt;/span&gt;&lt;span lang="EN-US"&gt;time()&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;。&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;br /&gt;&lt;br /&gt;10.&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;函數代替正則運算式完成相同功能。&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;br /&gt;&lt;br /&gt;11.str_replace&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;函數比&lt;/span&gt;&lt;span lang="EN-US"&gt;preg_replace&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;函數快，但&lt;/span&gt;&lt;span lang="EN-US"&gt;strtr&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;函數的效率是&lt;/span&gt;&lt;span lang="EN-US"&gt;str_replace&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;函數的四倍。&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;br /&gt;&lt;br /&gt;12.&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;如果一個字串替換函數，可接受陣列或字元作為參數，並且參數長度不太長，那麼可以考慮額外寫一段替換代碼，使得每次傳遞參數是一個字元，而不是只寫一行代碼接受陣列作為查詢和替換的參數。&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;br /&gt;&lt;br /&gt;13.&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;使用選擇分支語句（譯注：即&lt;/span&gt;&lt;span lang="EN-US"&gt;switch case&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;）好於使用多個&lt;/span&gt;&lt;span lang="EN-US"&gt;if&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;，&lt;/span&gt;&lt;span lang="EN-US"&gt;else if&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;語句。&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;br /&gt;&lt;br /&gt;14.&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;用&lt;/span&gt;&lt;span lang="EN-US"&gt;@&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;遮罩錯誤消息的做法非常低效。&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;br /&gt;&lt;br /&gt;15.&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;打開&lt;/span&gt;&lt;span lang="EN-US"&gt;apache&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;的&lt;/span&gt;&lt;span lang="EN-US"&gt;mod_deflate&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;模組。&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;br /&gt;&lt;br /&gt;16.&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;資料庫連接當使用完畢時應關掉。&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;br /&gt;&lt;br /&gt;17.$row[‘id’]&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;的效率是&lt;/span&gt;&lt;span lang="EN-US"&gt;$row[id]&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;的&lt;/span&gt;&lt;span lang="EN-US"&gt;7&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;倍。&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;br /&gt;&lt;br /&gt;18.&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;錯誤消息代價昂貴。&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;br /&gt;&lt;br /&gt;19.&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;儘量不要在&lt;/span&gt;&lt;span lang="EN-US"&gt;for&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;迴圈中使用函數，比如&lt;/span&gt;&lt;span lang="EN-US"&gt;for ($x=0; $x &lt;&gt;&lt;span style="font-family:新細明體;"&gt;每迴圈一次都會調用&lt;/span&gt;&lt;span lang="EN-US"&gt;count()&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;函數。&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;br /&gt;&lt;br /&gt;20.&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;在方法中遞增局部變數，速度是最快的。幾乎與在函數中調用局部變數的速度相當。&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;br /&gt;&lt;br /&gt;21.&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;遞增一個總體變數要比遞增一個局部變數慢&lt;/span&gt;&lt;span lang="EN-US"&gt;2&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;倍。&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;br /&gt;&lt;br /&gt;22.&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;遞增一個物件屬性（如：&lt;/span&gt;&lt;span lang="EN-US"&gt;$this-&gt;prop++&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;）要比遞增一個局部變數慢&lt;/span&gt;&lt;span lang="EN-US"&gt;3&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;倍。&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;br /&gt;&lt;br /&gt;23.&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;遞增一個未預定義的局部變數要比遞增一個預定義的局部變數慢&lt;/span&gt;&lt;span lang="EN-US"&gt;9&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;至&lt;/span&gt;&lt;span lang="EN-US"&gt;10&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;倍。&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;br /&gt;&lt;br /&gt;24.&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;僅定義一個局部變數而沒在函數中調用它，同樣會減慢速度（其程度相當於遞增一個局部變數）。&lt;/span&gt;&lt;span lang="EN-US"&gt;PHP&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;大概會檢查看是否存在總體變數。&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;br /&gt;&lt;br /&gt;25.&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;方法調用看來與類中定義的方法的數量無關，因為我（在測試方法之前和之後都）添加了&lt;/span&gt;&lt;span lang="EN-US"&gt;10&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;個方法，但性能上沒有變化。&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;br /&gt;&lt;br /&gt;26.&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;派生類中的方法運行起來要快於在基類中定義的同樣的方法。&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;br /&gt;&lt;br /&gt;27.&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;調用帶有一個參數的空函數，其花費的時間相當於執行&lt;/span&gt;&lt;span lang="EN-US"&gt;7&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;至&lt;/span&gt;&lt;span lang="EN-US"&gt;8&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;次的局部變數遞增操作。類似的方法調用所花費的時間接近於&lt;/span&gt;&lt;span lang="EN-US"&gt;15&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;次的局部變數遞增操作。&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;br /&gt;&lt;br /&gt;28.&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;用單引號代替雙引號來包含字串，這樣做會更快一些。因為&lt;/span&gt;&lt;span lang="EN-US"&gt;PHP&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;會在雙引號包圍的字串中搜尋變數，單引號則不會。當然，只有當你不需要在字串中包含變數時才可以這麼做。&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;br /&gt;&lt;br /&gt;29.&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;輸出多個字串時，用逗號代替句點來分隔字串，速度更快。注意：只有&lt;/span&gt;&lt;span lang="EN-US"&gt;echo&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;能這麼做，它是一種可以把多個字串當作參數的&lt;/span&gt;&lt;span lang="EN-US"&gt;“&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;函數&lt;/span&gt;&lt;span lang="EN-US"&gt;”&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;（譯注：&lt;/span&gt;&lt;span lang="EN-US"&gt;PHP&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;手冊中說&lt;/span&gt;&lt;span lang="EN-US"&gt;echo&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;是語言結構，不是真正的函數，故把函數加上了雙引號）。&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;br /&gt;&lt;br /&gt;30.Apache&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;解析一個&lt;/span&gt;&lt;span lang="EN-US"&gt;PHP&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;腳本的時間要比解析一個靜態&lt;/span&gt;&lt;span lang="EN-US"&gt;HTML&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;頁面慢&lt;/span&gt;&lt;span lang="EN-US"&gt;2&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;至&lt;/span&gt;&lt;span lang="EN-US"&gt;10&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;倍。儘量多用靜態&lt;/span&gt;&lt;span lang="EN-US"&gt;HTML&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;頁面，少用腳本。&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;br /&gt;&lt;br /&gt;31.&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;除非腳本可以緩存，否則每次調用時都會重新編譯一次。引入一套&lt;/span&gt;&lt;span lang="EN-US"&gt;PHP&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;緩存機制通常可以提升&lt;/span&gt;&lt;span lang="EN-US"&gt;25%&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;至&lt;/span&gt;&lt;span lang="EN-US"&gt;100%&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;的性能，以免除編譯開銷。&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;br /&gt;&lt;br /&gt;32.&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;儘量做緩存，可使用&lt;/span&gt;&lt;span lang="EN-US"&gt;memcached&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;。&lt;/span&gt;&lt;span lang="EN-US"&gt;memcached&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;是一款高性能的記憶體物件緩存系統，可用來加速動態&lt;/span&gt;&lt;span lang="EN-US"&gt;Web&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;應用程式，減輕資料庫負載。對運算碼&lt;/span&gt;&lt;span lang="EN-US"&gt; (OP code)&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;的緩存很有用，使得腳本不必為每個請求做重新編譯。&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;br /&gt;&lt;br /&gt;33. &lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;當操作字串並需要檢驗其長度是否滿足某種要求時，你想當然地會使用&lt;/span&gt;&lt;span lang="EN-US"&gt;strlen()&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;函數。此函數執行起來相當快，因為它不做任何計算，只返回在&lt;/span&gt;&lt;span lang="EN-US"&gt;zval &lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;結構（&lt;/span&gt;&lt;span lang="EN-US"&gt;C&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;的內置資料結構，用於存儲&lt;/span&gt;&lt;span lang="EN-US"&gt;PHP&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;變數）中存儲的已知字串長度。但是，由於&lt;/span&gt;&lt;span lang="EN-US"&gt;strlen()&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;是函數，多多少少會有些慢，因為函數調用會經過諸多步&lt;/span&gt; &lt;span style="font-family:新細明體;"&gt;驟，如字母小寫化（譯注：指函數名小寫化，&lt;/span&gt;&lt;span lang="EN-US"&gt;PHP&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;不區分函數名大小寫）、哈希查找，會跟隨被調用的函數一起執行。在某些情況下，你可以使用&lt;/span&gt;&lt;span lang="EN-US"&gt;isset() &lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;技巧加速執行你的代碼。&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;（舉例如下）&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;br /&gt;if (strlen($foo) &lt;&gt;&lt;span style="font-family:新細明體;"&gt;（與下面的技巧做比較）&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;br /&gt;if (!isset($foo{5})) { echo "Foo is too short"; }&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;調用&lt;/span&gt;&lt;span lang="EN-US"&gt;isset()&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;恰巧比&lt;/span&gt;&lt;span lang="EN-US"&gt;strlen()&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;快，因為與後者不同的是，&lt;/span&gt;&lt;span lang="EN-US"&gt;isset()&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;作為一種語言結構，意味著它的執行不需要函數查找和字母小寫化。也就是說，實際上在檢驗字串長度的頂層代碼中你沒有花太多開銷。&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;br /&gt;&lt;br /&gt;34. &lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;當執行變數&lt;/span&gt;&lt;span lang="EN-US"&gt;$i&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;的遞增或遞減時，&lt;/span&gt;&lt;span lang="EN-US"&gt;$i++&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;會比&lt;/span&gt;&lt;span lang="EN-US"&gt;++$i&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;慢一些。這種差異是&lt;/span&gt;&lt;span lang="EN-US"&gt;PHP&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;特有的，並不適用於其他語言，所以請不要修改你的&lt;/span&gt;&lt;span lang="EN-US"&gt;C&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;或&lt;/span&gt;&lt;span lang="EN-US"&gt;Java&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;代碼並指望它&lt;/span&gt; &lt;span style="font-family:新細明體;"&gt;們能立即變快，沒用的。&lt;/span&gt;&lt;span lang="EN-US"&gt;++$i&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;更快是因為它只需要&lt;/span&gt;&lt;span lang="EN-US"&gt;3&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;條指令&lt;/span&gt;&lt;span lang="EN-US"&gt;(opcodes)&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;，&lt;/span&gt;&lt;span lang="EN-US"&gt;$i++&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;則需要&lt;/span&gt;&lt;span lang="EN-US"&gt;4&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;條指令。後置遞增實際上會產生一個臨時變數，這個臨時變&lt;/span&gt; &lt;span style="font-family:新細明體;"&gt;量隨後被遞增。而前置遞增直接在原值上遞增。這是最&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;a href="http://www.yeeyan.com/articles/tag/%E4%BC%98%E5%8C%96" target="_blank"&gt;&lt;em&gt;&lt;span  lang="EN-US" style="font-family:新細明體;"&gt;&lt;span lang="EN-US"&gt;優化&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;處理的一種，正如&lt;/span&gt;&lt;span lang="EN-US"&gt;Zend&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;的&lt;/span&gt;&lt;span lang="EN-US"&gt;PHP&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;優化器所作的那樣。牢記這個優化處理不失為一個好主意，因為並不是所有的指令優化器都會做同樣的優化處理，並且存在大量沒有裝配指令優化器的互聯網服務提供商（&lt;/span&gt;&lt;span lang="EN-US"&gt;ISPs&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;）和伺服器。&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;br /&gt;&lt;br /&gt;35.&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;並不是事必面向物件&lt;/span&gt;&lt;span lang="EN-US"&gt;(OOP)&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;，面向物件往往開銷很大，每個方法和物件調用都會消耗很多記憶體。&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;br /&gt;&lt;br /&gt;36.&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;並非要用類實現所有的資料結構，陣列也很有用。&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;br /&gt;&lt;br /&gt;37.&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;不要把方法細分得過多，仔細想想你真正打算重用的是哪些代碼？&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;br /&gt;&lt;br /&gt;38.&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;當你需要時，你總能把代碼分解成方法。&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;br /&gt;&lt;br /&gt;39.&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;儘量採用大量的&lt;/span&gt;&lt;span lang="EN-US"&gt;PHP&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;內置函數。&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;br /&gt;&lt;br /&gt;40.&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;如果在代碼中存在大量耗時的函數，你可以考慮用&lt;/span&gt;&lt;span lang="EN-US"&gt;C&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;擴展的方式實現它們。&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;br /&gt;&lt;br /&gt;41.&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;評估檢驗&lt;/span&gt;&lt;span lang="EN-US"&gt;(profile)&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;你的代碼。檢驗器會告訴你，代碼的哪些部分消耗了多少時間。&lt;/span&gt;&lt;span lang="EN-US"&gt;Xdebug&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;調試器包含了檢驗程式，評估檢驗總體上可以顯示出代碼的瓶頸。&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;br /&gt;&lt;br /&gt;42.mod_zip&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;可作為&lt;/span&gt;&lt;span lang="EN-US"&gt;Apache&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;模組，用來即時壓縮你的資料，並可讓資料傳輸量降低&lt;/span&gt;&lt;span lang="EN-US"&gt;80%&lt;/span&gt;&lt;span style="font-family:新細明體;"&gt;。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-6444252018693636511?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/6444252018693636511/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=6444252018693636511' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/6444252018693636511'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/6444252018693636511'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2008/05/php40.html' title='優化PHP程式的40條建議'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-8446321727914756538</id><published>2008-05-20T05:35:00.000-07:00</published><updated>2008-05-20T05:37:04.024-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='template'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>24個頂級PHP樣板引擎</title><content type='html'>&lt;p&gt;為了找到一個好的&lt;span lang="EN-US"&gt;&lt;a href="http://www.yeeyan.com/articles/tag/%E6%A8%A1%E6%9D%BF" target="_blank"&gt;&lt;em&gt;&lt;span style="font-family: 新細明體;" lang="EN-US"&gt;&lt;span lang="EN-US"&gt;範本&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/a&gt;&lt;a href="http://www.yeeyan.com/articles/tag/%E5%BC%95%E6%93%8E" target="_blank"&gt;&lt;em&gt;&lt;span style="font-family: 新細明體;" lang="EN-US"&gt;&lt;span lang="EN-US"&gt;引擎&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/a&gt;&lt;/span&gt;，在網上進行搜索，目前已經整理出了以下名單：&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span lang="EN-US"&gt;&lt;a href="http://smarty.php.net/"&gt;&lt;span style="color: rgb(255, 120, 0);"&gt;Smarty&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;Smarty&lt;/span&gt;的特點是將&lt;span lang="EN-US"&gt;&lt;a href="http://www.yeeyan.com/articles/tag/%E6%A8%A1%E6%9D%BF" target="_blank"&gt;&lt;em&gt;&lt;span style="font-family: 新細明體;" lang="EN-US"&gt;&lt;span lang="EN-US"&gt;範本&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/a&gt;&lt;/span&gt;編譯成&lt;span lang="EN-US"&gt;PHP&lt;/span&gt;腳本，然後執行這些腳本。很快，非常靈活。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span lang="EN-US"&gt;&lt;a href="http://www.phpguru.org/static/template.html"&gt;&lt;span style="color: rgb(255, 120, 0);"&gt;Heyes Template Class&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;一個非常容易使用，但功能強大並且快速的&lt;span lang="EN-US"&gt;&lt;a href="http://www.yeeyan.com/articles/tag/%E6%A8%A1%E6%9D%BF" target="_blank"&gt;&lt;em&gt;&lt;span style="font-family: 新細明體;" lang="EN-US"&gt;&lt;span lang="EN-US"&gt;範本&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/a&gt;&lt;a href="http://www.yeeyan.com/articles/tag/%E5%BC%95%E6%93%8E" target="_blank"&gt;&lt;em&gt;&lt;span style="font-family: 新細明體;" lang="EN-US"&gt;&lt;span lang="EN-US"&gt;引擎&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/a&gt;&lt;/span&gt;，它幫助你把頁面佈局和設計從代碼中分離。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span lang="EN-US"&gt;&lt;a href="http://www.thewebmasters.net/php/FastTemplate.phtml"&gt;&lt;span style="color: rgb(255, 120, 0);"&gt;FastTemplate&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;一個簡單的變數插值&lt;span lang="EN-US"&gt;&lt;a href="http://www.yeeyan.com/articles/tag/%E6%A8%A1%E6%9D%BF" target="_blank"&gt;&lt;em&gt;&lt;span style="font-family: 新細明體;" lang="EN-US"&gt;&lt;span lang="EN-US"&gt;範本&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/a&gt;&lt;/span&gt;類，它分析你的範本，把變數的值從&lt;span lang="EN-US"&gt;HTML&lt;/span&gt;代碼中分離處理。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span lang="EN-US"&gt;&lt;a href="http://www.maiatech.com/shellpage.php"&gt;&lt;span style="color: rgb(255, 120, 0);"&gt;ShellPage&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;一個簡單易用的類，可以讓你的整個網站佈局基於&lt;span lang="EN-US"&gt;&lt;a href="http://www.yeeyan.com/articles/tag/%E6%A8%A1%E6%9D%BF" target="_blank"&gt;&lt;em&gt;&lt;span style="font-family: 新細明體;" lang="EN-US"&gt;&lt;span lang="EN-US"&gt;範本&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/a&gt;&lt;/span&gt;檔，修改範本就能改變整個站點。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span lang="EN-US"&gt;&lt;a href="http://www.script.gr/go/scripts/STP/"&gt;&lt;span style="color: rgb(255, 120, 0);"&gt;STP Simple Template Parser&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;一個簡單、羽量級並且易於使用的&lt;span lang="EN-US"&gt;&lt;a href="http://www.yeeyan.com/articles/tag/%E6%A8%A1%E6%9D%BF" target="_blank"&gt;&lt;em&gt;&lt;span style="font-family: 新細明體;" lang="EN-US"&gt;&lt;span lang="EN-US"&gt;範本&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/a&gt;&lt;/span&gt;分析類。它可以從多個範本中組裝一個頁面，把結果頁面輸出到流覽器或者檔系統。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span lang="EN-US"&gt;&lt;a href="http://www.net-track.ch/opensource/template/"&gt;&lt;span style="color: rgb(255, 120, 0);"&gt;OO Template Class&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;一個你可以用在自己程式中的面向兌現的&lt;span lang="EN-US"&gt;&lt;a href="http://www.yeeyan.com/articles/tag/%E6%A8%A1%E6%9D%BF" target="_blank"&gt;&lt;em&gt;&lt;span style="font-family: 新細明體;" lang="EN-US"&gt;&lt;span lang="EN-US"&gt;範本&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/a&gt;&lt;/span&gt;類。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span lang="EN-US"&gt;&lt;a href="http://sourceforge.net/projects/simpletpl"&gt;&lt;span style="color: rgb(255, 120, 0);"&gt;SimpleTemplate&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;一個可以創建和結構化網站的&lt;span lang="EN-US"&gt;&lt;a href="http://www.yeeyan.com/articles/tag/%E6%A8%A1%E6%9D%BF" target="_blank"&gt;&lt;em&gt;&lt;span style="font-family: 新細明體;" lang="EN-US"&gt;&lt;span lang="EN-US"&gt;範本&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/a&gt;&lt;a href="http://www.yeeyan.com/articles/tag/%E5%BC%95%E6%93%8E" target="_blank"&gt;&lt;em&gt;&lt;span style="font-family: 新細明體;" lang="EN-US"&gt;&lt;span lang="EN-US"&gt;引擎&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/a&gt;&lt;/span&gt;。它可以解析和編譯範本。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span lang="EN-US"&gt;&lt;a href="http://www.massassi.com/bTemplate/"&gt;&lt;span style="color: rgb(255, 120, 0);"&gt;bTemplate&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;短小但是快速的&lt;span lang="EN-US"&gt;&lt;a href="http://www.yeeyan.com/articles/tag/%E6%A8%A1%E6%9D%BF" target="_blank"&gt;&lt;em&gt;&lt;span style="font-family: 新細明體;" lang="EN-US"&gt;&lt;span lang="EN-US"&gt;範本&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/a&gt;&lt;/span&gt;類，允許你把&lt;span lang="EN-US"&gt;PHP&lt;/span&gt;邏輯代碼從&lt;span lang="EN-US"&gt;HTML&lt;/span&gt;修飾代碼中分離。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span lang="EN-US"&gt;&lt;a href="http://phpsavant.com/"&gt;&lt;span style="color: rgb(255, 120, 0);"&gt;Savant&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;一個強大且羽量級的&lt;span lang="EN-US"&gt;PEAR&lt;/span&gt;相容&lt;span lang="EN-US"&gt;&lt;a href="http://www.yeeyan.com/articles/tag/%E6%A8%A1%E6%9D%BF" target="_blank"&gt;&lt;em&gt;&lt;span style="font-family: 新細明體;" lang="EN-US"&gt;&lt;span lang="EN-US"&gt;範本&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/a&gt;&lt;/span&gt;系統。它是非編譯型的，使用&lt;span lang="EN-US"&gt;PHP&lt;/span&gt;語言本身做為它的範本語言。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span lang="EN-US"&gt;&lt;a href="http://ets.sourceforge.net/"&gt;&lt;span style="color: rgb(255, 120, 0);"&gt;ETS - easy template system&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;可以使用完全相同資料重組&lt;span lang="EN-US"&gt;&lt;a href="http://www.yeeyan.com/articles/tag/%E6%A8%A1%E6%9D%BF" target="_blank"&gt;&lt;em&gt;&lt;span style="font-family: 新細明體;" lang="EN-US"&gt;&lt;span lang="EN-US"&gt;範本&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/a&gt;&lt;/span&gt;的範本系統。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span lang="EN-US"&gt;&lt;a href="http://macdeviant.com/scripts/template/index.php"&gt;&lt;span style="color: rgb(255, 120, 0);"&gt;EasyTemplatePHP&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;適用於你的站點的一個簡單但是強大的&lt;span lang="EN-US"&gt;&lt;a href="http://www.yeeyan.com/articles/tag/%E6%A8%A1%E6%9D%BF" target="_blank"&gt;&lt;em&gt;&lt;span style="font-family: 新細明體;" lang="EN-US"&gt;&lt;span lang="EN-US"&gt;範本&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/a&gt;&lt;/span&gt;系統。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span lang="EN-US"&gt;&lt;a href="http://vlib.activefish.com/"&gt;&lt;span style="color: rgb(255, 120, 0);"&gt;vlibTemplate&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;一個快速、全能的&lt;span lang="EN-US"&gt;&lt;a href="http://www.yeeyan.com/articles/tag/%E6%A8%A1%E6%9D%BF" target="_blank"&gt;&lt;em&gt;&lt;span style="font-family: 新細明體;" lang="EN-US"&gt;&lt;span lang="EN-US"&gt;範本&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/a&gt;&lt;/span&gt;系統，它包含一個緩存和調試類。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span lang="EN-US"&gt;&lt;a href="http://avantemplate.sourceforge.net/"&gt;&lt;span style="color: rgb(255, 120, 0);"&gt;AvanTemplate&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;多位元組安全的&lt;span lang="EN-US"&gt;&lt;a href="http://www.yeeyan.com/articles/tag/%E6%A8%A1%E6%9D%BF" target="_blank"&gt;&lt;em&gt;&lt;span style="font-family: 新細明體;" lang="EN-US"&gt;&lt;span lang="EN-US"&gt;範本&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/a&gt;&lt;a href="http://www.yeeyan.com/articles/tag/%E5%BC%95%E6%93%8E" target="_blank"&gt;&lt;em&gt;&lt;span style="font-family: 新細明體;" lang="EN-US"&gt;&lt;span lang="EN-US"&gt;引擎&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/a&gt;&lt;/span&gt;，佔用很少系統資源。它支援變數替換，內容塊可以設置顯示或隱藏。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span lang="EN-US"&gt;&lt;a href="http://www.grafxsoftware.com/product.php?id=26"&gt;&lt;span style="color: rgb(255, 120, 0);"&gt;Grafx Software’s Fast Template&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;一個修改版本的&lt;span lang="EN-US"&gt;Fast Template&lt;/span&gt;系統，它包括緩存功能，調試控制臺以及沉默去除為賦值塊。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span lang="EN-US"&gt;&lt;a href="http://templatepower.codocad.com/"&gt;&lt;span style="color: rgb(255, 120, 0);"&gt;TemplatePower&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;一個快速、簡單、功能強大的&lt;span lang="EN-US"&gt;&lt;a href="http://www.yeeyan.com/articles/tag/%E6%A8%A1%E6%9D%BF" target="_blank"&gt;&lt;em&gt;&lt;span style="font-family: 新細明體;" lang="EN-US"&gt;&lt;span lang="EN-US"&gt;範本&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/a&gt;&lt;/span&gt;類。主要功能有嵌套的動態塊支援，塊&lt;span lang="EN-US"&gt;/&lt;/span&gt;檔包含支援以及顯示&lt;span lang="EN-US"&gt;/&lt;/span&gt;隱藏未賦值的變數。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span lang="EN-US"&gt;&lt;a href="http://www.virtualcreations.com.au/mark/tagtemplate.htm"&gt;&lt;span style="color: rgb(255, 120, 0);"&gt;TagTemplate&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;這個庫的功能被設計來使用&lt;span lang="EN-US"&gt;&lt;a href="http://www.yeeyan.com/articles/tag/%E6%A8%A1%E6%9D%BF" target="_blank"&gt;&lt;em&gt;&lt;span style="font-family: 新細明體;" lang="EN-US"&gt;&lt;span lang="EN-US"&gt;範本&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/a&gt;&lt;/span&gt;檔，同時允許你從&lt;span lang="EN-US"&gt;HTML&lt;/span&gt;檔檢索資訊。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span lang="EN-US"&gt;&lt;a href="http://htmltmpl.sourceforge.net/"&gt;&lt;span style="color: rgb(255, 120, 0);"&gt;htmltmpl: templating engine&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;一個適用於&lt;span lang="EN-US"&gt;Python&lt;/span&gt;和&lt;span lang="EN-US"&gt;PHP&lt;/span&gt;的&lt;span lang="EN-US"&gt;&lt;a href="http://www.yeeyan.com/articles/tag/%E6%A8%A1%E6%9D%BF" target="_blank"&gt;&lt;em&gt;&lt;span style="font-family: 新細明體;" lang="EN-US"&gt;&lt;span lang="EN-US"&gt;範本&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/a&gt;&lt;a href="http://www.yeeyan.com/articles/tag/%E5%BC%95%E6%93%8E" target="_blank"&gt;&lt;em&gt;&lt;span style="font-family: 新細明體;" lang="EN-US"&gt;&lt;span lang="EN-US"&gt;引擎&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/a&gt;&lt;/span&gt;。它面向希望在專案中分離代碼和設計的&lt;span lang="EN-US"&gt;web&lt;/span&gt;應用開發人員。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span lang="EN-US"&gt;&lt;a href="http://www.cmarshall.net/DreamweaverTemplate"&gt;&lt;span style="color: rgb(255, 120, 0);"&gt;PHP Class for Parsing Dreamweaver templates&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;一個分析&lt;span lang="EN-US"&gt;Dreamweaver&lt;a href="http://www.yeeyan.com/articles/tag/%E6%A8%A1%E6%9D%BF" target="_blank"&gt;&lt;em&gt;&lt;span style="font-family: 新細明體;" lang="EN-US"&gt;&lt;span lang="EN-US"&gt;範本&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/a&gt;&lt;/span&gt;的簡單類，被用於&lt;span lang="EN-US"&gt;Gallery 2 &lt;/span&gt;和&lt;span lang="EN-US"&gt;WordPress&lt;/span&gt;的自定義模組中。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span lang="EN-US"&gt;&lt;a href="http://www.source-code.biz/"&gt;&lt;span style="color: rgb(255, 120, 0);"&gt;MiniTemplator (Template Engine)&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;針對&lt;span lang="EN-US"&gt;HTML&lt;/span&gt;檔的一個緊湊型&lt;span lang="EN-US"&gt;&lt;a href="http://www.yeeyan.com/articles/tag/%E6%A8%A1%E6%9D%BF" target="_blank"&gt;&lt;em&gt;&lt;span style="font-family: 新細明體;" lang="EN-US"&gt;&lt;span lang="EN-US"&gt;範本&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/a&gt;&lt;a href="http://www.yeeyan.com/articles/tag/%E5%BC%95%E6%93%8E" target="_blank"&gt;&lt;em&gt;&lt;span style="font-family: 新細明體;" lang="EN-US"&gt;&lt;span lang="EN-US"&gt;引擎&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/a&gt;&lt;/span&gt;。對於範本變數和塊定義它具有簡單的語法。其中塊可以嵌套。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span lang="EN-US"&gt;&lt;a href="http://www.analysisandsolutions.com/software/layout/layout.htm"&gt;&lt;span style="color: rgb(255, 120, 0);"&gt;Layout Solution&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;簡化網站開發和維護。它擁有常用的變數和頁面元素使你不需要重複做頁面佈局工作。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span lang="EN-US"&gt;&lt;a href="http://zoned.net:81/%7Exkahn/php/fasttemplate/"&gt;&lt;span style="color: rgb(255, 120, 0);"&gt;Cached Fast Template&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;它已經納入 &lt;span lang="EN-US"&gt;&lt;a href="http://php.resourceindex.com/detail/00015.html"&gt;&lt;span style="color: rgb(255, 120, 0);"&gt;FastTemplate&lt;/span&gt;&lt;/a&gt; &lt;/span&gt;，允許你緩存範本檔，甚至可以在分離的塊內容上緩存不同的規格。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span lang="EN-US"&gt;&lt;a href="http://www.tinybutstrong.com/"&gt;&lt;span style="color: rgb(255, 120, 0);"&gt;TinyButStrong&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;一個支持&lt;span lang="EN-US"&gt;MySQL, Odbc, Sql-Server&lt;/span&gt;和&lt;span lang="EN-US"&gt;ADODB&lt;/span&gt;的&lt;span lang="EN-US"&gt;&lt;a href="http://www.yeeyan.com/articles/tag/%E6%A8%A1%E6%9D%BF" target="_blank"&gt;&lt;em&gt;&lt;span style="font-family: 新細明體;" lang="EN-US"&gt;&lt;span lang="EN-US"&gt;範本&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/a&gt;&lt;a href="http://www.yeeyan.com/articles/tag/%E5%BC%95%E6%93%8E" target="_blank"&gt;&lt;em&gt;&lt;span style="font-family: 新細明體;" lang="EN-US"&gt;&lt;span lang="EN-US"&gt;引擎&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/a&gt;&lt;/span&gt;。它包含&lt;span lang="EN-US"&gt;7&lt;/span&gt;個方法和兩個屬性。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span lang="EN-US"&gt;&lt;a href="http://www.sitepoint.com/article/beyond-template-engine"&gt;&lt;span style="color: rgb(255, 120, 0);"&gt;Brian Lozier’s &lt;/span&gt;&lt;/a&gt;&lt;span style="color: rgb(255, 120, 0);"&gt;&lt;a href="http://www.yeeyan.com/articles/tag/php" target="_blank"&gt;&lt;em&gt;&lt;span style="font-family: 新細明體;"&gt;php&lt;/span&gt;&lt;/em&gt;&lt;/a&gt; based template engine&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;只有&lt;span lang="EN-US"&gt;2K&lt;/span&gt;大小，非常快並且是物件導向設計。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span lang="EN-US"&gt;&lt;a href="http://www.phpwact.org/"&gt;&lt;span style="color: rgb(255, 120, 0);"&gt;WACT&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;一個從設計中分離代碼的&lt;span lang="EN-US"&gt;&lt;a href="http://www.yeeyan.com/articles/tag/%E6%A8%A1%E6%9D%BF" target="_blank"&gt;&lt;em&gt;&lt;span style="font-family: 新細明體;" lang="EN-US"&gt;&lt;span lang="EN-US"&gt;範本&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/a&gt;&lt;a href="http://www.yeeyan.com/articles/tag/%E5%BC%95%E6%93%8E" target="_blank"&gt;&lt;em&gt;&lt;span style="font-family: 新細明體;" lang="EN-US"&gt;&lt;span lang="EN-US"&gt;引擎&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/a&gt;&lt;/span&gt;。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span lang="EN-US"&gt;&lt;a href="http://phptal.motion-twin.com/"&gt;&lt;span style="color: rgb(255, 120, 0);"&gt;PHPTAL&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;一個&lt;span lang="EN-US"&gt;PHP&lt;/span&gt;下面的&lt;span lang="EN-US"&gt;XML/XHTML&lt;a href="http://www.yeeyan.com/articles/tag/%E6%A8%A1%E6%9D%BF" target="_blank"&gt;&lt;em&gt;&lt;span style="font-family: 新細明體;" lang="EN-US"&gt;&lt;span lang="EN-US"&gt;範本&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/a&gt;&lt;/span&gt;庫。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-8446321727914756538?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/8446321727914756538/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=8446321727914756538' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/8446321727914756538'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/8446321727914756538'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2008/05/24php.html' title='24個頂級PHP樣板引擎'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-2613562418358464765</id><published>2008-05-20T05:34:00.001-07:00</published><updated>2008-05-20T05:34:58.281-07:00</updated><title type='text'>PHP6的新特性</title><content type='html'>&lt;p&gt;&lt;span lang="EN-US"&gt;PHP&lt;/span&gt;的下一個版本，&lt;span lang="EN-US"&gt;V6&lt;/span&gt;，包含了很的&lt;span lang="EN-US"&gt;&lt;a href="http://www.yeeyan.com/articles/tag/%E6%96%B0%E7%89%B9%E6%80%A7" target="_blank"&gt;&lt;em&gt;&lt;span style="font-family: 新細明體;" lang="EN-US"&gt;&lt;span lang="EN-US"&gt;新特性&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/a&gt;&lt;/span&gt;和語法改進，會使它在面向物件方面性更易用。其他重要的特性：比如在核心函數中對&lt;span lang="EN-US"&gt;Unicode &lt;/span&gt;（統一編碼）的支援，這意味著&lt;span lang="EN-US"&gt; PHP 6&lt;/span&gt;提供了更好的更可靠國際支持。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span lang="EN-US"&gt;PHP&lt;/span&gt;已經很流行，被無數的站點使用，被大部分網際網路接入商所支援，被&lt;span lang="EN-US"&gt;Yahoo&lt;/span&gt;這樣的大&lt;span lang="EN-US"&gt;&lt;a href="http://www.yeeyan.com/articles/tag/%E7%BD%91%E7%BB%9C" target="_blank"&gt;&lt;em&gt;&lt;span style="font-family: 新細明體;" lang="EN-US"&gt;&lt;span lang="EN-US"&gt;網路&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/a&gt;&lt;/span&gt;公 司使用著。在即將來臨的&lt;span lang="EN-US"&gt;PHP&lt;/span&gt;版本中準備增加一些成功的新特性，使&lt;span lang="EN-US"&gt;PHP&lt;/span&gt;在某些場合下更易用更安全。你準備好接受&lt;span lang="EN-US"&gt; PHP 6 &lt;/span&gt;了嗎？如果你明天就升級了，你的程式會運行得很好嗎？你該怎麼辦？這篇文章集合了&lt;span lang="EN-US"&gt;PHP 6&lt;/span&gt;的改變，他們中的一些備份移植到版本的&lt;span lang="EN-US"&gt;PHP v5.x&lt;/span&gt;，您目前的腳本可能需要進行一些調整。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;如果你現在使用不是&lt;span lang="EN-US"&gt;PHP&lt;/span&gt;，但是一直在考慮它，考慮一下它的&lt;span lang="EN-US"&gt;&lt;a href="http://www.yeeyan.com/articles/tag/%E6%96%B0%E7%89%B9%E6%80%A7" target="_blank"&gt;&lt;em&gt;&lt;span style="font-family: 新細明體;" lang="EN-US"&gt;&lt;span lang="EN-US"&gt;新特性&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/a&gt;&lt;/span&gt;。這些特點，從&lt;span lang="EN-US"&gt;Unicode&lt;/span&gt;的核心支持到&lt;span lang="EN-US"&gt;XML&lt;/span&gt;支持，使它更容易為你寫的功能填補&lt;span lang="EN-US"&gt;PHP&lt;/span&gt;的應用。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;span style="font-family: 新細明體;" lang="EN-US"&gt;PHP 6 &lt;a href="http://www.yeeyan.com/articles/tag/%E6%96%B0%E7%89%B9%E6%80%A7" target="_blank"&gt;&lt;em&gt;&lt;span style="font-family: 新細明體;" lang="EN-US"&gt;&lt;span lang="EN-US"&gt;新特性&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/a&gt;&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span lang="EN-US"&gt;PHP 6&lt;/span&gt;當前已經作為開發者快照使用，所以你可以下載和試用一下這篇文章列出很多特性，這些特性已經在當前的快照中實現了。見&lt;span lang="EN-US"&gt;&lt;a href="http://www.ibm.com/developerworks/opensource/library/os-php-future/?ca=dgr-lnxw01PHP-"&gt;&lt;span lang="EN-US"&gt;&lt;span lang="EN-US"&gt;資源&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;改進 &lt;strong&gt;&lt;span style="font-family: Arial;" lang="EN-US"&gt;Unicode &lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 10pt;"&gt;支援&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size: 10pt;"&gt;在&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: Arial;" lang="EN-US"&gt;PHP&lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;的核心函數中，有很多對&lt;/span&gt;&lt;strong&gt;&lt;span style="font-family: Arial;" lang="EN-US"&gt;Unicode &lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 10pt;"&gt;字串的支援的改進，這些&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: Arial;" lang="EN-US"&gt;&lt;a href="http://www.yeeyan.com/articles/tag/%E6%96%B0%E7%89%B9%E6%80%A7" target="_blank"&gt;&lt;em&gt;&lt;span style="font-family: 新細明體;" lang="EN-US"&gt;&lt;span lang="EN-US"&gt;新特性&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;將產生巨大的影響因為它允許&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: Arial;" lang="EN-US"&gt;PHP&lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;為國際字元提供更多的支援。所以如果一個開發者或者架構師使用不同的語言，例如&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: Arial;" lang="EN-US"&gt;Java&lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;程式語言，是因為它具有超過&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: Arial;" lang="EN-US"&gt;PHP&lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;的國際化支持的話，當支持改進時他會花一點時間來考慮一下&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: Arial;" lang="EN-US"&gt;PHP&lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;。&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size: 10pt;"&gt;因為今天你已經可以下載到開發者版本的&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: Arial;" lang="EN-US"&gt; PHP V6&lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;，你將看到一些功能函數已經支援&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: Arial;" lang="EN-US"&gt;Unicode&lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;字串。有一個函數清單已經被測試和驗證了完全可以處理&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: Arial;" lang="EN-US"&gt;Unicode&lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;，參見&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: Arial;" lang="EN-US"&gt;&lt;a href="http://www.ibm.com/developerworks/opensource/library/os-php-future/?ca=dgr-lnxw01PHP-Future#resources"&gt;&lt;span style="font-family: 新細明體;" lang="EN-US"&gt;&lt;span lang="EN-US"&gt;資源&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;。&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 10pt; font-family: 新細明體;"&gt;命名空間&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;命名空間是一種避免因函數或者類之間的命名衝突而使你的函數和類以及方法無法讀取，而不使用首碼命名慣例的一種方法。因此，通過使用命名空間，你可以命名別人可能已經使用的類名，而不用擔心在運行時會出錯。表一提供了一個在&lt;span lang="EN-US"&gt;PHP&lt;/span&gt;中使用命名空間的示例。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;您不用在源代碼中做更新或更改，因為你寫的任何&lt;span lang="EN-US"&gt;PHP&lt;/span&gt;代碼可以不包含命名空間而運行得很好。因為命名空間特性似乎會移植到&lt;span lang="EN-US"&gt;PHP 5.3 X&lt;/span&gt;中，如果它可以使用，您可以在自己的程式中引用命名空間。&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;表一，命名空間示例&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 7.5pt; font-family: 新細明體;" lang="EN-US"&gt;&lt;?&lt;a href="http://www.yeeyan.com/articles/tag/php" target="_blank"&gt;&lt;em&gt;&lt;span style="font-family: 新細明體;"&gt;php&lt;/span&gt;&lt;/em&gt;&lt;/a&gt;&lt;/span&gt;&lt;/strong&gt;&lt;b&gt;&lt;span style="font-size: 7.5pt;" lang="EN-US"&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family: 新細明體;"&gt;// I'm not sure why I would implement my own XMLWriter, but at least&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family: 新細明體;"&gt;// the name of this one won't collide with the one built in to PHP&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family: 新細明體;"&gt;namespace NathanAGood;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family: 新細明體;"&gt;class XMLWriter &lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family: 新細明體;"&gt;{&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family: 新細明體;"&gt;    // Implementation here...&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family: 新細明體;"&gt;}&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family: 新細明體;"&gt;$writer = new NathanAGood::XMLWriter();&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family: 新細明體;"&gt;?&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/b&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;span style="font-family: 新細明體;" lang="EN-US"&gt;Web 2.0 &lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: 新細明體;"&gt;特性&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size: 10pt;"&gt;依賴於你怎麼使用&lt;span lang="EN-US"&gt;PHP&lt;/span&gt;和你現在腳本的是什麼樣子的，現在的語言和語法差異，可能會或者不會最大程度的影響下面一些特性，這是指那些直接讓你引用的&lt;span lang="EN-US"&gt;Web 2.0&lt;/span&gt;功能到你的&lt;span lang="EN-US"&gt;PHP&lt;/span&gt;應用程式。&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;SOAP&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;SOAP&lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;是一種&lt;span lang="EN-US"&gt;&lt;a href="http://www.yeeyan.com/articles/tag/%E7%BD%91%E7%BB%9C" target="_blank"&gt;&lt;em&gt;&lt;span style="font-family: 新細明體;" lang="EN-US"&gt;&lt;span lang="EN-US"&gt;網路&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/a&gt;&lt;/span&gt;服 務&lt;span lang="EN-US"&gt;“&lt;/span&gt;說話&lt;span lang="EN-US"&gt;”&lt;/span&gt;的協定，並且支援不少其他語言，例如&lt;span lang="EN-US"&gt;Java&lt;/span&gt;和微軟的&lt;span lang="EN-US"&gt;.NET,&lt;/span&gt;雖然有其他的方法來驅動和使用網路服務，比如 表像化狀態轉變（&lt;span lang="EN-US"&gt;Representational State Transfer &lt;/span&gt;）&lt;span lang="EN-US"&gt;REST&lt;/span&gt;，&lt;span lang="EN-US"&gt;SOAP&lt;/span&gt;仍然在使不同平臺具有可操作性中是最常用的。此外，&lt;span lang="EN-US"&gt;SOAP&lt;/span&gt;在&lt;span lang="EN-US"&gt;PHP&lt;/span&gt;擴展和&lt;span lang="EN-US"&gt;PEAR&lt;/span&gt;庫中使用，&lt;span lang="EN-US"&gt;SOAP&lt;/span&gt;在&lt;span lang="EN-US"&gt;PHP&lt;/span&gt;中默認是不支持的，因 此你啟用這個擴展或者叫你的&lt;span lang="EN-US"&gt;ISP&lt;/span&gt;啟用。此外，&lt;span lang="EN-US"&gt;PEAR&lt;/span&gt;包允許你建立&lt;span lang="EN-US"&gt;SOAP&lt;/span&gt;用戶端和伺服器，如&lt;span lang="EN-US"&gt;SOAP&lt;/span&gt;包。&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size: 10pt;"&gt;如果你改變了默認設置，&lt;span lang="EN-US"&gt;SOAP&lt;/span&gt;將會在&lt;span lang="EN-US"&gt;PHP 6&lt;/span&gt;中啟用。這個擴展將提供你很容易的的實現&lt;span lang="EN-US"&gt;SOAP&lt;/span&gt;用戶端和&lt;span lang="EN-US"&gt;SOAP&lt;/span&gt;服務，允許你編寫的應用提供使用或者&lt;span lang="EN-US"&gt;&lt;a href="http://www.yeeyan.com/articles/tag/%E7%BD%91%E7%BB%9C" target="_blank"&gt;&lt;em&gt;&lt;span style="font-family: 新細明體;" lang="EN-US"&gt;&lt;span lang="EN-US"&gt;網路&lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/a&gt;&lt;/span&gt;服務。&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size: 10pt;"&gt;如果&lt;span lang="EN-US"&gt;SOAP&lt;/span&gt;擴展是默認設置，那就意味著你不能在&lt;span lang="EN-US"&gt;PHP&lt;/span&gt;中設置它們，如果您開發的&lt;span lang="EN-US"&gt;PHP&lt;/span&gt;應用程式並且它們發佈到一個&lt;span lang="EN-US"&gt;ISP&lt;/span&gt;伺服器上，您可能需要檢查一下你的&lt;span lang="EN-US"&gt;ISP&lt;/span&gt;，以驗證&lt;span lang="EN-US"&gt;SOAP&lt;/span&gt;並啟用為他們升級。&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;span style="font-family: Arial;" lang="EN-US"&gt;XML&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size: 10pt;"&gt;在&lt;span lang="EN-US"&gt;PHP 5.1&lt;/span&gt;中&lt;span lang="EN-US"&gt;XMLReader &lt;/span&gt;和&lt;span lang="EN-US"&gt;XMLWriter&lt;/span&gt;已經變成&lt;span lang="EN-US"&gt;PHP&lt;/span&gt;核心的一部分，這使你工作起來更輕鬆如果在你的&lt;span lang="EN-US"&gt;PHP&lt;/span&gt;程式中需要使用到&lt;span lang="EN-US"&gt;XML&lt;/span&gt;的話。和&lt;span lang="EN-US"&gt;SOAP&lt;/span&gt;擴展一樣，如果你使用&lt;span lang="EN-US"&gt;SOAP&lt;/span&gt;或者&lt;span lang="EN-US"&gt;XML&lt;/span&gt;這是個好消息因為&lt;span lang="EN-US"&gt;PHP 6&lt;/span&gt;比已經出爐的&lt;span lang="EN-US"&gt;PHP4 &lt;/span&gt;更適合你。&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;span style="font-family: 新細明體;"&gt;被刪除的東西&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size: 10pt;"&gt;除了具有的一些新功能，&lt;span lang="EN-US"&gt;PHP 6&lt;/span&gt;引擎將刪除一些在前面版本中已經有的功能。大部分這些功能，如&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;" lang="EN-US"&gt;register_globals&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt; &lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;和&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;" lang="EN-US"&gt;safe_mode &lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;在目前的&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;" lang="EN-US"&gt;PHP&lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;中被視為&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;" lang="EN-US"&gt;“&lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;破的&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;" lang="EN-US"&gt;”&lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;。因為他們可能會暴露一些安全風險。&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;" lang="EN-US"&gt;PHP&lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;在努力的清除中，在下一個版本中這些將從&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;" lang="EN-US"&gt;PHP&lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;中刪除或者廢棄。反對者認為大部分&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;" lang="EN-US"&gt;ISP&lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;或者企業會保留現在的腳本因為升級到&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;" lang="EN-US"&gt;&lt;a href="http://www.yeeyan.com/articles/tag/PHP6" target="_blank"&gt;&lt;em&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;PHP6&lt;/span&gt;&lt;/em&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;會破壞現在的的腳本，但是支持者認為很高興看到&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;" lang="EN-US"&gt;PHP&lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;團隊修補了這些漏洞，並且提供了一個乾淨，安全的運行工具。&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size: 10pt;"&gt;將從&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;" lang="EN-US"&gt;PHP&lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;刪除的功能有：&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span lang="EN-US"&gt;magic_quotes register_globals register_long_arrays safe_mode &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size: 10pt;"&gt;更詳細情況請看這裏：&lt;span lang="EN-US"&gt;&lt;a href="http://www.ibm.com/developerworks/opensource/library/os-php-future/?ca=dgr-lnxw01PHP-Future"&gt;IBM &lt;span lang="EN-US"&gt;&lt;span lang="EN-US"&gt;社區&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-2613562418358464765?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/2613562418358464765/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=2613562418358464765' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/2613562418358464765'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/2613562418358464765'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2008/05/php6.html' title='PHP6的新特性'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-6532502932794933149</id><published>2008-05-13T07:27:00.000-07:00</published><updated>2012-02-02T22:54:45.736-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>PHP常用語法</title><content type='html'>顯示所以錯誤訊息&lt;br /&gt;error_reporting(E_ALL);&lt;br /&gt;&lt;br /&gt;error_reporting(E_ALL);&lt;br /&gt;ini_set("display_errors", 1); &lt;br /&gt;&lt;br /&gt;取消時間限制&lt;br /&gt;set_time_limit (0);&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-6532502932794933149?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/6532502932794933149/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=6532502932794933149' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/6532502932794933149'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/6532502932794933149'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2008/05/php_13.html' title='PHP常用語法'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-3786025437088635534</id><published>2008-05-10T23:27:00.000-07:00</published><updated>2008-05-10T23:31:19.289-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='高亮度'/><category scheme='http://www.blogger.com/atom/ns#' term='程式碼'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>php上顯示高亮度語法的套件</title><content type='html'>GeSHi - 程式碼色彩顯示工具(Highlighter)&lt;br /&gt;GeSHi 原本是為了 phpBB 所做的顯示程式碼的工具，後來自己讀力為單獨的程式，提供php開發者製作程式碼有色彩顯示的文字區塊， 使用如下：&lt;br /&gt;&lt;br /&gt;include_once('geshi.php');&lt;br /&gt;$geshi = new GeSHi($source, $language); &lt;br /&gt;echo $geshi-&gt;parse_code();&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;$source 程式碼&lt;br /&gt;$language所使用的語言&lt;br /&gt;&lt;br /&gt;透過一個物件並指定你要顯示的程式語言後，就可以幫你產生漂亮的程式碼囉。在官方網站首頁的右下角 Demonstration 就有提供馬上測試的功能，輸入你的程式碼並且選擇語言，就可以立即測試。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://qbnz.com/highlighter/"&gt;官方網站 http://qbnz.com/highlighter/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-3786025437088635534?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/3786025437088635534/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=3786025437088635534' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/3786025437088635534'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/3786025437088635534'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2008/05/php_5041.html' title='php上顯示高亮度語法的套件'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-914687775376967933</id><published>2008-05-10T08:58:00.000-07:00</published><updated>2008-05-10T09:04:59.831-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ip'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>php鎖網段</title><content type='html'>這篇不錯的文章&lt;br /&gt;&lt;br /&gt;方便你在寫程式時&lt;br /&gt;需要對權限做控制的設定&lt;br /&gt;&lt;br /&gt;php網頁鎖網段&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;http://blog.blueshop.com.tw/omusico/archive/2007/03/14/50002.aspx&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-914687775376967933?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/914687775376967933/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=914687775376967933' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/914687775376967933'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/914687775376967933'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2008/05/php_10.html' title='php鎖網段'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-2118013156236630193</id><published>2008-05-10T08:30:00.000-07:00</published><updated>2008-05-10T08:45:10.322-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='搜尋'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>基於PHP的搜尋引擎</title><content type='html'>在使用了google後&lt;br /&gt;&lt;br /&gt;覺得如果能夠設計一隻，能幫自己上網去摘錄想要關鍵字&lt;br /&gt;&lt;br /&gt;於是開始計畫幫自己養一隻蜘蛛。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;在PHP上有一套開放原始碼的垂直搜尋引擎的產品&lt;br /&gt;&lt;br /&gt;phpdig官網&lt;br /&gt;&lt;a href="http://www.phpdig.net/"&gt;http://www.phpdig.net/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;目前版本我看到是停留在2005年&lt;br /&gt;先下載他的原始碼來分析一下該如何做。&lt;br /&gt;&lt;br /&gt;主要想了解的是，分析一個網頁後，會對該網頁建立一個詞彙表&lt;br /&gt;方便統計，也加速查詢~~&lt;br /&gt;&lt;br /&gt;而且他也支援需多不同的格式，例如PDF,Word,Excel,PowerPoint&lt;br /&gt;&lt;br /&gt;目前得知的是phpdig對中文依然有問題~~&lt;br /&gt;&lt;br /&gt;先看他的程式碼，有心得在繼續分享...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-2118013156236630193?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/2118013156236630193/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=2118013156236630193' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/2118013156236630193'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/2118013156236630193'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2008/05/php.html' title='基於PHP的搜尋引擎'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-5185095694595115457</id><published>2008-05-07T10:30:00.000-07:00</published><updated>2009-10-19T06:27:54.530-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>PHP連接MySQL的容錯</title><content type='html'>假設我們的環境是有兩台Mysql資料庫Server&lt;br /&gt;&lt;br /&gt;讓我們 網站存取資料&lt;br /&gt;&lt;br /&gt;如果其中一台資料庫服務中斷&lt;br /&gt;&lt;br /&gt;我們要如何在 PHP程式中 防範&lt;br /&gt;&lt;br /&gt;首先&lt;a href="http://tw.php.net/mysql_connect"&gt;mysql_connect&lt;/a&gt;沒有辦法&lt;br /&gt;讓我們設定連線 超時時間~~&lt;br /&gt;&lt;br /&gt;所以必須藉助比較底層的函式&lt;br /&gt;&lt;br /&gt;&lt;a href="http://tw.php.net/fsockopen"&gt;fsockopen&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;這函式可以設定超時時間，不在時間內連線，就切換資料庫&lt;br /&gt;&lt;br /&gt;if(fp = fsockopen($one, 3306, &amp;amp;$errno, &amp;amp;$errstr, $timeout)){&lt;br /&gt;fclose($fp);&lt;br /&gt;return $link = mysql_connect($first, $username, $password);&lt;br /&gt;}else{&lt;br /&gt;return $link = mysql_connect($second, $username, $password);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;$first //主要資料庫&lt;br /&gt;$second //備援資料庫&lt;br /&gt;&lt;br /&gt;如果第一個資料庫停擺，可以透過PHP容錯&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-5185095694595115457?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/5185095694595115457/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=5185095694595115457' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/5185095694595115457'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/5185095694595115457'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2008/05/phpmysql.html' title='PHP連接MySQL的容錯'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-4193913108938557670</id><published>2008-05-01T03:48:00.000-07:00</published><updated>2008-05-07T10:49:23.692-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mssql'/><title type='text'>PHP連MSSQL</title><content type='html'>要能夠讓CentOS連上MSSQL&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;先要裝幾個套件&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;php-mssql&lt;/li&gt;&lt;br /&gt;&lt;li&gt;freetds&lt;/li&gt;&lt;br /&gt;&lt;li&gt;unixODBC &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;執行yum insatll php-mssql他會依套件相依性，會自動&lt;/p&gt;&lt;br /&gt;&lt;p&gt;幫你安裝其他兩個！！&lt;/p&gt;&lt;br /&gt;&lt;p&gt;安裝好後修改php.ini&lt;/p&gt;&lt;br /&gt;&lt;p&gt;vim /etc/php.ini&lt;/p&gt;&lt;br /&gt;&lt;p&gt;我是在622行加入extension=mssql.so;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;依系統不同請自行尋找適合的位置&lt;/p&gt;&lt;br /&gt;&lt;p&gt;修改好後將你的Apache Server重新啟動&lt;/p&gt;&lt;br /&gt;&lt;p&gt;service httpd restart&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;如果正常的話可以看到下面這個圖示&lt;/p&gt;&lt;img id="BLOGGER_PHOTO_ID_5195372248113060178" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_wHesrN3Xxxg/SBmriIyzmVI/AAAAAAAAABc/viPCiGVPKu8/s320/mssql.GIF" border="0" /&gt;&lt;br /&gt;&lt;p&gt;接下來修改freetds.conf&lt;/p&gt;&lt;br /&gt;&lt;p&gt;vim /etc/freetds.conf&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Also bump the tds version to 8.0, since you said you were using SQL Server 2005.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;我們要用的是微軟的SQL Server2005 (管理工具使用SSMSE)所以修改設定如下&lt;/p&gt;&lt;br /&gt;&lt;p&gt;[mssql2005]&lt;/p&gt;&lt;br /&gt;&lt;p&gt;host=192.168.1.1&lt;/p&gt;&lt;br /&gt;&lt;p&gt;port=1433&lt;/p&gt;&lt;br /&gt;&lt;p&gt;tds version=8.0&lt;/p&gt;client charset = UTF-8　　; 如果網頁是 utf-8 編碼，就要加入這一行，注意是 UTF-8 大寫&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-4193913108938557670?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/4193913108938557670/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=4193913108938557670' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/4193913108938557670'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/4193913108938557670'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2008/05/phpmssql.html' title='PHP連MSSQL'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_wHesrN3Xxxg/SBmriIyzmVI/AAAAAAAAABc/viPCiGVPKu8/s72-c/mssql.GIF' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7227952526214502448.post-7701717176037943164</id><published>2008-04-25T10:53:00.000-07:00</published><updated>2008-05-07T10:46:59.969-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rewrite'/><title type='text'>Cakephp的rewrite模組</title><content type='html'>使用cakephp需要正確的設置&lt;br /&gt;rewrite模組才能使webroot中的img js css正確使用&lt;br /&gt;&lt;br /&gt;已CentOS 5 為例&lt;br /&gt;&lt;br /&gt;需要在&lt;br /&gt;/etc/httpd/conf/http.conf&lt;br /&gt;&lt;br /&gt;設置&lt;br /&gt;&lt;directory&gt;&lt;br /&gt;Options FollowSymLinks&lt;br /&gt;AllowOverride All&lt;br /&gt;&lt;/directory&gt;&lt;br /&gt;&lt;br /&gt;AllowOverride All&lt;br /&gt;&lt;br /&gt;並且在該網站的資料夾中&lt;br /&gt;加入&lt;br /&gt;&lt;br /&gt;.htaccess檔&lt;br /&gt;&lt;br /&gt;&lt;ifmodule&gt;&lt;br /&gt;RewriteEngine on&lt;br /&gt;RewriteRule ^$ app/webroot/ [L]&lt;br /&gt;RewriteRule (.*) app/webroot/$1 [L] RewriteBase /~username/cakephp/&lt;br /&gt;&lt;br /&gt;注意 username需填入你的使用者的資料&lt;br /&gt;或許你的網站資料不是在家目錄中，需依照現實情況填入資料&lt;br /&gt;&lt;br /&gt;&lt;/ifmodule&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7227952526214502448-7701717176037943164?l=mro-php.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mro-php.blogspot.com/feeds/7701717176037943164/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7227952526214502448&amp;postID=7701717176037943164' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/7701717176037943164'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7227952526214502448/posts/default/7701717176037943164'/><link rel='alternate' type='text/html' href='http://mro-php.blogspot.com/2008/04/cakephprewrite.html' title='Cakephp的rewrite模組'/><author><name>omusico</name><uri>http://www.blogger.com/profile/09234254809155526794</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
