MENU 服務(wù) 案例
網(wǎng)站建設(shè)-網(wǎng)站設(shè)計(jì)-北京網(wǎng)站建設(shè)-高端網(wǎng)站制作公司-尚品中國(guó)
我們通過(guò)擁抱變化創(chuàng)造
360°的品牌價(jià)值__
簡(jiǎn)體
簡(jiǎn)體中文 English

尚品簽約辰欣藥業(yè)股份有限公司官網(wǎng)建設(shè)

類型:尚品動(dòng)態(tài) 了解更多

為什么使用php,php網(wǎng)站制作經(jīng)驗(yàn)

來(lái)源:尚品中國(guó)| 類型:網(wǎng)站百科| 時(shí)間:2012-07-20
大綱
● 認(rèn)識(shí) PHP網(wǎng)站制作
● PHP 設(shè)計(jì)經(jīng)驗(yàn)談
– 為什麼要用樣板
– 為什麼要用資料庫(kù)介面
– 什麼是 PEAR
– PHP + MySQL4.1s

2認(rèn)識(shí) PHP
● 跨平臺(tái)網(wǎng)頁(yè)程式語(yǔ)言
● PHP 可以做的事情
● 大量的 OpenSource 套件

3跨平臺(tái)的 PHP
● LAMP
– Linux + Apache + MySQL + PHP
● 幾乎所有的 Linux Dist 預(yù)設(shè)都有這些套件
● WAMP
– Windows + Apache + MySQL + PHP
● 快速環(huán)境建立
– Appserv
– Easyphp
● PHP For IIS

4PHP 可以做的事情
● Server-side scripting
– 網(wǎng)頁(yè)程式設(shè)計(jì)
● Command line scripting
– 用 PHP 來(lái)寫(xiě) Shell Script
● Client-side GUI applications
– PHP-GTK

5大量的 OpenSource 套件 (1)
● Forum:
– phpBB2
● CMS
– Xoops
– Mambo,Joomla
– PhpNuke
– postnuke
● Calender
– PHP iCalendar
– phpCalendar
– EasyPHPCalendar

6大量的 OpenSource 套件 (2)

● Groupware
– Egroupware
– DotProject
– Phpgroupware
● List
– PHPList
● Webmail
– Squirrelmail
● Blog
– WordPress
– Plog

7初學(xué)者的問(wèn)題

● 程式碼直接寫(xiě)在 HTML 中
– 市面上的書(shū)大都以此為教學(xué)
– 市面上大部份 PHP 的書(shū)本沒(méi)有說(shuō)到樣版系統(tǒng)
– 習(xí)慣直接用 echo 輸出資料
● 不夠熟悉 HTML
– 表格跨行,跨欄的使用
– 表單的設(shè)計(jì)
– POST 與 GET 的使用時(shí)機(jī)
● 不習(xí)慣在 register_globals=Off 工作
● 錯(cuò)誤訊息的不熟悉
– 對(duì)英文的恐懼 ?

8怎樣的程度才不算新手 ?

● 清楚了解 Server Side 跟 Client Side 的差別
● 清楚了解 register_globals 設(shè)定的意義
● 不會(huì)搞不清邏輯判斷跟變數(shù)值指定的分別

● 清楚了解 POST 跟 GET,COOKIE 跟 Session 等的 關(guān)係與差別
● 對(duì)於基本錯(cuò)誤訊息有辦法解讀
● 具備基本 HTML 分析能力
– 一般常用 TAG 分析與參數(shù)使用
– TABLE tag 結(jié)構(gòu)分析

9PHP 設(shè)計(jì)經(jīng)驗(yàn)談

● PHP 程式設(shè)計(jì)標(biāo)準(zhǔn)
● 幾個(gè)進(jìn)階時(shí)可以考慮學(xué)習(xí)
– 建立一個(gè)標(biāo)準(zhǔn)的檔案架構(gòu)
– 至少熟悉一套樣版程式
– 採(cǎi)用資料庫(kù)介面
– 多多使用 PEAR
● MySQL4.1
– Sub-Select
– Charset 的影響

10建立一個(gè)標(biāo)準(zhǔn)的檔案架構(gòu)

