Home > Backend Development > PHP Tutorial > Infinite Return: Super Police PHP infinite cache class extension

Infinite Return: Super Police PHP infinite cache class extension

WBOY
Release: 2016-07-29 08:39:31
Original
1905 people have browsed it

Copy the code The code is as follows:


/**
* Function: Create category cache based on conditions to reduce category usage
* Created date: Thu May 31 15:55:11 CST 2007
* Last updated:
* Author: sanshi
*/
class treeCache
{
var $tableName = "index_category"; //Table name
var $where = "1"; //where condition
var $pidStr ="i_c_pid"; //Field name of pid
var $tempCode = array(); //Array of generated files
var $pid = '0'; //Initial value of pid
var $db; //Database handle
var $idStr="i_c_id"; //The obtained data id
var $title = "i_c_cn"; //Name field
var $createArrayName = "treeCache"; //The created array name
var $createFileName ="" ; //Create the name of the file
var $appendArr = array(); //Additional attributes require the field name to correspond to the name in the data
var $is_utf8 = false;
function treeCache()
{
}
function set ($db)
{
$this->db = $db;
$this->tempCode[] = "}
//Get all first-level
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;
}
//Get child 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;
}
//Get husband 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}"];
}
//Get the superior’s 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);
}
//Get the depth
function getDepth($cid,$depth=0)
{
$pid=$this->getParent($cid);
$depth++;
if( $pid ! = $this->pid && !emptyempty($pid))
$depth = $this->getDepth($pid,$depth);
return $depth;
}
//Create file
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{
// id value
$this->tempCode[] =
"${$this->createArrayName}['{$result[$i][$this->idStr]}']['id']=' {$result[$i]["{$this->idStr}"]}';";
//Title
$this->tempCode[] =
"${$this->createArrayName}[ '{$result[$i][$this->idStr]}']['title']='{$result[$i]["{$this->title}"]}';";
//Parent id
$this->tempCode[] =
"${$this->createArrayName}['{$result[$i][$this->idStr]}']['pid' ]='{$result[$i]["{$this->pidStr}"]}';";
//Sub-id
$this->tempCode[] =
"${$this-> ;createArrayName}['{$result[$i][$this->idStr]}']['cid']='".implode(',',$this->getChildren($result[$i ]["$this->idStr"]))."';";
//Directory depth
$this->tempCode[] =
"${$this->createArrayName}['{$result [$i][$this->idStr]}']['depth']='".$this->getDepth($result[$i]["$this->idStr"])." ';";
//The id string of the parent id
$this->tempCode[] =
"${$this->createArrayName}['{$result[$i][$this->idStr] }']['pstr']='".$this->getPidStr($result[$i]["$this->idStr"])."';";
//Added additional attributes
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);
//Create file
$fio=Factory::getBaseClass('FileIO');
if($this->is_utf8) $ content = "xEFxBBxBF".$content;
$fio->writeFile($this->createFileName,$content);
return $content ;
}
}
//The loaded file is for database connection
/ /Requires database to have select method
/*
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();
//Do analysis
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']))
{
//Additional operation
}
$tempStr .= "
";
if(!empty($info['cid']))
$tempStr .=parseTree($treeCache,$info['cid']);
}
return $tempStr;
}
*/
? >
/**
* Function: Create category cache based on conditions to reduce category usage
* Created date: Thu May 31 15:55:11 CST 2007
* Last updated:
* Author: sanshi
*/
class treeCache
{
var $tableName = "index_category"; //Table name
var $where = "1"; //where condition
var $ pidStr = "i_c_pid"; //Field name of pid
var $tempCode = array(); //Array of generated files
var $pid = '0'; //Initial value of pid
var $db; //Database Handle
var $idStr="i_c_id"; //The obtained data id
var $title = "i_c_cn"; //Name field
var $createArrayName = "treeCache"; //The name of the created array
var $createFileName =" "; //Create the name of the file
var $appendArr = array(); //Additional attributes, the field name needs to correspond to the name in the data
var $is_utf8 = false;
function treeCache()
{
}
function set($db)
{
$this->db = $db;
$this->tempCode[] = "}
//Get all first-level
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;
}
//Get child 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;
}
//Get husband 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}"];
}
//Get the superior's 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);
}
//Get the depth
function getDepth($cid,$depth=0)
{
$pid=$this->getParent($cid);
$depth++;
if( $pid != $this->pid && !empty($pid))
$depth = $this->getDepth($pid,$depth);
return $depth;
}
//Create file
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{
/ /id value
$this->tempCode[] =
"${$this->createArrayName}['{$result[$i][$this->idStr]}']['id']='{$result[$i]["{$this->idStr}"]}';";
//标题
$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 = "xEFxBBxBF".$content;
$fio->writeFile($this->createFileName,$content);
return $content ;
}
}
//加载的文件就是为了,数据库连接
//需要数据库有 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 .= "
";
if(!empty($info['cid']))
$tempStr .=parseTree($treeCache,$info['cid']);
}
return $tempStr;
}
*/
?>
这个类是改善过的,当初做这个的适合,只能是数字的作为数组下标,这次支持字母了
另外就是关于解析
view plaincopy to clipboardprint?
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 = "[子-添加]";
$tempStr .="[编辑]";
$tempStr .="[删除]";
return $tempStr;
}
//根据提供的类别号取得类别数组
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 = "[子-添加]";
$tempStr .="[编辑]";
$tempStr .="[删除]";
return $tempStr;
}
//根据提供的城市号取得城市数组
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 .="

";
$tempStr .= str_repeat(' ',($info['depth']-1)*3);
if($info["cid"]!="")
{
//$tempStr .="";
}
//$tempStr .=">";
$tempStr.=$info['title'];
$tempStr .=$this->{$fuc_str}($info);
$tempStr .="
";
$tempStr .="";
$tempStr .= $this->__parseTree($treeCache,$info['cid'],$fuc_str);
$tempStr .="
";
}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 .= "
";
else
$tempStr .= " ";
}else{
$tempStr .= "
";
}
}
}
}
return $tempStr;
}
}
?>

以上就介绍了无限归来之超级警察 php 无限级缓存的类的扩展,包括了无限归来之超级警察方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Recommendations
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template