これはコンストラクターを使用して直接実装されています。静的ページを生成するプロセスが多数あることを考慮して、これはクラス内の template() を templateHtml() に置き換えるだけです。
ここでは、コンストラクターを直接使用して実装していますが、静的ページを生成するプロセスが多数あることを考慮して、これはクラス内の template() を置き換えるだけです。それを実現するには templatehtml() を使用します。
*/
クラステンプレート{
{
var $temp; //読み込んだテンプレートページのファイル名(パスを含む)
var $html; //生成されるhtmlファイル名(パスを含む)
var $err; var $test; //データフロー
var $arr; //置換対象の配列パターン(キー名->テンプレートラベル、キー値->置換内容)
関数テンプレート()$this->temp=""; }
$test=fread($fp,filesize($temp)); // テンプレート ページのデータ ストリームを読み取ります
関数テンプレートhtml($temp,$html,$arr)
{
$err=$this->chkfile($temp);
if((int)$err==0)
{}
echo "テンプレート ページ ".$temp から生成されました。" ".$html.$this->error($err);
戻る;
}
/*
*ファイルが存在するかどうかを確認します
*エラーメッセージを返す
*/関数chkfile($file)
}
{
if (file_exists($file))
{
0 を返す;
}
1 を返します;
}
/*
※配列ファイルの内容に応じて、データフローパターン(キー名→テンプレートラベル、キー値→置換内容)を置換します
*データストリームを返す
*パラメータ $arr: 配列
*パラメータ$test: データフロー
*/
関数 arr_replace($arr,$test)
{
$ss=$test;
foreach ($arr as $key => $value)
{
$ss= str_replace($key,$value,$ss);
}
$ss を返します;
}
/*
*データストリームをファイルに書き込みます
※実行状態に戻ります
*パラメータ$html: 生成されるHTMLファイル
*パラメータ$test: データフロー
*/
関数 writefile($html,$test)
{
$stat=2;
If($this->chkfile($html)==0) //ファイルが存在するかどうかを判断します
{
$stat=0; //すでに存在し、0を返します
}
If($f=fopen($html,"w")) //ファイルを書き込みモードで開き、ファイルが存在しない場合は作成します
{
fputs($f,$test);
fclose($f);
}
それ以外
{
$stat=2; //書き込み失敗すると 2 が返されます
}
$stat を返します;
}
/*
*エラーメッセージ
*エラーメッセージを返す
*パラメータ $err: エラー番号
*パラメータ $file: エラーファイル
*/
関数エラー($err)
{
$メッセージ=""
switch((int)$err)
{
ケース 0 :
$message="静的ページが正常に生成されました";
休憩;
ケース1:
$message="テンプレート ページを開けませんでした。存在するかどうかを確認してください";
休憩;
ケース 2:
$message="ファイルの生成に失敗しました。ディレクトリのアクセス許可を確認してください";
休憩;
デフォルト:
$message="不明なエラー";
}
$メッセージを返します;
}
/*
*
*主にテンプレート ページを読み取り、データ ストリーム (トップ、フッターのパブリック ファイルなど) を返すために使用されます
*パラメータ$file: テンプレートページのパス
*/
関数 readhtml($file)
{
$test="";
$err=$this->chkfile($file);
if($err==0)
{
$fp=fopen($file,"r"); // テンプレートページを読み取り専用モードで開きます
$test=fread($fp,filesize($file)); //テンプレートページのデータストリームを読み取ります
}
それ以外
{
$test=$file.$this->error($err);
}
$test を返します;
/*
*
*主に生成されたファイルを戻さずに削除するために使用されます
*パラメータ $file: ファイルパス
*/関数 delete_file($file)
{
if (file_exists($file))
{
$delete = chmod ($file, 0777);
$delete = リンク解除($file);
if(file_exists($file))
{
$filesys = eregi_replace("/","",$file);
$delete = system("del $filesys");
クリアスタットキャッシュ();
if(file_exists($file))
{
$delete = chmod ($file, 0777);
$delete = リンク解除($file);
$delete = system("del $filesys");
}
}
クリアスタットキャッシュ();
}
}
}/*
调用方法demo.htmlの代価
{title}
{テキスト}
$sc=新しいテンプレート();
//$sc=新しいテンプレート($tmp,$ファイル名,$arr); ()$tmp="../template/temp.php教程"; //型板页
$filename="テスト.html"; // 生成页
$foot="../foot.html"; // 含まれる底文、头文件と同じ$arr=配列();
$arr["{title}"]="新标题";
$arr["{text}"]="新内容";
$arr["{foot}"]=$sc->readhtml($foot);
$sc->templatehtml($tmp,$filename,$arr);