● 你應(yīng)該建立一個(gè)標(biāo)準(zhǔn)的檔案目錄架構(gòu)
– 函式庫(kù)該放哪裡?
– 樣版該放哪裡 ?
– 外掛程式 ?
– 是否有網(wǎng)站設(shè)定檔 ?
– 是否有管理介面 ?
● 多參考目前幾個(gè) OpenSource 的 CMS
– Xoops, phpbb2,mambo 等
● 可以簡(jiǎn)單的 , 就不要複雜

11PHP 程式設(shè)計(jì)標(biāo)準(zhǔn)

● 訂定專案程式設(shè)計(jì)標(biāo)準(zhǔn)的好處
– 變數(shù),物件,函式有固定的命名方式
– 專案的程式風(fēng)格統(tǒng)一,降低維護(hù)複雜度
● 進(jìn)行中的專案不要任意變換標(biāo)準(zhǔn)
– 標(biāo)準(zhǔn)訂定應(yīng)該是專案一開(kāi)始就要決定的
– 標(biāo)準(zhǔn)訂定應(yīng)該由專案參與人一同討論決定
● 可以參考的設(shè)計(jì)標(biāo)準(zhǔn)資料
– PHP 程式設(shè)計(jì)標(biāo)準(zhǔn)

12PHP 程式設(shè)計(jì)標(biāo)準(zhǔn)之外 (1)

● 架構(gòu)整個(gè)網(wǎng)站的時(shí)候應(yīng)該使用的方法
– 至少使用三層式程式設(shè)計(jì)
● 表現(xiàn)層 - 實(shí)際輸出 html
● 邏輯層 - 處理程式流程
● 資料處理層 - 處理資料存取

– 就是使用 MVC(Model-View-Controller) 架構(gòu)你 的網(wǎng)站
– 函式,物件之中不要直接輸出資料
● 儘量採(cǎi)用 return $html 的方式處理

13PHP 程式設(shè)計(jì)標(biāo)準(zhǔn)之外 (2)

● 該用 echo 還是 printf ?
– 輸出一般字串用 echo
– 輸出內(nèi)含變數(shù)的字串用 printf
● printf('a href='%s' target='%s'>%s</a>',$url,$target,$name);
● printf('a href='%s' target='%s'>%s</a>',array($url,$target,$name));
– 當(dāng)建立 SQL 語(yǔ)法的時(shí)候用 sprintf
● $SQL = sprintf('Select * from %s where ID = %s',$tableName,$id);

14至少熟悉一套樣版程式

● 為什麼要用樣版 ?
● 兩套我推薦的樣版程式
– Smarty
– TBS

15為什麼要用樣版 ?

● 別讓今天的程式,成為明天維護(hù)的負(fù)擔(dān)
● 美術(shù)設(shè)計(jì)不再為了都是程式碼的網(wǎng)頁(yè)苦惱
● 程式設(shè)計(jì)不再為了都是 HTML Tag 的程式苦惱
● 網(wǎng)站設(shè)計(jì)改版將會(huì)是輕鬆的事情

16沒(méi)使用樣版的程式碼

使用樣版的程式碼

網(wǎng)頁(yè)樣版檔

官方推薦 Smarty

● Smarty 為 PHP 推薦使用的樣版引擎
– http://smarty.php.net
● Smarty 採(cǎi)用預(yù)先編譯樣版
– 速度較快
● Smarty 可以直接 assign 物件,陣列等
● Smarty 提供全域變數(shù)
– $smarty.get , $smarty.post ,$smarty.server
● Smarty 可直接輸出靜態(tài)頁(yè)面進(jìn)行 Cache
● Smarty 支援外掛模組的使用
– SmartyValidate

20輕量化的 Smarty-lite

● 較適合單純的樣版需求環(huán)境
● 速度較 Smarty 更快
● 系統(tǒng)記憶體需求較少
● 功能上較 Smarty 少一些
– 無(wú)法 assign 物件
– 少了輸出前中後的過(guò)濾器
– 不支援樣版存入資料庫(kù)的模式

21小而強(qiáng)大的 TBS

● TBS – TinyButStrong
– http://www.tinybutstrong.com
● 所見(jiàn)即所得的樣版引擎
● 支援 Cache
● 直接存取資料庫(kù)顯示資料
– $TBS->MergeBlock('blk1',$cnx_id,'select *from t_country',$p_size,$p_num,$nbr_rec);

