欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

php 無限級(jí)緩存的類的擴(kuò)展

 更新時(shí)間:2009年03月16日 22:43:36   作者:  
根據(jù)條件建立分類緩存減少類別使用

復(fù)制代碼 代碼如下:

<?php
/**
* 功能: 根據(jù)條件建立分類緩存減少類別使用
* 創(chuàng)建日期:Thu May 31 15:55:11 CST 2007
* 最后更新:
* 作者: sanshi <sanshi0815@tom.com>
*/

class treeCache
{
var $tableName = "index_category"; //表名
var $where = "1"; //where條件
var $pidStr ="i_c_pid"; //pid 的字段名
var $tempCode = array(); //生成文件的數(shù)組
var $pid = '0'; //pid的初始值
var $db ; //數(shù)據(jù)庫(kù)句柄
var $idStr="i_c_id"; //取得的數(shù)據(jù)id
var $title = "i_c_cn"; //名字字段
var $createArrayName = "treeCache"; //建立的數(shù)組名字
var $createFileName =""; //建立文件的名字
var $appendArr = array(); //附加的屬性,需要字段名與數(shù)據(jù)里的名對(duì)應(yīng)
var $is_utf8 = false;
function treeCache()
{
}
function set($db)
{
$this->db = $db;
$this->tempCode[] = "<?php";
}
//取得所有的一級(jí)
function getRootID()
{
$sql = "SELECT {$this->idStr} FROM {$this->tableName} WHERE
{$this->pidStr}='{$this->pid}' AND {$this->where} ";
//exit($sql);
$result = $this->db->select($sql);
$temp = array();
foreach ($result as $r)
{
$temp[]=$r["{$this->idStr}"];
}
$this->tempCode[] = "\${$this->createArrayName}['root']='".implode(',',$temp)."';";
//print_r($temp);
return $temp;
}
//取得子id
function getChildren($pid)
{
$sql = "SELECT {$this->idStr} FROM {$this->tableName} WHERE
{$this->pidStr}='{$pid}' AND {$this->where} ";
$result = $this->db->select($sql);
$temp = array();
foreach ($result as $r)
{
$temp[]=$r["{$this->idStr}"];
}
return $temp;
}
//取得夫id
function getParent($cid)
{
$sql = "SELECT {$this->pidStr} FROM {$this->tableName} WHERE
{$this->idStr}='{$cid}' AND {$this->where} ";
$result = $this->db->select($sql);
//print_r($result);exit();
return $result[0]["{$this->pidStr}"];
}
//取得上級(jí)的id
function getPidStr($cid,$pidStr="")
{
$pid=$this->getParent($cid);
$temp = array();
while ($pid!=$this->pid && !emptyempty($pid)) {
$temp[] = $pid;
$pid=$this->getParent($pid);
}
//print_r($temp);
return implode(',',$temp);
}
//取得深度
function getDepth($cid,$depth=0)
{
$pid=$this->getParent($cid);
$depth++;
if( $pid != $this->pid && !emptyempty($pid))
$depth = $this->getDepth($pid,$depth);
return $depth;
}
//建立文件
function make()
{
if(emptyempty($this->createFileName))
$this->createFileName = "{$this->createArrayName}.data.php";

$rootArr = $this->getRootID();
$selectF = "{$this->idStr},{$this->title},{$this->pidStr}";
foreach ($this->appendArr as $app)
{
if(emptyempty($app)) continue;
$selectF .=",{$app}";
}
$sql = "SELECT {$selectF} FROM {$this->tableName} WHERE
{$this->where}";
$result = $this->db->select($sql);
for ($i=0;$i<count($result);$i++)
{
//id值
$this->tempCode[] =
"\${$this->createArrayName}['{$result[$i][$this->idStr]}']['id']='{$result[$i]["{$this->idStr}"]}';";
//標(biāo)題
$this->tempCode[] =
"\${$this->createArrayName}['{$result[$i][$this->idStr]}']['title']='{$result[$i]["{$this->title}"]}';";
//父id
$this->tempCode[] =
"\${$this->createArrayName}['{$result[$i][$this->idStr]}']['pid']='{$result[$i]["{$this->pidStr}"]}';";
//子id
$this->tempCode[] =
"\${$this->createArrayName}['{$result[$i][$this->idStr]}']['cid']='".implode(',',$this->getChildren($result[$i]["$this->idStr"]))."';";
//目錄深度
$this->tempCode[] =
"\${$this->createArrayName}['{$result[$i][$this->idStr]}']['depth']='".$this->getDepth($result[$i]["$this->idStr"])."';";
//父id的id串
$this->tempCode[] =
"\${$this->createArrayName}['{$result[$i][$this->idStr]}']['pstr']='".$this->getPidStr($result[$i]["$this->idStr"])."';";
//添加的附加屬性
foreach ($this->appendArr as $app)
{
if(emptyempty($app)) continue;
$this->tempCode[] =
"\${$this->createArrayName}['{$result[$i][$this->idStr]}']['{$app}']='{$result[$i]["{$app}"]}';";
}
}
$this->tempCode[] = "return \${$this->createArrayName};";
$this->tempCode[] = "?>";
//$content = implode("\n",$this->tempCode);
//print_r($this->tempCode);
$content = implode("\n",$this->tempCode);
//建立文件
$fio=Factory::getBaseClass('FileIO');
if($this->is_utf8) $content = "\xEF\xBB\xBF".$content;
$fio->writeFile($this->createFileName,$content);
return $content ;
}
}
//加載的文件就是為了,數(shù)據(jù)庫(kù)連接
//需要數(shù)據(jù)庫(kù)有 select 方法
/*
include_once(dirname(dirname(__FILE__))."/config/config.inc.php");
include_once(CLASSES_PATH."factryObject.class.php");

$db = factryObject::getDB('indexPush');
$c = new treeCache($db);
$c->make();
//exit();

//做分析
include_once("treeCache.data.php");
$treeCache=isset($treeCache) ? $treeCache : array();
$rootStr = isset($treeCache['root']) ? $treeCache['root'] : "";
echo parseTree($treeCache,$rootStr);
function parseTree($treeCache,$rootStr)
{
$tempStr = "";
$temp = explode(',',$rootStr);
foreach ($temp AS $cid)
{
$info = $treeCache[$cid];
$cidStr = $info['cid'];
$tempStr .= str_repeat('-',($info['depth']-1)*3);
$tempStr.=$info['title'];
if(empty($info['pid']))
{
//附加操作
}
$tempStr .= "<br/>";
if(!empty($info['cid']))
$tempStr .=parseTree($treeCache,$info['cid']);
}
return $tempStr;
}
*/
?>
<?php
/**
* 功能: 根據(jù)條件建立分類緩存減少類別使用
* 創(chuàng)建日期:Thu May 31 15:55:11 CST 2007
* 最后更新:
* 作者: sanshi <sanshi0815@tom.com>
*/

