我心中的PHP写法

用PHP已经有很长一段时间了,虽然水平也就这样,但今天还是鼓足勇气,把我自己的一些想法记录于此。方便自己日后使用。有点乱,等以后再继续完善。

首先常用的函数,类库放在一个公共目录中,网站的配置信息存放在一个公共文件中如config . php ,
条件允许的话,可以放在非WEB目录中。

我借鉴了osCommerce的一些写法,比如将公用文件放在includes
/ application_top . php中。
在很多时候,include_path会搞得人头痛,因此不如将它取消,全部用自己定义的include_path值
<? php
 
// 防止直接访问此文件
  if ( eregi ( " application_top.php " , $_SERVER [ ' PHP_SELF ' ])) {
   
header ( " location: ../index.php " );
   
die ();
  }
 
if ( preg_match ( ' /windows/i ' , $_ENV [ ' OS ' ])) {
   
$include_separator = ' ; ' ;
  }
else {
     
$include_separator = ' : ' ;
  }
 
require_once ( ' config.php ' );
 
$include_path = DIR_WS_INCLUDES . $include_separator .
                  DIR_WS_INCLUDES
. ' smarty ' . $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文件,然后需要用的时候,就调用它们如:
<? php
define ( ' _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 );
?>
<? php
 
function getSafeValue( $value )
  {
     
// 如果get_magic_quotes_gpc打开了,则不处理,否则用addslashes处理
      if ( ! get_magic_quotes_gpc ()) {
         
return addslashes ( $value );
      }
else {
         
return $value ;
      }
  } 
?>

模板

用模板的好处,就是在当你要改版面的时候,工作量少一点。我用的是Smarty模板,以前在模板中用了很多的模板
自己的逻辑判断,觉得这样不好,应该尽量地将这些逻辑判断交给PHP来处理,模板只要显示就可以了:
<% $variable %>
另外如果采用DIV
+ CSS的话,改起版面来就可以更加方便。
< div id = " product " ><% $variable %></ div >

缓存加速

打开Smarty的Cache功能,这样第二次访问页面就是访问接近HTM的页面了,结合GZIP压缩输出,使访问速度可以更快一些。

<? php
 
// if gzip_compression is enabled, start to buffer the output
  if ( ( $ext_zlib_loaded = extension_loaded ( ' zlib ' )) && ( PHP_VERSION >= ' 4 ' ) ) {
   
if (( $ini_zlib_output_compression = (int) ini_get ( ' zlib.output_compression ' )) < 1 ) {
     
if ( PHP_VERSION >= ' 4.0.4 ' ) {
       
ob_start ( ' ob_gzhandler ' );
      }
    }
else {
     
ini_set ( ' zlib.output_compression_level ' , 9 );
    }
  }
?>

<? php
/*
  $Id: jxyuhua.php,v 1.4 February 26, 2006, 8:24 pm hpdl Exp $
*/
 
require_once ' includes/application_top.php ' ;
 
if ( ! $class_smarty -> is_cached(TPL_NAME , $cache_id )) {
     
// 逻辑处理
  }
 
// 显示内容
  $class_smarty -> display(TPL_NAME , $cache_id );
 
require_once DIR_WS_INCLUDES . ' includes/application_bottom.php ' ;
?>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值