22為什麼要用資料庫(kù)介面 ?

● 為了寫(xiě)出通用各資料庫(kù)的 PHP 程式
● 更方便使用的資料庫(kù)的功能
● 減少程式撰寫(xiě)上的複雜

23ADOdb

● 降低 Windows 程式設(shè)計(jì)師學(xué)習(xí)門(mén)檻
– 部份介面設(shè)計(jì)類似 Microsoft's ADO
● 支援多種資料庫(kù)
– MySQL,PgSQL,Oracle,MSSQL etc......
● 增加了許多方便的方法,程式撰寫(xiě)更輕鬆
– SelectLimit

– PageExecute,AtfirstPage,AtLastPage,Absolut ePage
– getInsertSQL,getUpdateSQL,autoExecute
● 資料庫(kù)快取,同樣的資料不用再讀資料庫(kù)
– CacheExecute
– CachePageExecute 24

ADOdb-lite

● ADOdb-lite 為 ADOdb 精簡(jiǎn)版
● 資料庫(kù)支援程度幾乎不相上下
● 少了許多 ADOdb 提供的 Function
● 也減少了許多系統(tǒng)記憶體的耗用

25ADOdb 開(kāi)發(fā)範(fàn)例

● 設(shè)計(jì)分頁(yè)功能
– 分頁(yè)功能的應(yīng)用很多
● 留言版 , 討論區(qū) , 資料列表 , 訂單列表 ..etc
– $rs = $db->PageExecute($sql,$onePageStep,$_GET['page']);
if(!$rs->AtFirstPage()){
... // 進(jìn)行上一頁(yè)聯(lián)結(jié)輸出
}
if(!$rs->AtLastPage()){
... // 進(jìn)行下一頁(yè)聯(lián)結(jié)輸出
}

26什麼是 PEAR

● PHP Extension and Application Repository
– http://pear.php.net/
– 類似 Perl 的 CPAN
– 提供安裝程式與更新升級(jí)程式 pear
● 共 31 種分類的程式套件可供取用
– 常用的像 Database HTML Mail Networking

27安裝 pear 提供的套件

● 常用的 pear 指令

● 安裝與移除的時(shí)候都會(huì)提示相依套件

28幾個(gè)好用的 PEAR 套件

● HTML 類
– HTML_QuickForm
– HTML_Table
– Pager
● XML 類
– XML_RSS
– XML_sql2xml
– XML_Tree
● Mail 類
– Mail
– Mail_Queue

● PHP 類
– PHPUnit
– PhpDocumentor
● Services 類
– Services_Delicious
– Services_Yahoo

29MySQL4.1

● 不久的將來(lái)各 Linux Dist 將預(yù)設(shè) MySQL 4.1
● MySQL4.1 的優(yōu)點(diǎn)
– 支援 Sub-Select
– 更完整的多國(guó)語(yǔ)系支援
– 速度更快
● 4.x 起 MySQL 有 Query Cache 功能
● MySQL4.1 還差什麼 ?
– Trigger
– Stored Procedures

30MySQL Subqueries

● MySQL 4.1 以前並沒(méi)有 Subqueries
● Subqueries 的好處
– SQL 語(yǔ)法更簡(jiǎn)潔
– 可查詢的方式更多樣
● 請(qǐng)不要客氣的使用這個(gè)方便好用的功能吧 !
● 官方文件資料

– http://dev.mysql.com/doc/mysql/en/subqueri es.html

31Trigger 跟 Stored Procedures 呢 ?

● MySQL4.x 沒(méi)有 Trigger,Stored Procedures
● MySQL5 以後才會(huì)支援 Trigger
● MySQL5 以後才會(huì)支援 Stored Procedures
– 不過(guò)目前 MySQL5 還在 beta 階段
– 但是目前已經(jīng)有部份網(wǎng)站已經(jīng)使用

32讓 MySQL 更快

● 千萬(wàn)不要忘記去調(diào)整你的 my.cnf
– /etc/my.cnf
– 可以參考 /usr/share/mysql 下的範(fàn)例
● 既然有 query_cache 就別浪費(fèi)
● 使用 EXPLAIN 去分析你的 SQL 語(yǔ)法 .

33當(dāng)更新到 MySQL4.1 常見(jiàn)問(wèn)題

