ホームページ  >  記事  >  バックエンド開発  >  php静的クラスのサンプルコード

php静的クラスのサンプルコード

怪我咯
怪我咯オリジナル
2017-07-16 11:21:391851ブラウズ

PHP では、キーワード static を使用してメンバー プロパティとメンバー メソッドを変更することを、静的プロパティと静的メソッドと呼びます。静的プロパティと静的メソッドは、クラスをインスタンス化せずに直接使用できます。

静的プロパティ

通常のメンバー プロパティとは異なり、静的プロパティはクラスのインスタンスではなくクラス自体に属します。静的プロパティは、クラスに格納されるグローバル変数と考えることができ、クラスを通じてどこからでもアクセスできます。

静的属性は特定のオブジェクトによって制限されないため、クラス インスタンスを作成する必要はありませんが、クラス内で静的属性を直接参照できます。構文形式は次のとおりです。


クラス名: :$static 属性名


このうち、シンボル「::」は範囲解決演算子と呼ばれ、静的メンバー、静的メソッド、定数にアクセスするために使用でき、また、クラス内のメンバーとメソッドをオーバーライドします。

同じクラスのメンバーメソッド内の静的プロパティにアクセスしたい場合は、静的プロパティの名前の前に演算子「self::」を追加することでアクセスできます。

以下はPHPのサンプルコードです

​​
<?php   
class Shtml   
 {   
 var $Templet;   
 var $DataSource;   
 var $Dir;   

 var $fileName;   
 var $mod;   
 var $handle;   

 function Shtml($fileName="")   
 {   
 $this->fileName=$fileName;   
 $this->mod="wb";   
 $this->handle=false;   

 $this->Templet = "";   
 $this->DataSource = array();   
 $this->Dir = "";   
 }   

 /// <描述>   
 /// 绑定数据源,参数为一数组。   
 /// </描述>   
 function BindData($arr)   
 {   
 $this->DataSource = $arr;   
 }   

 /// <描述>   
 /// 设置文件存放路径。   
 /// </描述>   
 function SetDir($dir)   
 {   
 $this->Dir = $dir;   
 }   
 function SetFileName($fileName)   
 {   
 return $this->fileName=$fileName;   
 }   

 function GetMod()   
 {   
 return $this->mod;   
 }   
 function SetMod($mod)   
 {   
 return $this->mod=$mod;   
 }   
 function Open()   
 {   
 if(substr($this->fileName,0,1)=="/")   
 $this->fileName = $_SERVER[&#39;DOCUMENT_ROOT&#39;] . $this->fileName;   
 if($this->handle=fopen($this->fileName, $this->mod))   
 return $this->handle;   
 else   
 return false;   
 }   
 function Close()   
 {   
 return fclose($this->handle);   
 }   
 function Write($content)   
 {   
 return fwrite($this->handle,$content);   
 }   
 function MkDir($pathname)   
 {   
 $currentPath="";   
 str_replace("\","/",$pathname);   
 $pathArr = split("/",$pathname);   
 if($pathArr[0] == "") //使用绝对路径   
 {   
 $currentPath = $_SERVER[&#39;DOCUMENT_ROOT&#39;];   
 }   
 else   
 {   
 $currentPath = $_SERVER[&#39;DOCUMENT_ROOT&#39;] . dirname($_SERVER[&#39;PHP_SELF&#39;]);   
 }   
 for($i=0; $i<count($pathArr); $i++)   
 {   
 if($pathArr[$i]=="")   
 continue;   
 else   
 if(is_dir($currentPath . "/" . $pathArr[$i]))   
 $currentPath = $currentPath . "/" . $pathArr[$i];   
 else   
 mkdir($currentPath = $currentPath . "/" . $pathArr[$i]);   
 }   
 }   

 /// <描述>   
 /// 生成静态文件。   
 /// </描述>   
 function Create()   
 {   
 $tmp = $this->Templet;   
 foreach($this->DataSource as $key=>$value)   
 {   
 $tmp = str_replace("<FIELD_" . $key . ">", $value, $tmp);   
 }   
 $this->MkDir(dirname($this->fileName));   
 $this->Open();   
 $this->Write($tmp);   
 $this->Close();   
 }   
 }   

 function CreateShtml()   
 {   
 ob_start("callback_CteateShtml");   
 }   
 function callback_CteateShtml($buffer)   
 {   
 $page = intval(@$_REQUEST["page"]);   
 $shtml = new Shtml();   
 $shtml->SetFileName($_SERVER[&#39;DOCUMENT_ROOT&#39;] . dirname($_SERVER[&#39;PHP_SELF&#39;]) . "/" . basename($_SERVER[&#39;PHP_SELF&#39;],".php") . ($page==0 ? "" : "_" . strval($page)) . ".htm");   
 $shtml->Templet = $buffer;   
 $shtml->Create();   
 return $buffer;   
 }   
?>

以上がphp静的クラスのサンプルコードの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。