>  기사  >  백엔드 개발  >  PHP 정적 클래스 예제 코드

PHP 정적 클래스 예제 코드

怪我咯
怪我咯원래의
2017-07-16 11:21:391832검색

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.