php類instance的簡單介紹

本文目錄一覽:

php 類中獲取實例化後的自身

class aaaa{

    private static $instance = null;

    public function __construct(){

        self::$instance =  this;

    }

    public static function  getInstance(){

        return  self::$instance

}

}

調用aaaa:getInstance()就是返回aaaa實例

詳解PHP中instanceof關鍵字及instanceof關鍵字有什麼作用

PHP5的另一個新成員是instdnceof關鍵字。使用這個關鍵字可以確定一個對象是類的實例、類的子類,還是實現了某個特定接口,並進行相應的操

作。在某些情況下,我們希望確定某個類是否特定的類型,或者是否實現了特定的接口。instanceof操作符非常適合完成這個任務。

instanceof操作符檢查三件事情:實例是否某個特定的類型,實例是否從某個特定的類型繼承,實例或者他的任何祖先類是否實現了特定的接口。例如,

假設希望了解名為manager的對象是否為類Employee的實例:

$manager = new Employee(); 

if ($manager instanceof Employee) 

    echo “Yes”;

有兩點值得注意。首先,類名沒有任何定界符(引號)。使用定界符將導致語法錯誤。其次,如果比較失敗,腳本將退出執行。instanceof關鍵字在同時

處理多個對象時特別有用。例如,你可能要重複地調用某個函數,但希望根據對象類型調整函數的行為。可以使用case語句和instanceof關鍵字來實

現這個目標。

class test2{} 

class test{} 

class testChilern Extends test{} 

$a = new test2(); 

$m = new test(); 

$i = ($m instanceof test); 

if($i)

    echo ‘$m是類test的實例!br /’; // get this value 

    

