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/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

发表回复

登录后才能评论