● 為什麼我的資料抓出來(lái)都是
● 為什麼在 phpMyAdmin2.6 中看到的都是亂碼
● 為何使用 myqldump 的資料庫(kù)都是亂碼

34一切都是多國(guó)語(yǔ)系支援惹的禍

● 4.1 後需要設(shè)定資料庫(kù)與 client 編碼
– 設(shè)定好資料庫(kù)預(yù)設(shè)語(yǔ)系
● /etc/my.cnf
– [mysqld]
– default-character-set=utf8
– character-set-server = utf8
– collation-server = utf8_general_ci
● 如果系統(tǒng)都跑 utf8
– init_connect='SET NAMES utf8′
– default-character-set = utf8
– default-collation = utf8_general_ci
– PHP 連線 MySQL 後請(qǐng)?jiān)O(shè)定 Client 編碼
● 當(dāng)資料庫(kù)連線後送出 'set names utf8'
– $db->Execute('SET NAMES utf8');
– mysql_query('SET NAMES utf8');

35一定要用 UTF8 嗎 ?

● 不一定要用 UTF8
● 資料庫(kù)或是資料表編碼指定
● 資料庫(kù)
– CREATE DATABASE `MyTABLE` DEFAULT CHARACTER SET big5
COLLATE big5_chinese_ci;
● 資料表
– CREATE TABLE `myTable` (
– ..... etc ....
– ) ENGINE=MyISAM DEFAULT CHARSET=big5 ;
● 儘量讓 Server 跟 Client 都用相同的 Char
– 若不同的 Character MySQL 會(huì)試著幫忙轉(zhuǎn)換
– 例如可以同一套 Database 資料 (utf8)
– 同時(shí)提供 big5 跟 gb2312 的 Client.
● 但是部份的轉(zhuǎn)換會(huì)失敗 , 所以會(huì)有像是漏字或 ?? 產(chǎn)生 36

匯出匯入語(yǔ)系設(shè)定

● 大部份的人會(huì)用 mysqldump 備份資料
– mysql4.1 以前你可以不指定語(yǔ)系
– mysql4.1 以後務(wù)必要指定語(yǔ)系
– mysqldump -u root -p --default-character-set=big5 my
Table
● 重新匯入資料
– 請(qǐng)記的也要加上語(yǔ)系設(shè)定

– mysql --default-character-set=big5 -u root -p < myTa ble.sql

37網(wǎng)站與參考文章 (1)

● PHP
– http://www.php.net
● Smarty
– http://smarty.php.net
– Smarty-Lite

● http://www.paullockaby.com/projects/smarty-lig ht/
● PEAR
– http://pear.php.net
● TBS – TinyButStrong
– http://www.tinybutstrong.com

38網(wǎng)站與參考文章 (2)

● ADOdb
– http://adodb.sf.net
– ADOdb-lite
● http://adodblite.sf.net/
● MySQL
– http://www.mysql.com
● 中文參考網(wǎng)站
– http://www.twpug.net
– http://www.php5.idv.tw

39PHP Command line scripting

● 如果你沒(méi)有學(xué) Shell Script 的編寫(xiě)
● 如果你像我一樣基本上最熟的就是 PHP

● 或許你可以考慮用 PHP 寫(xiě) Command line scri pting

40PHP Command line scripting

● 需要些什麼
– 可執(zhí)行的 PHP 執(zhí)行檔
● 例如 Mandriva 是提供 php-cli 的套件
– 還有你要知道執(zhí)行檔放在那
● Mandriva 放在 /usr/bin/php
● 怎麼寫(xiě) ?
– 就跟網(wǎng)頁(yè)程式一樣
● 語(yǔ)法 , 可用的函式 , 輸出 ~ 都一樣

41PHP Command line scripting