class treeCache
{
var $tableName = "index_category"; //表名
var $where = "1"; //where條件
var $pidStr ="i_c_pid"; //pid 的字段名
var $tempCode = array(); //生成文件的數(shù)組
var $pid = '0'; //pid的初始值
var $db ; //數(shù)據(jù)庫(kù)句柄
var $idStr="i_c_id"; //取得的數(shù)據(jù)id
var $title = "i_c_cn"; //名字字段
var $createArrayName = "treeCache"; //建立的數(shù)組名字
var $createFileName =""; //建立文件的名字
var $appendArr = array(); //附加的屬性,需要字段名與數(shù)據(jù)里的名對(duì)應(yīng)
var $is_utf8 = false;
function treeCache()
{
}
function set($db)
{
$this->db = $db;
$this->tempCode[] = "<?php";
}
//取得所有的一級(jí)
function getRootID()
{
$sql = "SELECT {$this->idStr} FROM {$this->tableName} WHERE
{$this->pidStr}='{$this->pid}' AND {$this->where} ";
//exit($sql);
$result = $this->db->select($sql);
$temp = array();
foreach ($result as $r)
{
$temp[]=$r["{$this->idStr}"];
}
$this->tempCode[] = "\${$this->createArrayName}['root']='".implode(',',$temp)."';";
//print_r($temp);
return $temp;
}
//取得子id
function getChildren($pid)
{
$sql = "SELECT {$this->idStr} FROM {$this->tableName} WHERE
{$this->pidStr}='{$pid}' AND {$this->where} ";
$result = $this->db->select($sql);
$temp = array();
foreach ($result as $r)
{
$temp[]=$r["{$this->idStr}"];
}
return $temp;
}
//取得夫id
function getParent($cid)
{
$sql = "SELECT {$this->pidStr} FROM {$this->tableName} WHERE
{$this->idStr}='{$cid}' AND {$this->where} ";
$result = $this->db->select($sql);
//print_r($result);exit();
return $result[0]["{$this->pidStr}"];
}
//取得上級(jí)的id
function getPidStr($cid,$pidStr="")
{
$pid=$this->getParent($cid);
$temp = array();
while ($pid!=$this->pid && !empty($pid)) {
$temp[] = $pid;
$pid=$this->getParent($pid);
}
//print_r($temp);
return implode(',',$temp);
}
//取得深度
function getDepth($cid,$depth=0)
{
$pid=$this->getParent($cid);
$depth++;
if( $pid != $this->pid && !empty($pid))
$depth = $this->getDepth($pid,$depth);
return $depth;
}
//建立文件
function make()
{
if(empty($this->createFileName))
$this->createFileName = "{$this->createArrayName}.data.php";

$rootArr = $this->getRootID();
$selectF = "{$this->idStr},{$this->title},{$this->pidStr}";
foreach ($this->appendArr as $app)
{
if(empty($app)) continue;
$selectF .=",{$app}";
}
$sql = "SELECT {$selectF} FROM {$this->tableName} WHERE
{$this->where}";
$result = $this->db->select($sql);
for ($i=0;$i<count($result);$i++)
{
//id值
$this->tempCode[] =
"\${$this->createArrayName}['{$result[$i][$this->idStr]}']['id']='{$result[$i]["{$this->idStr}"]}';";
//標(biāo)題
$this->tempCode[] =
"\${$this->createArrayName}['{$result[$i][$this->idStr]}']['title']='{$result[$i]["{$this->title}"]}';";
//父id
$this->tempCode[] =
"\${$this->createArrayName}['{$result[$i][$this->idStr]}']['pid']='{$result[$i]["{$this->pidStr}"]}';";
//子id
$this->tempCode[] =
"\${$this->createArrayName}['{$result[$i][$this->idStr]}']['cid']='".implode(',',$this->getChildren($result[$i]["$this->idStr"]))."';";
//目錄深度
$this->tempCode[] =
"\${$this->createArrayName}['{$result[$i][$this->idStr]}']['depth']='".$this->getDepth($result[$i]["$this->idStr"])."';";
//父id的id串
$this->tempCode[] =
"\${$this->createArrayName}['{$result[$i][$this->idStr]}']['pstr']='".$this->getPidStr($result[$i]["$this->idStr"])."';";
//添加的附加屬性
foreach ($this->appendArr as $app)
{
if(empty($app)) continue;
$this->tempCode[] =
"\${$this->createArrayName}['{$result[$i][$this->idStr]}']['{$app}']='{$result[$i]["{$app}"]}';";
}
}
$this->tempCode[] = "return \${$this->createArrayName};";
$this->tempCode[] = "?>";
//$content = implode("\n",$this->tempCode);
//print_r($this->tempCode);
$content = implode("\n",$this->tempCode);
//建立文件
$fio=Factory::getBaseClass('FileIO');
if($this->is_utf8) $content = "\xEF\xBB\xBF".$content;
$fio->writeFile($this->createFileName,$content);
return $content ;
}
}
//加載的文件就是為了,數(shù)據(jù)庫(kù)連接
//需要數(shù)據(jù)庫(kù)有 select 方法
/*
include_once(dirname(dirname(__FILE__))."/config/config.inc.php");
include_once(CLASSES_PATH."factryObject.class.php");

$db = factryObject::getDB('indexPush');
$c = new treeCache($db);
$c->make();
//exit();

//做分析
include_once("treeCache.data.php");
$treeCache=isset($treeCache) ? $treeCache : array();
$rootStr = isset($treeCache['root']) ? $treeCache['root'] : "";
echo parseTree($treeCache,$rootStr);
function parseTree($treeCache,$rootStr)
{
$tempStr = "";
$temp = explode(',',$rootStr);
foreach ($temp AS $cid)
{
$info = $treeCache[$cid];
$cidStr = $info['cid'];
$tempStr .= str_repeat('-',($info['depth']-1)*3);
$tempStr.=$info['title'];
if(empty($info['pid']))
{
//附加操作
}
$tempStr .= "<br/>";
if(!empty($info['cid']))
$tempStr .=parseTree($treeCache,$info['cid']);
}
return $tempStr;
}
*/
?>

