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['DOCUMENT_ROOT'] . $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['DOCUMENT_ROOT']; } else { $currentPath = $_SERVER['DOCUMENT_ROOT'] . dirname($_SERVER['PHP_SELF']); } 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['DOCUMENT_ROOT'] . dirname($_SERVER['PHP_SELF']) . "/" . basename($_SERVER['PHP_SELF'],".php") . ($page==0 ? "" : "_" . strval($page)) . ".htm"); $shtml->Templet = $buffer; $shtml->Create(); return $buffer; } ?>
위 내용은 PHP 정적 클래스 예제 코드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!