輕松搭建PHP開發(fā)環(huán)境Win32
概要
堅(jiān)果 Jimbowhy 前后端腳本編程輕松篇集合文章:
- 輕松搭建PHP開發(fā)環(huán)境Win32
- 小而巧 editplus 腳本編程
- Windows Script Technology
- 看我怎樣把editplus用巧
- HTTP協(xié)議入門與Fiddler抓包
PHP就一個(gè)超文本處理程序語(yǔ)言,學(xué)習(xí)難度小,簡(jiǎn)單實(shí)用。對(duì)于想入門的人,要配置WEB服務(wù)器,要配置mysql什么的,搭建PHP運(yùn)行環(huán)境可能是個(gè)花時(shí)間的事。那么,這里給一個(gè)簡(jiǎn)單實(shí)用方法來(lái)運(yùn)行PHP。
基本工具
下載WIN32版本PHP,如 php-5.3.5-Win32-VC6-x86.zip
下載editplus編輯器,這是一個(gè)簡(jiǎn)單實(shí)用的小工具,5我從1.0版本一直用到現(xiàn)在的5.0,后面簡(jiǎn)單介紹一下它集成的zen coding。
安裝配置
解壓PHP壓縮包到一個(gè)方便開發(fā)的目錄,如C:\php-5.3.5-Win32-VC6-x86。
安裝editplus,完成后做點(diǎn)小配置。打開菜單 tools => configure user tools,在配置框中 Add tool 添加一個(gè)程序命令工具,并設(shè)置命令為PHP可執(zhí)行文件:
"C:\php-5.3.5-Win32-VC6-x86\php.exe" -f
在參數(shù)Arguments中將editplus編輯的文件信息輸入給php.exe:
$(FilePath)
選擇Action為Capture output選項(xiàng),這樣就可以捕捉PHP運(yùn)行的結(jié)果。確定后,就可以通過(guò)Ctrl+1來(lái)執(zhí)行php.exe解析php程序了。

開始寫PHP程序
接下來(lái)試試寫個(gè)PHP測(cè)試程序,從PHP官方文檔中抄來(lái)一段代碼,保存后直接按Ctrl+1運(yùn)行它:
class Bar
{
public function test() {
$this->testPrivate();
$this->testPublic();
}
public function testPublic() {
echo "Bar::testPublic\n";
}
private function testPrivate() {
echo "Bar::testPrivate\n";
}
}
class Foo extends Bar
{
public function testPublic() {
echo "Foo::testPublic\n";
}
private function testPrivate() {
echo "Foo::testPrivate\n";
}
}
$myFoo = new foo();
$myFoo->test(); // Bar::testPrivate
// Foo::testPublic
?>

看結(jié)果,PHP輸出的內(nèi)容直接在editplus界面顯示了。
Bar::testPrivate
Foo::testPublic
zen coding 加速HTML錄入
zen coding是一個(gè)小工具也叫Emmet,很多優(yōu)秀的編輯器都有它的身影,在editplus中是通過(guò)腳本實(shí)現(xiàn)的。舉個(gè)小麗說(shuō)明一下它的作用,輸入一下代碼:
div#layer>ul.books>li*5>a.item$[href=to/page$.html]{Book $}
勾選editplus的Emmet菜單下 Use Emmet 和 Tab to expand,這樣按下Tab鍵就會(huì)調(diào)用Emmet功能了,它會(huì)將上面的內(nèi)容轉(zhuǎn)換為一下HTML標(biāo)記:
<div id="layer">
<ul class="books">
<li>
<a class="item1" href="to/page1.html">Book 1</a>
</li>
<li>
<a class="item2" href="to/page2.html">Book 2</a>
</li>
<li>
<a class="item3" href="to/page3.html">Book 3</a>
</li>
<li>
<a class="item4" href="to/page4.html">Book 4</a>
</li>
<li>
<a class="item5" href="to/page5.html">Book 5</a>
</li>
</ul>
</div>
看見了么,一下就生成了一個(gè)列表,還設(shè)置好了DIV的ID,Anchor的class、href等屬性。上面的那條指令中的#和點(diǎn)號(hào)意思就是設(shè)置ID和class,方括號(hào)[]表示其他屬性的設(shè)置,花括號(hào){}表示文字內(nèi)容,*5表示要5次:),要10次20次也是可以的。
PS:這兩天剛到深圳,今天手機(jī)上了一個(gè)droidphp,計(jì)劃在手機(jī)上寫php的,連基本的class定義都說(shuō)syntax error unexpected {,寫點(diǎn)什么打發(fā)一下。
解決一個(gè)隱晦的問(wèn)題
這幾天在我的Le2安裝了DroidPHP和KSWEB,有了它們手機(jī)就可以跑PHP服務(wù)器了。此時(shí)我正在看PHP MANUAL 后期靜態(tài)綁定,其中有一段代碼,想拷貝下來(lái)測(cè)試運(yùn)行一下,這一試不得了,PHP竟然提示:
Parse error: syntax error, unexpected ‘{’
對(duì)應(yīng)代碼是:
<?php
class A {
public static function foo() {
static::who();
}
public static function who() {
echo __CLASS__."\n";
}
}
class B extends A {
public static function test() {
A::foo();
parent::foo();
self::foo();
}
public static function who() {
echo __CLASS__."\n";
}
}
class C extends B {
public static function who() {
echo __CLASS__."\n";
}
}
C::test();
?>
錯(cuò)誤提示剛好是 class A { 這個(gè)花括號(hào),真是詭異的錯(cuò)誤!一點(diǎn)語(yǔ)法錯(cuò)誤沒有,我能想到的原因有一下幾個(gè):
- 代碼文件編碼匹配問(wèn)題
- PHP版本機(jī)及配置文件問(wèn)題
- PHP在Android平臺(tái)編譯運(yùn)行問(wèn)題
- Lighttped服務(wù)器配置問(wèn)題
經(jīng)過(guò)許久的探索,并沒有發(fā)現(xiàn)別人遇到類似問(wèn)題的信息,最后想到Hex一下文件,終于發(fā)現(xiàn)了線索,文件的空格處不是常見的 0x20,而是 0xC2A0,這是UTF字符集的東西,但她確確實(shí)實(shí)是空格,0xA0
字符名字叫 NO-BREAKSPACE,只是PHP處理不了,同時(shí)并不排除其他程序語(yǔ)言會(huì)出現(xiàn)同類問(wèn)題。一直以來(lái)都很注意編碼方面細(xì)節(jié)的,遇上這樣的問(wèn)題也真是運(yùn)氣。參考NO-BREAKSPACE
不過(guò)最后說(shuō)一句,這個(gè)問(wèn)題真的很惡心!不是嗎,它根本就不應(yīng)該是個(gè)問(wèn)題。