這個(gè)類是改善過的,當(dāng)初做這個(gè)的適合,只能是數(shù)字的作為數(shù)組下標(biāo),這次支持字母了

另外就是關(guān)于解析

view plaincopy to clipboardprint?
<?php
class parseTree
{
var $ads_type_file = "";
var $isX = false;
var $rowSize=2;
function parseTree()
{
$this->ads_type_file = CACHE_PATH."ads_type_arr.data.php";
$this->ads_city_file = CACHE_PATH."ads_city_arr.data.php";
}
function make_ads_type()
{
$db = Factory::getDB("ads_type");
$tree =Factory::getItemClass('treeCache');
$tree->set($db);
$tree->tableName=$db->tableName;
$tree->pidStr ="ads_type_pid";
$tree->idStr = "ads_type_id";
$tree->title = "ads_type_name";
$tree->createArrayName ="ads_type_arr";
$tree->where = " ads_type_state=1 ORDER BY ads_type_id DESC ";
$tree->appendArr = array("ads_type_info");
$tree->createFileName = $this->ads_type_file;
$tree->is_utf8 = true;
return $tree->make();
}
function get_ads_type_str()
{
$temp_arr = $this->get_ads_type_arr();
$treeArr = emptyempty($temp_arr) ? array() : $temp_arr;
$rootStr = isset($temp_arr['root']) ? $temp_arr['root'] : "";
$show_content = $this->__parseTree($treeArr,$rootStr,'pares_type_link');
return $show_content;
}
function get_ads_type_arr()
{
return is_file($this->ads_type_file) ? require($this->ads_type_file) : array();
}
function pares_type_link($info)
{
$class_name = "ads_type";
$tempStr = "[<a href="?c={$class_name}&m=add&ads_type_pid={$info[" href="?c={$class_name}&m=add&ads_type_pid={$info["id']}'>子-添加</a>]";
$tempStr .="[<a href="?c={$class_name}&m=edit&ads_type_id={$info[" href="?c={$class_name}&m=edit&ads_type_id={$info["id']}'>編輯</a>]";
$tempStr .="[<a href="?c={$class_name}&m=del&ads_type_id={$info[" href="?c={$class_name}&m=del&ads_type_id={$info["id']}'>刪除</a>]";
return $tempStr;
}
//根據(jù)提供的類別號(hào)取得類別數(shù)組
function get_type_arr($type_no=0)
{
$temp_arr = $this->get_ads_type_arr();
$rootStr = $type_no==0 ? (isset($temp_arr['root'])?$temp_arr['root'] : "") : (isset($temp_arr[$type_no]['cid'])?$temp_arr[$type_no]['cid']:"");
$temp = explode(',',$rootStr);
$return_temp = array();
foreach($temp as $cid)
{
if(isset($temp_arr[$cid])) $return_temp[$temp_arr[$cid]['id']]=$temp_arr[$cid]['title'];
}
return $return_temp;
}

function make_ads_city()
{
$db = Factory::getDB("ads_city");
$tree =Factory::getItemClass('treeCache');
$tree->set($db);
$tree->tableName=$db->tableName;
$tree->pidStr ="ads_city_pid";
$tree->idStr = "ads_city_no";
$tree->title = "ads_city_name";
$tree->createArrayName ="ads_city_arr";
$tree->where = " ads_city_state=1 ORDER BY ads_city_no DESC ";
$tree->appendArr = array("ads_city_info");
$tree->createFileName = $this->ads_city_file;
$tree->is_utf8 = true;
return $tree->make();
}
function get_ads_city_arr()
{
return is_file($this->ads_city_file) ? require($this->ads_city_file) : array();
}
function get_ads_city_str()
{
$temp_arr = $this->get_ads_city_arr();
$treeArr = emptyempty($temp_arr) ? array() : $temp_arr;
$rootStr = isset($temp_arr['root']) ? $temp_arr['root'] : "";
$show_content = $this->__parseTree($treeArr,$rootStr,'pares_city_link');
return $show_content;
}
function pares_city_link($info)
{
$class_name = "ads_city";
$tempStr = "[<a href="?c={$class_name}&m=add&ads_city_pid={$info[" href="?c={$class_name}&m=add&ads_city_pid={$info["id']}'>子-添加</a>]";
$tempStr .="[<a href="?c={$class_name}&m=edit&ads_city_no={$info[" href="?c={$class_name}&m=edit&ads_city_no={$info["id']}'>編輯</a>]";
$tempStr .="[<a href="?c={$class_name}&m=del&ads_city_no={$info[" href="?c={$class_name}&m=del&ads_city_no={$info["id']}'>刪除</a>]";
return $tempStr;
}
//根據(jù)提供的城市號(hào)取得城市數(shù)組
function get_city_arr($city_no=0)
{
$temp_arr = $this->get_ads_city_arr();
$rootStr = $city_no==0 ? (isset($temp_arr['root'])?$temp_arr['root'] : "") : (isset($temp_arr[$city_no])?$temp_arr[$city_no]:"");
$temp = explode(',',$rootStr);
$return_temp = array();
foreach($temp as $cid)
{
if(isset($temp_arr[$cid])) $return_temp[$temp_arr[$cid]['id']]=$temp_arr[$cid]['title'];
}
return $return_temp;
}

function __parseTree($treeCache,$rootStr,$fuc_str)
{
$tempStr = "";
$temp = explode(',',$rootStr);
if(emptyempty($temp)) return "";
$this->layer=0;
foreach ($temp AS $cid)
{
if(isset($treeCache[$cid]))
{
$info = $treeCache[$cid];
$cidStr = $info['cid'];
//如果下面有子id
if($info["cid"]!="")
{
$tempStr .="<div >";
$tempStr .= str_repeat(' ',($info['depth']-1)*3);
if($info["cid"]!="")
{
//$tempStr .="<img src="/images/arrow.jpg" src="images/arrow.jpg" style="cursor:hand;" style="cursor:hand;" onClick='javascript:ShowMenu(\"l_{$info['id']}\");' id='pic_l_{$info['id']}'>";
}
//$tempStr .=">";
$tempStr.=$info['title'];
$tempStr .=$this->{$fuc_str}($info);
$tempStr .="</div>";
$tempStr .="<div id='l_{$info['id']}' >";
$tempStr .= $this->__parseTree($treeCache,$info['cid'],$fuc_str);
$tempStr .="</div>";
}else{
$this->layer++;
$tempStr .= str_repeat(' ',($info['depth']-1)*3);
$tempStr.=$info['title'];
$tempStr .=$this->{$fuc_str}($info);
if($this->isX==true)
{
if($this->layer % $this->rowSize ==0)
$tempStr .= "<br/>";
else
$tempStr .= " ";
}else{
$tempStr .= "<br/>";
}
}
}
}
return $tempStr;
}
}
?>

相關(guān)文章

  • 聊聊PHP中require_once()函數(shù)為什么不好用

    聊聊PHP中require_once()函數(shù)為什么不好用

    php中你大概有發(fā)現(xiàn)require_once()不好用,但是沒有深究過它為什么不好用,這篇文章從該函數(shù)的定義和用法聊聊不好用的原因,文中講述的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考價(jià)值
    2021-09-09
  • PHP中session使用方法詳解

    PHP中session使用方法詳解

    在PHP開發(fā)中對(duì)比起Cookie,session 是存儲(chǔ)在服務(wù)器端的會(huì)話,相對(duì)安全,并且不像 Cookie 那樣有存儲(chǔ)長(zhǎng)度限制,本文簡(jiǎn)單介紹 session 的使用
    2007-03-03
  • PHP縮略圖等比例無損壓縮,可填充空白區(qū)域補(bǔ)充色

    PHP縮略圖等比例無損壓縮,可填充空白區(qū)域補(bǔ)充色

    PHP縮略圖 等比例無損壓縮,可填充空白區(qū)域補(bǔ)充色的實(shí)現(xiàn)代碼,需要的朋友可以參考下。
    2011-06-06
  • PHP數(shù)組在底層的實(shí)現(xiàn)原理詳解

    PHP數(shù)組在底層的實(shí)現(xiàn)原理詳解

    這篇文章講給大家詳細(xì)介紹一下PHP數(shù)組在底層的實(shí)現(xiàn)原理,PHP數(shù)組在底層的實(shí)現(xiàn)原理可以分為兩種類型:基于哈希表的實(shí)現(xiàn)和基于有序列表的實(shí)現(xiàn),文中通過代碼示例介紹的非常詳細(xì),具有一定的參考價(jià)值,需要的朋友可以參考下
    2023-11-11
  • php變量與字符串的增刪改查操作示例

    php變量與字符串的增刪改查操作示例

    這篇文章主要介紹了php變量與字符串的增刪改查操作,結(jié)合實(shí)例形式分析了php變量與字符串的增刪改查操作原理、編碼轉(zhuǎn)換、計(jì)算等相關(guān)操作技巧,需要的朋友可以參考下
    2020-05-05
  • 基于PHP+Ajax實(shí)現(xiàn)表單驗(yàn)證的詳解

    基于PHP+Ajax實(shí)現(xiàn)表單驗(yàn)證的詳解

    本篇文章是對(duì)PHP+Ajax實(shí)現(xiàn)表單驗(yàn)證的代碼進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • php中opendir函數(shù)用法實(shí)例

    php中opendir函數(shù)用法實(shí)例

    這篇文章主要介紹了php中opendir函數(shù)用法,以實(shí)例形式詳細(xì)講述了opendir函數(shù)打開目錄的用法及相關(guān)的注意事項(xiàng),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2014-11-11
  • php防止CC攻擊代碼 php防止網(wǎng)頁(yè)頻繁刷新

    php防止CC攻擊代碼 php防止網(wǎng)頁(yè)頻繁刷新

    這篇文章主要介紹了php防止CC攻擊代碼和php防止網(wǎng)頁(yè)頻繁刷新,網(wǎng)頁(yè)快速惡意刷新,cc攻擊利用代理服務(wù)器生成指向目標(biāo)站點(diǎn)的合法請(qǐng)求,模擬多用戶不停的對(duì)受害網(wǎng)站進(jìn)行訪問,感興趣的小伙伴們可以研究一下
    2015-12-12
  • 解決form中action屬性后面?傳遞參數(shù) 獲取不到的問題

    解決form中action屬性后面?傳遞參數(shù) 獲取不到的問題

    下面小編就為大家?guī)硪黄鉀Qform中action屬性后面?傳遞參數(shù) 獲取不到的問題。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-07-07
  • 發(fā)款php蜘蛛統(tǒng)計(jì)插件只要有mysql就可用

    發(fā)款php蜘蛛統(tǒng)計(jì)插件只要有mysql就可用

    有時(shí)候我們?yōu)榱丝匆幌轮┲肱佬械那闆r,不得不對(duì)日志進(jìn)行大量的分析,由此想做一款插件可以記錄蜘蛛的情況。在第一次做的時(shí)候,只是記錄下蜘蛛的爬行次數(shù),不大好分析。
    2010-10-10

最新評(píng)論