● 怎麼執(zhí)行呢 ?
– 直接 [shell#] PHP ScriptFileName 去執(zhí)行
– 在檔案開(kāi)頭加上 #!/usr/bin/php -q
● 記的檔案要 chmod +x 喔
● 還有什麼要注意的 ?
– 執(zhí)行時(shí) include 的路徑
● 建議這類的檔案使用絕對(duì)路徑 include
● 尤其當(dāng)該 script 是要放入 crontab 時(shí)
– 程式的輸出或許應(yīng)該要去掉 html

42如何邁向更進(jìn)階 ?

● Framework 的學(xué)習(xí)
● Framework 的目的
– 簡(jiǎn)化開(kāi)發(fā)流程
– 加快效率
– 專注程序處理邏輯,而不是技術(shù)問(wèn)題。
● Framework 的缺點(diǎn)
– 學(xué)習(xí)曲線太長(zhǎng)
– 初學(xué)者就學(xué)習(xí) Framework 容易忽略基礎(chǔ)技術(shù)

43幾個(gè)推薦的 Framework

● CakePHP
– 參考 Ruby on Rails
– 較其他 frameword 輕量化
● php.MVC
– 參考 Java 的 Struts
● 目前樂(lè)多日誌 (Blog.yam.com) 使用
● Seagull
– 使用 PEAR 程式庫(kù)
● PRADO
– Zend 獲獎(jiǎng)作品 , 事件驅(qū)動(dòng)模式
– Only PHP5
本文發(fā)布于北京網(wǎng)站建設(shè)公司尚品中國(guó)http://m.proteomeinstitute.com/
來(lái)源聲明:本文章系尚品中國(guó)編輯原創(chuàng)或采編整理,如需轉(zhuǎn)載請(qǐng)注明來(lái)自尚品中國(guó)。以上內(nèi)容部分(包含圖片、文字)來(lái)源于網(wǎng)絡(luò),如有侵權(quán),請(qǐng)及時(shí)與本站聯(lián)系(010-60259772)。
TAG標(biāo)簽:

如果您的網(wǎng)站可以增加轉(zhuǎn)化次數(shù)并提高客戶滿意度,該怎么辦?

預(yù)約專業(yè)咨詢顧問(wèn)溝通!

*尚品專業(yè)顧問(wèn)將盡快與您聯(lián)系

免責(zé)聲明

非常感謝您訪問(wèn)我們的網(wǎng)站。在您使用本網(wǎng)站之前,請(qǐng)您仔細(xì)閱讀本聲明的所有條款。

1、本站部分內(nèi)容來(lái)源自網(wǎng)絡(luò),涉及到的部分文章和圖片版權(quán)屬于原作者,本站轉(zhuǎn)載僅供大家學(xué)習(xí)和交流,切勿用于任何商業(yè)活動(dòng)。

2、本站不承擔(dān)用戶因使用這些資源對(duì)自己和他人造成任何形式的損失或傷害。

3、本聲明未涉及的問(wèn)題參見(jiàn)國(guó)家有關(guān)法律法規(guī),當(dāng)本聲明與國(guó)家法律法規(guī)沖突時(shí),以國(guó)家法律法規(guī)為準(zhǔn)。

4、如果侵害了您的合法權(quán)益,請(qǐng)您及時(shí)與我們,我們會(huì)在第一時(shí)間刪除相關(guān)內(nèi)容!

聯(lián)系方式:010-60259772
電子郵件:394588593@qq.com

現(xiàn)在就與專業(yè)咨詢顧問(wèn)溝通!

  • 全國(guó)服務(wù)熱線

    400-700-4979

  • 北京服務(wù)熱線

    010-60259772

信息保護(hù)中請(qǐng)放心填寫(xiě)
在線咨詢

免責(zé)聲明

非常感謝您訪問(wèn)我們的網(wǎng)站。在您使用本網(wǎng)站之前,請(qǐng)您仔細(xì)閱讀本聲明的所有條款。

1、本站部分內(nèi)容來(lái)源自網(wǎng)絡(luò),涉及到的部分文章和圖片版權(quán)屬于原作者,本站轉(zhuǎn)載僅供大家學(xué)習(xí)和交流,切勿用于任何商業(yè)活動(dòng)。

2、本站不承擔(dān)用戶因使用這些資源對(duì)自己和他人造成任何形式的損失或傷害。

3、本聲明未涉及的問(wèn)題參見(jiàn)國(guó)家有關(guān)法律法規(guī),當(dāng)本聲明與國(guó)家法律法規(guī)沖突時(shí),以國(guó)家法律法規(guī)為準(zhǔn)。

4、如果侵害了您的合法權(quán)益,請(qǐng)您及時(shí)與我們,我們會(huì)在第一時(shí)間刪除相關(guān)內(nèi)容!

聯(lián)系方式:010-60259772
電子郵件:394588593@qq.com