首页 > 其他 > 详细

时间:2014年3月26日商城准备和框架搭建第一版

时间:2014-03-30 03:29:38      阅读:401      评论:0      收藏:0      [点我收藏+]

时间:2014326日商城准备和框架搭建第一版

商城框架搭建准备工作:

报错级别:开发状态 上线状态

路径信息的初始化:init.php

运行日志:log.class.php

----------运行中的错误信息 sql信息记录下来,文件操作

-----------日志按天生成目录存放  目录创建

数据库类: db.class.php  mysql.class.php

读取配置文件:

-----------------------

魔术引号:

参数过滤: GET/POST 递归

get_magic_quotes_gpc() 获取当前 magic_quotes_gpc 的配置选项设置

addslashes — 使用反斜线引用字符串

magic_quotes_sybase 被设置成 on 时,意味着插入 时将使用 进行转义。

PHP 5.4 之前 PHP 指令 magic_quotes_gpc 默认是 on, 实际上所有的 GETPOST COOKIE 数据都用被 addslashes() 了。

不要对已经被 magic_quotes_gpc 转义过的字符串使用 addslashes() ,因为这样会导致双层转义。

可以使用函数 get_magic_quotes_gpc() 进行检测。

array_walk_recursive — 对数组中的每个成员递归地应用用户函数

bubuko.com,布布扣

出现错误!

启动的规则:

Index.php

-------init.php

----------计算ROOT及根目录

----------定义调试模式

-----------引入最基础的类:db.class.php conf.class.php

------------递归过滤参数

-------------日志记录功能

Config类:$conf对象----config.inc.php配置文件 $_CFG=array(host=>’’,user=’’,pwd=’’)

     ------------读取$_CFG,数据放到$data属性

Fileinit.php 文件作用:框架初始化

-----------用递归的方式,过滤$_POST $_GET $_COOKIE

------------设置报错级别

-------------------

<?php

/****

框架的初始化

过滤参数,用递归的方式过滤$_GET$_POST$_COOKIE

设置报错级别,

****/

define("DEBUG", true);

//设置报错级别

if (defined("DEBUG")) {

error_reporting(E_ALL);

}

else

{

error_reporting(0);

}

//初始化绝对路径

//换成正斜线,winlinux都支持正斜线linux不支持反斜线

//__FILE__文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。

//echo __FILE__;

//echo substr (str_replace(‘\\‘, ‘/‘, __FILE__),0,-8);

//也可以使用__DIR__不过版本比较高,5.3以后版本才出现

//dirname — 返回路径中的目录部分

//路径算好后,使用常量保存,无论在何处引用,获取的值都一样

define("ROOT", dirname(dirname(str_replace(‘\\‘, ‘/‘, __FILE__))."/"));//定义网站根目录

//将其他需要引入的文件引入

require(ROOT."config.inc.php");

//require(ROOT."db.class.php");

require(ROOT."config.class.php");

require(ROOT."log.class.php");

?>

在首页测试:

/****

所有用户访问的页面都要先加载init.php

****/

require("./include/init.php");

$conf = conf::getIns();

//动态读取选项

echo $conf->host."<br />";

echo $conf->user."<br/>";

//动态追加选项

$conf->template_dir = "D:/www/smarty";

echo $conf->template_dir;

---------------------------设置DEBUG全局变量,如果设置为上线环境,报错级别最低,否则生产环境报所有错误

Filedb.class.php 作用:数据库类

-------------采用那种数据库,先不确定

<?php

/****

数据库类

采用什么数据库,都可以

****/

abstract class db{

/*

连接服务器

param $h 服务器地址

param $u 用户名

param $p 密码

return bool

*/

public abstract function connect($h,$u,$p){

}

/*

发送查询

param $sql 发送查询语句

return mixed bool/resource 返回混合的类型,资源

*/

public abstract function query($sql){

}

/*

查询多行数据

param $sql select语句

return array/bool

*/

public abstract function getAll(){}

/*

查询单行数据

param $sql select语句

return array/bool

*/

public abstract function getRow(){}

/*

查询单个数据

param $sql select语句

return array/bool

*/

public abstract function getOne(){}

/*

自动拼接insert/update语句

param $table  表名

param  $data

return array/bool

Insert into user(username,email) values(zhangsan,zhangsan@163.com);

    autoExecute(user,array(username=>zhangsan,email=>zhangsan@163.com),insert)

      Where 条件是update使用的,删除也要使用

*/

public abstract function autoExcute($table,$data,$act="insert",$where=""){}

}