switch ($a instanceof test){ 

    case true : 

        echo ‘YESbr /’; 

        break; 

        

    case false : 

        echo ‘Nobr /’; //get this value 

        break; 

$d=new testChilern(); 

if($d instanceof test)echo ‘$d是類test的子類!br /’; // get this value

php中 instanceof有什麼作用

作用:(1)判斷一個對象是否是某個類的實例,(2)判斷一個對象是否實現了某個接口。

第一種用法:

?php

$obj = new A();

if ($obj instanceof A) {

  echo ‘A’;

}

第二種用法:

?php

interface ExampleInterface

{

   public function interfaceMethod();

 }

 class ExampleClass implements ExampleInterface

{

   public function interfaceMethod()

   {

     return ‘Hello World!’;

   }

 }

$exampleInstance = new ExampleClass();

 if($exampleInstance instanceof ExampleInterface){

   echo ‘Yes, it is’;

 }else{

   echo ‘No, it is not’;

?

輸出結果:Yes, it is

另外,需注意 instanceof 與 is_subclass_of() 的區別,請看代碼:

lass Foo {   public $foobar = ‘Foo’;

   public function test() {

     echo $this-foobar . “\n”;

   }

 }

 class Bar extends Foo {

   public $foobar = ‘Bar’;

 }

$a = new Foo();

$b = new Bar();

echo “use of test() method\n”;

$a-test();

$b-test();

echo “instanceof Foo\n”;

var_dump($a instanceof Foo); // TRUE

var_dump($b instanceof Foo); // TRUE

echo “instanceof Bar\n”;

var_dump($a instanceof Bar); // FALSE

var_dump($b instanceof Bar); // TRUE

echo “subclass of Foo\n”;

var_dump(is_subclass_of($a, ‘Foo’)); // FALSE

var_dump(is_subclass_of($b, ‘Foo’)); // TRUE

echo “subclass of Bar\n”;

var_dump(is_subclass_of($a, ‘Bar’)); // FALSE

var_dump(is_subclass_of($b, ‘Bar’)); // FALSE

?

php中 instanceof有什麼用

作用:(1)判斷一個對象是否是某個類的實例,(2)判斷一個對象是否實現了某個接口。

第一種用法:

?php

$obj = new A();

if ($obj instanceof A) {

   echo ‘A’;

}

第二種用法:

?php

interface ExampleInterface

{

     public function interfaceMethod();

 }

 class ExampleClass implements ExampleInterface

{

     public function interfaceMethod()

     {

         return ‘Hello World!’;

     }

 }

$exampleInstance = new ExampleClass();

 if($exampleInstance instanceof ExampleInterface){

     echo ‘Yes, it is’;

 }else{

     echo ‘No, it is not’;

?

輸出結果:Yes, it is

另外,需注意 instanceof 與 is_subclass_of() 的區別,請看代碼:

?php

class Foo {

     public $foobar = ‘Foo’;

     public function test() {

         echo $this-foobar . “\n”;

     }

 }

 class Bar extends Foo {

     public $foobar = ‘Bar’;

 }

$a = new Foo();

$b = new Bar();

echo “use of test() method\n”;

$a-test();

$b-test();

 

echo “instanceof Foo\n”;

var_dump($a instanceof Foo); // TRUE

var_dump($b instanceof Foo); // TRUE

echo “instanceof Bar\n”;

var_dump($a instanceof Bar); // FALSE

var_dump($b instanceof Bar); // TRUE

echo “subclass of Foo\n”;

var_dump(is_subclass_of($a, ‘Foo’)); // FALSE

var_dump(is_subclass_of($b, ‘Foo’)); // TRUE

echo “subclass of Bar\n”;

var_dump(is_subclass_of($a, ‘Bar’)); // FALSE

var_dump(is_subclass_of($b, ‘Bar’)); // FALSE

?

 

輸出結果(PHP 5.4.4):

 use of test() method

 Foo

 Bar

 instanceof Foo

 bool(true)

 bool(true)

 instanceof Bar

 bool(false)

 bool(true)

 subclass of Foo

 bool(false)

 bool(true)

 subclass of Bar

 bool(false)

php類屬性的賦值問題

cache_factory (這個是類名)::$cache_factory (這個是類內的私有靜態屬性,該屬性的值是cache_factory類的實例)-cache_config = $cache_config; 其他不需要解釋了吧

不過這個代碼很爛,不建議把這個當作參考資料。幫你修改了一下,看這個吧

final class cache_factory {

    private static $instance;

    protected $cache_config = array();

    protected $cache_list = array();

    protected function __construct(array $configs) {

        $this-cache_config = $configs;

    }

    public static function get_instance(array $cache_config = null) {

        if (! self::$instance instanceof cache_factory) {

            if (is_null($cache_config)) {

                die(‘無效的初始化設置’);

            }

            self::$instache = new cache_factory($cache_configs);

        }

        return self::$instance;

    }

}

php類怎麼給靜態變量賦值

case-1:給類中的靜態變量賦值:

class PHPJungle{

private static $__instance = null;# 類中的私有成員:靜態變量

public function __construct(){

}

public static function getInstance(){

if(self::$__instance instanceof self)

return self::$__instance; # 給靜態變量賦值

return new self();

}

public function anyMethod(){

echo ‘Hello world!’,’hr’;

return;

}

}

$PJ = new PHPJungle();

$PJ-getInstance()-anyMethod();

case-2:給函數中的局部靜態變量賦值:

function hello(){

static $total = 0;

echo $total,’hr’;

$total++; # 給函數中的局部靜態變量賦值

}

hello();# 0

hello();# 1

hello();# 2

PHP設計模式之單例模式

單例模式

:使得類的一個對象成為系統中的唯一實例.

PHP中使用單例模式最常見的就是數據庫操作了。避免在系統中有多個連接數據庫的操作,浪費系統資源的現象,就可以使用單例模式。每次對數據庫操作都使用一個實例。

簡單示例

class

AClass

{

//

用來存儲自己實例

public

static

$instance;

//

私有化構造函數,防止外界實例化對象

private

function

__construct()

{}

//

私有化克隆函數,防止外界克隆對象

private

function

__clone()

{}

//

靜態方法,單例訪問統一入口

public

static

function

getInstance()

{

if

(!(self::$instance

instanceof

self)){

self::$instance

=

new

self();

}

return

self::$instance;

}

//

test

public

function

test()

{

return

“done”;

}

//

私有化克隆函數,防止外界克隆對象

private

function

__clone()

{}

}

class

BClass

extends

AClass{

}

//

獲取實例

$aclass

=

AClass::getInstance();

$bclass

=

BClass::getInstance();

//

調用方法

echo

$aclass-test();

對一些比較大型的應用來說,可能連接多個數據庫,那麼不同的數據庫公用一個對象可能會產生問題,比如連接句柄的分配等,我們可以通過給$instance變成數組,通過不同的參數來控制

簡單示例

class

DB

{

//

用來存儲自己實例

public

static

$instance

=

array();

public

$conn;

//

私有化構造函數,防止外界實例化對象

private

function

__construct($host,

$username,

$password,

$dbname,

$port)

{

$this-conn

=

new

mysqli($host,

$username,

$password,

$dbname,

$port);

}

//

靜態方法,單例訪問統一入口

public

static

function

getInstance($host,

$username,

$password,

$dbname,

$port)

{

$key

=

$host.”:”.$port;

if

(!(self::$instance[$key]

instanceof

self)){

self::$instance[$key]

=

new

self($host,

$username,

$password,

$dbname,

$port);#實例化

}

return

self::$instance[$key];

}

//query

public

function

query($ql)

{

return

$this-conn-query($sql);

}

//

私有化克隆函數,防止外界克隆對象

private

function

__clone()

{}

//釋放資源

public

function

__destruct(){

$this-conn-close();

}

}

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/245143.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 13:06
下一篇 2024-12-12 13:06

相關推薦

  • PHP和Python哪個好找工作?

    PHP和Python都是非常流行的編程語言,它們被廣泛應用於不同領域的開發中。但是,在考慮擇業方向的時候,很多人都會有一個問題:PHP和Python哪個好找工作?這篇文章將從多個方…

    編程 2025-04-29
  • Python簡單數學計算

    本文將從多個方面介紹Python的簡單數學計算,包括基礎運算符、函數、庫以及實際應用場景。 一、基礎運算符 Python提供了基礎的算術運算符,包括加(+)、減(-)、乘(*)、除…

    編程 2025-04-29
  • Python滿天星代碼:讓編程變得更加簡單

    本文將從多個方面詳細闡述Python滿天星代碼,為大家介紹它的優點以及如何在編程中使用。無論是剛剛接觸編程還是資深程序員,都能從中獲得一定的收穫。 一、簡介 Python滿天星代碼…

    編程 2025-04-29
  • Python海龜代碼簡單畫圖

    本文將介紹如何使用Python的海龜庫進行簡單畫圖,並提供相關示例代碼。 一、基礎用法 使用Python的海龜庫,我們可以控制一個小海龜在窗口中移動,並利用它的“畫筆”在窗口中繪製…

    編程 2025-04-29
  • PHP怎麼接幣

    想要在自己的網站或應用中接受比特幣等加密貨幣的支付,就需要對該加密貨幣擁有一定的了解,並使用對應的API進行開發。本文將從多個方面詳細闡述如何使用PHP接受加密貨幣的支付。 一、環…

    編程 2025-04-29
  • Python櫻花樹代碼簡單

    本文將對Python櫻花樹代碼進行詳細的闡述和講解,幫助讀者更好地理解該代碼的實現方法。 一、簡介 櫻花樹是一種圖形效果,它的實現方法比較簡單。Python中可以通過turtle這…

    編程 2025-04-28
  • 使用PHP foreach遍歷有相同屬性的值

    本篇文章將介紹如何使用PHP foreach遍歷具有相同屬性的值,並給出相應的代碼示例。 一、基礎概念 在講解如何使用PHP foreach遍歷有相同屬性的值之前,我們需要先了解幾…

    編程 2025-04-28
  • Python大神作品:讓編程變得更加簡單

    Python作為一種高級的解釋性編程語言,一直被廣泛地運用於各個領域,從Web開發、遊戲開發到人工智能,Python都扮演着重要的角色。Python的代碼簡潔明了,易於閱讀和維護,…

    編程 2025-04-28
  • 請確保正確設置spring.boot.admin.client.instance

    spring.boot.admin.client.instance是一個非常關鍵的設置,它能夠幫助我們確保應用程序在正確的Spring Boot Admin Server上註冊。在…

    編程 2025-04-28
  • 用Python實現簡單爬蟲程序

    在當今時代,互聯網上的信息量是爆炸式增長的,其中很多信息可以被利用。對於數據分析、數據挖掘或者其他一些需要大量數據的任務,我們可以使用爬蟲技術從各個網站獲取需要的信息。而Pytho…

    編程 2025-04-28

發表回復

登錄後才能評論