PHP 無限キャッシュ クラス拡張_PHP チュートリアル
/**
* 機能: カテゴリの使用量を減らすために条件に基づいてカテゴリ キャッシュを作成します
* 作成日: Thu May 31 15:55:11 CST 2007
* 最終更新日:
* 著者: sanshi
classtreeCache
{
var $tableName = "index_category"; //テーブル名
var $where = "1"; //where 条件
var $; pidStr = "i_c_pid"; //pid
varのフィールド名 $tempCode = array() //生成されたファイルの配列
var $pid = '0' //pid
varの初期値 $db;ハンドル
var $idStr="i_c_id"; //取得したデータ ID
var $title = "i_c_cn"; //名前フィールド
var $createArrayName = "treeCache" //作成された配列の名前
var $createFileName =" "; // ファイルの名前を作成します
var $appendArr = array(); // 追加の属性、フィールド名はデータ内の名前に対応する必要があります
var $is_utf8 = false;
{
}
function set($db)
{
$this->db = $db;
$this->tempCode[] = "}
//最初にすべてを取得します。レベル
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}"]
//上司の ID を取得します
function getPidStr($cid,$pidStr="")
{
$pid=$this->getParent($cid);
$temp = array(); this->pid && !emptyempty($pid)) {
$temp[] = $pid=$this->getParent($pid);
//print_r($temp); return implode(',' ,$temp);
//深さ
関数を取得します getDepth($cid,$ Depth=0)
{
$pid=$this->getParent($cid);深さ++;
if( $pid != $this->pid && !emptyempty($pid))
$ Depth = $this->getDepth($pid,$ Depth); /ファイルの作成
function make( )
{
if(emptyempty($this->createFileName))
$this->createFileName = "{$this->createArrayName}.data.php";
$rootArr = $this->getRootID ();
$selectF = "{$this->idStr},{$this->pidStr}"; ;appendArr as $app)
{
if(emptyempty($app)) 続行;
$selectF .=",{$app}"
}
$sql = "SELECT {$selectF} FROM {$this-> ;tableName} WHERE
{$ this->where}";
$result = $this->db->select($sql);
for ($i=0;$i
//id 値
$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]}']['深さ']='".$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[] = "${$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"); =factryObject::getDB('indexPush');
$c = newtreeCache($db);
//exit();
include_once(" .data.php");
$treeCache=isset($treeCache) ? $treeCache : array();
$rootStr = isset($treeCache['root']) ? $treeCache['root'] : "";
echo parseTree($treeCache,$rootStr);
function parseTree($treeCache,$rootStr)
{
$tempStr = "";
foreach ($temp AS); $cid)
{
$info = $treeCache[$cid];
$cidStr = $info['cid']
$tempStr .= str_repeat('-',($info['深さ']-1) *3);
$tempStr.=$info['title'];
if(empty($info['pid']))
{
//追加の操作
}
$tempStr .= "
";
if(!empty($info['cid']))
$tempStr .=parseTree($treeCache,$info['cid']);
}
return $tempStr;
}
*/
?>
/**
* 機能: カテゴリの使用量を減らすために条件に基づいてカテゴリ キャッシュを作成します
* 作成日: Thu May 31 15:55:11 CST 2007
* 最終更新日:
* 著者: sanshi
class TreeCache
{
var $tableName = "index_category" //テーブル名
var $where = "1";
var $pidStr ="i_c_pid"; //pid
varのフィールド名 $tempCode = array(); //生成されるファイルの配列
var $pid = '0' //pid
varの初期値//データベースハンドル
var $idStr="i_c_id"; //取得したデータ ID
var $title = "i_c_cn"; //名前フィールド
var $createArrayName = "treeCache"; //作成された配列名
var = ""; //ファイルの名前を作成します
var $appendArr = array(); //追加の属性、フィールド名はデータ内の名前に対応する必要があります
var $is_utf8 = false;
{
}
function set($db)
{
$this->db = $db;
$this->tempCode[] = "//最初にすべてを取得します。レベル
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 ($ 結果を $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}"]
/ /上位 ID を取得
function getPidStr($cid,$pidStr="")
{
$pid=$this->getParent($cid);
$temp = array(); this-> ;pid && !empty($pid)) {
$temp[] = $pid=$this->getParent($pid);
//print_r($temp); return implode( ',',$temp);
//深度を取得する
function getDepth($cid,$ Depth=0)
{
$pid=$this->getParent($cid);深さ++;
if ( $pid != $this->pid && !empty($pid))
$ Depth = $this->getDepth($pid,$ Depth); /ファイルの作成
関数 make()
{
if(empty($this->createFileName))
$this->createFileName = "{$this->createArrayName}.data.php"; = $this->getRootID();
$selectF = "{$this->idStr},{$this->pidStr}"; ;appendArr as $app)
{
if(empty($app)) 続行
$selectF .=",{$app}"
}
$sql = "SELECT {$selectF} FROM {$this-> ;tableName} WHERE
{$this->where}";
$result = $this->db->select($sql);
for ($i=0;$i
//id 値
$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]}']['深さ']='".$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[] =
" ->createArrayName}['{$result[$i][$this->idStr]}']['{$app}']='{$result[$i]["{$app}"] }';";
}
}
$this->tempCode[] = "${$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);
$content を返す ;
}
}
//追加された文件は了のために、データ库接続
//データ库が必要です select メソッド
/*
include_once(dirname(dirname(__FILE__))."/config/config.inc.php");
include_once(CLASSES_PATH."factryObject.class.php");
$db =factoryObject::getDB('indexPush');
$c = 新しいツリーキャッシュ($db);
$c->make();
//終了();
//做分析
include_once("treeCache.data.php");
$treeCache=isset($treeCache) ? $treeCache : array();
$rootStr = isset($treeCache['root']) ? $treeCache['root'] : "";
echo parseTree($treeCache,$rootStr);
関数parseTree($treeCache,$rootStr)
{
$tempStr = "";
$temp =explode(',',$rootStr);
foreach ($temp AS $cid)
{
$info = $treeCache[$cid];
$cidStr = $info['cid'];
$tempStr .= str_repeat('-',($info['深さ']-1)*3);
$tempStr.=$info['タイトル'];
if(empty($info['pid']))
{
//追加操作
}
$tempStr .= "
";
if(!empty($info['cid']))
$tempStr .=parseTree($treeCache,$info['cid']);
}
$tempStr を返します。
}
*/
?>
これは改善されたもので、当初はこれの組み合わせであり、数字の機能としてのみ可能であり、次の文字母了をサポートしています
另外就は解析に関するものです
クリップボードプリントへのプレーンコピーを表示しますか?
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";
}
関数 make_ads_type()
{
$db = Factory::getDB("ads_type");
$tree =Factory::getItemClass('treeCache');
$tree->set($db);
$tree->テーブル名=$db->テーブル名;
$tree->pidStr ="ads_type_pid";
$tree->idStr = "ads_type_id";
$tree->title = "広告タイプ名";
$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();
}
関数 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');
$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 .="[删除]";
$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;
}
関数 make_ads_city()
{
$db = Factory::getDB("ads_city");
$tree =Factory::getItemClass('treeCache');
$tree->set($db);
$tree->テーブル名=$db->テーブル名;
$tree->pidStr ="ads_city_pid";
$tree->idStr = "ads_city_no";
$tree->title = "広告都市名";
$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();
}
関数 get_ads_city_arr()
{
return is_file($this->ads_city_file) ? require($this->ads_city_file) : array();
}
関数 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');
$show_content を返します;
}
function pares_city_link($info)
{
$class_name = "ads_city";
$tempStr = "[子-追加]";
$tempStr .="[编辑]";
$tempStr .="[删除]";
$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['深さ']-1)*3);
if($info["cid"]!="")
{
//$tempStr .="

}
//$tempStr .=">";
$tempStr.=$info['タイトル'];
$tempStr .=$this->{$fuc_str}($info);
$tempStr .="
$tempStr .="
$tempStr .= $this->__parseTree($treeCache,$info['cid'],$fuc_str);
$tempStr .="
}else{
$this->layer++;
$tempStr .= str_repeat(' ',($info['深さ']-1)*3);
$tempStr.=$info['タイトル'];
$tempStr .=$this->{$fuc_str}($info);
if($this->isX==true)
{
if($this->layer % $this->rowSize ==0)
$tempStr .= "
";
else
$tempStr .= " ";
}else{
$tempStr .= "
";
}
}
}
}
return $tempStr;
}
}
?>

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

