用php已經有很長一段時間了,雖然水平也就這樣,但今天還是鼓足勇氣,把我自己的一些想法記錄於此。方便自己日後使用。有點亂,等以後再繼續完善。
首先常用的函式,類庫放在乙個公共目錄中,**的配置資訊存放在乙個公共檔案中如config
.php
,條件允許的話,可以放在非web目錄中。
我借鑑了oscommerce的一些寫法,比如將公用檔案放在includes/.
php中。
在很多時候,include_path會搞得人頭痛,因此不如將它取消,全部用自己定義的include_path值
<?
php//
防止直接訪問此檔案if(
eregi("
",
$_server['
php_self
'])) if(
preg_match('
/windows/i',
$_env['
os'
]))
else
require_once('
config.php');
$include_path
=dir_ws_includes
.$include_separator
.dir_ws_includes .'
**arty'.
$include_separator
.dir_ws_includes .'
class'.
$include_separator
.dir_ws_includes .'
pear'.
$include_separator
;ini_set('
include_path',
$include_path
);
require_once("
function.php");
?>
資料庫連線
最好採用資料庫連線層,如pear
::db,不要直接用具體的php資料連線函式如:mysql_connect等,
如果非要用的話,等有一天你要換資料庫的時候,你就知道了什麼叫。現在php5
.1有了乙個pdo,以後這種情況可能好些。
說到資料庫連線,就要講到sql語句了,因為**的sql語句會出現多次重複使用的情況,因此我將一些通用的sql語句
全部放在了乙個php檔案,然後需要用的時候,就呼叫它們如:
<?
phpdefine('
_sql_categories_by_sid',
"select c.categories_id, c.categories_name from ".
table_categories ."
c inner join ".
table_categories ."
sub_c ".
"on c.categories_id = sub_c.parent_id where sub_c.categories_id = %d limit 1
");
?>
這樣就避免了資料庫結構有變化的時候,大規模的修改sql語句的情況。
在資料庫資料的入庫和出庫的時候,需要進行處理,這些處理最好中放到單獨的函式中,避免直接用類似於addslashes()之類
的函式來處理,那樣很不靈活,當要增加一些額外的動作時,就需要更改所有使用到它們的地方。
<?
php//
處理傳遞過來的值
$_get
=array_map('
getsafevalue',
$_get
);$_post
=array_map('
getsafevalue',
$_post
); ?>
<?
phpfunction
getsafevalue(
$value)
else
}
?>
模板用模板的好處,就是在當你要改版面的時候,工作量少一點。我用的是**arty模板,以前在模板中用了很多的模板
自己的邏輯判斷,覺得這樣不好,應該盡量地將這些邏輯判斷交給php來處理,模板只要顯示就可以了:
<%
$variable
%>
另外如果採用div
+css的話,改起版面來就可以更加方便。
如<
div id="
product
"><%
$variable
%>
div>
快取加速
開啟**arty的cache功能,這樣第二次訪問頁面就是訪問接近htm的頁面了,結合gzip壓縮輸出,使訪問速度可以更快一些。
<?
php//
if gzip_compression is enabled, start to buffer the output
if( (
$ext_zlib_loaded
=extension_loaded('
zlib
')) &&(
php_version
>='4
') )
} else
} ?>
<?
php/*
$id: jxyuhua.php,v 1.4 february 26, 2006, 8:24 pm hpdl exp $
*/require_once''
;if(!
$class_**arty
->
is_cached(tpl_name
,$cache_id
)) //
顯示內容
$class_**arty
->
display(tpl_name
,$cache_id
);require_once
dir_ws_includes .'
';
?>
我心中的軟體
我第一次接觸軟體大概是玩家人的手機吧。記得那時手機上有三款極為經典的遊戲 貪吃蛇 推箱子 俄羅斯方塊 小時候的我非常好奇,為什麼會有這麼有趣的乙個世界,通過對按鍵的控制就可以暢遊在另乙個世界中。這比現實世界有趣多了,從此我便迷上了手機遊戲。後來玩的次數多了,便開始注意到手機裡面遊戲之外的東西。比如系...
我心中的租賃
現在跟過去相去,我們的生水平,已有明顯的改善。消費能力,相對以前已有較大提公升。還清楚的記得92的時候,家裡有一台黑白電視機,就相對來說不錯了。95年的時候許多人圍著一台彩色電視機 節目。今天不僅普及了電視機,電冰箱,空調,洗衣機,電腦等都已進入尋常百姓家。但是我們這次不是討論的,購買的問題。近幾年...
我心中的軟體測試
軟體測試行業目前在國內受重視的程度依然很低,很多公司還是認為軟體測試時乙個可有可無的職位,但是更多的公司已經開始認識在軟體測試的重要性,並開始加大在軟體測試方面的投入。軟體測試到底是什麼?很多人可以給出很多的答案,檢驗產品是否達到設計需求,可能這個會是很多人給出的答案。在我看來,軟體測試並不簡簡單單...