?>

Filemysql.class.php 作用:

Fileconfig.inc.php 文件作用:

----------------

--------------------------------bubuko.com,布布扣

读取配置文件,配置文件往往只放数据库信息,因此被数据库类读到就可以了

但是配置文件的信息还要包括缓存信息/smarty的目录信息,就得要求多个类都可以读到

不能每个类都include引入

解决问题:多个类读取config.inc.php,使用config.class.php读取,

config类统一把配置信息读取出来,所有类再需要配置信息,

都从config类读取,达到只需读取一次的目的

多个类来读取,需要保持读取结果一致性

bubuko.com,布布扣

Fileconfig.class.php  配置文件操作类

class conf{

protected static $ins = null;

protected $data = array();//

   //将构造方法封死,不让继承

final protected function  __construct(){

       //引入配置文件,需要注意路径问题

include(ROOT."config.inc.php");

//一次性把配置文件信息读取进来,以后不需再获取

//赋值给data属性,在需要获取配置信息,直接从data属性获取

$this->data = $_CFG;

}

final protected function  __clone(){

}

//self关键字:不指向任何已经实例化的对象,

//一般用于指向类中的静态变量

//单例模式

public static function getIns(){

//instanceof检查类和对象之间的关系

if (self::$ins instanceof self) {//如果$ins是自身的一个实例

return self::$ins;//返回自身实例

}

else

{

self::$ins = new self();//不是就造一个自身对象

return self::$ins;

}

}

}

测试:config.class.php

$conf = conf::getIns();

//print_r($conf);

/*

conf Object

(

   [data:protected] => Array

       (

           [host] => localhost

           [user] => root

           [pwd] =>

       )

)*/

已经可以把配置文件信息读取到自身的data属性存储起来

更改配置文件操作类,可以读取某个选项的值

$data是保护权限,外界不可直接读取

利用魔术方法getset,动态读取或更改信息

class conf{

protected static $ins = null;

protected $data = array();//

   //将构造方法封死,不让继承

final protected function  __construct(){

       //引入配置文件,需要注意路径问题

include(ROOT."config.inc.php");

//一次性把配置文件信息读取进来,以后不需再获取

//赋值给data属性,在需要获取配置信息,直接从data属性获取

$this->data = $_CFG;

}

final protected function  __clone(){

}

//self关键字:不指向任何已经实例化的对象,

//一般用于指向类中的静态变量

//单例模式

public static function getIns(){

//instanceof检查类和对象之间的关系

if (self::$ins instanceof self) {//如果$ins是自身的一个实例

return self::$ins;//返回自身实例

}

else

{

self::$ins = new self();//不是就造一个自身对象

return self::$ins;

}

}

//用魔术方法读取data内的信息

public function __get($key){

       //array_key_exists — 检查给定的键名或索引是否存在于数组中

      //boolarray_key_exists ( mixed $key , array $search )

if (array_key_exists($key, $this->data)) {//判断在数组内,存在则返回

return $this->data[$key];

}

else

{

return null;

}

}

//用魔术方法,在运行期,动态增加或改变配置选项

public function __set($key,$value){

$this->data[$key] = $value;

}

//

}

继续测试:

$conf = conf::getIns();

/*//动态读取选项

echo $conf->host."<br />";

echo $conf->user."<br/>";

//动态追加选项

$conf->template_dir = "D:/www/smarty";

echo $conf->template_dir;*/


本文出自 “杜国栋个人PHP学习博文” 博客,请务必保留此出处http://duguodong.blog.51cto.com/7667978/1386380

时间:2014年3月26日商城准备和框架搭建第一版,布布扣,bubuko.com

时间:2014年3月26日商城准备和框架搭建第一版

原文:http://duguodong.blog.51cto.com/7667978/1386380

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!