文字列は、文字、数字、シンボルを含む一連の文字です。このチュートリアルでは、さまざまな方法を使用してPHPの特定の文字列内の母音の数を計算する方法を学びます。英語の母音は、a、e、i、o、u、そしてそれらは大文字または小文字である可能性があります。 母音とは何ですか? 母音は、特定の発音を表すアルファベットのある文字です。大文字と小文字など、英語には5つの母音があります。 a、e、i、o、u 例1 入力:string = "tutorialspoint" 出力:6 説明する 文字列「TutorialSpoint」の母音は、u、o、i、a、o、iです。合計で6元があります

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

あなたが経験豊富な PHP 開発者であれば、すでにそこにいて、すでにそれを行っていると感じているかもしれません。あなたは、運用を達成するために、かなりの数のアプリケーションを開発し、数百万行のコードをデバッグし、大量のスクリプトを微調整してきました。

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

PHPの魔法の方法は何ですか? PHPの魔法の方法には次のものが含まれます。1。\ _ \ _コンストラクト、オブジェクトの初期化に使用されます。 2。\ _ \ _リソースのクリーンアップに使用される破壊。 3。\ _ \ _呼び出し、存在しないメソッド呼び出しを処理します。 4。\ _ \ _ get、dynamic属性アクセスを実装します。 5。\ _ \ _セット、動的属性設定を実装します。これらの方法は、特定の状況で自動的に呼び出され、コードの柔軟性と効率を向上させます。
