php 靜態類執行個體代碼

來源:互聯網
上載者:User
在PHP中,使用關鍵字 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;    }   ?>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.