首页 > 编程知识 正文

php中的对象池模式,对象池是什么设计模式

时间:2023-12-25 12:47:11 阅读:322234 作者:GVHO

本文目录一览:

php中有哪些设计模式,举例说明应用场景

PHP 一般有五种常见的设计模式

工厂模式

它具有创建对象的某些方法。可以使用工厂类创建对象,而不直接使用 new。

例如:

?php

interface IUser

{

function getName();

}

class User implements IUser

{

public function __construct( $id ) { }

public function getName()

{

return "Jack";

}

}

class UserFactory

{

public static function Create( $id )

{

return new User( $id );

}

}

$uo = UserFactory::Create( 1 );

echo( $uo-getName()."n" );

?

另外四种是:观察者模式,单元素模式,命令链模式,策略模式。例子可以百度一搜。

怎么理解php中的设计模式

1、单例模式:PHP中的对象生存期间是从该脚本开始一直到该脚本结束为止,因此PHP的单例模式只是在一个页面中(这里可能包含很多其他页面,不是狭义的单页面)多次用到该对象时才会起作用,多次用到时不去重复的new对象(多个人做一个项目时,难免会碰到一次请求中多次实例一个对象的情况),将不会耗费不必要的资源(数据控连接操做效果很明显),还有一点就是可以保证整个脚本中都是同一个对象,这种模式是怎么实现的呢,他的实现有几个要注意的点:

a. 首先就是要将__construct()方法定义为私有方法,这样就不能通过new来得到一个新的实例了,单例模式不能在外部进行实例化,这能字自身内部进行实例化;

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();

}

}

PHP中怎样创建一个空对象

1、打开php的编辑器,进入主页面,首先我们新建好一个php文件,然后写上注释内容,这是编程的良好习惯。

2、在php中创建一个类使用的是class这个函数来执行,格式:class 类的名称{}。如:class test4{}。

3、在类的内部写上新建变量。var $name。

4、新建一个函数。function myname($mingzi){$this-name=$mingzi;}。

5、然后通过new这个函数实例化这个对象。

6、将这个实例化的对象打印出来看看。

php中显示数组与对象的实现代码

1、

使用

print_r

(

$array/$var

)

print

是打印的意思,而r则取自Array的单词,那么该函数的功能就是打印数组内容,它既可以打印数组内容,也可以打印普通的变量。

print_r

($_REQUEST)

;

print_r

($_GET)

;

/*

打印使用GET方法传递的表单内容*/

print_r($_POST)

;

/*

打印使用表单POST方法传递过的数组内容*/

2、

使用

var_dump

($object/$array/$var)

var

代表变量(Variable),变量包括对象、数组以及标量变量,dump有倒出之意,加在一块,就是将变量或对象的内容全部输出出来。

var_dump($DB)

;

/*打印$DB数据库连接对象的内容*/

var_dump($fileHandle)

;

/*打印文件句柄对象的内容*/

var_dump($Smarty)

;

/*打印Smarty模板对象*/

3、

使用

var_export($object/$array/$var)

输出或返回一个变量的字符表示。此函数返回关于传递给函数的变量的结构信息,它和print_r()类似,不同的是其返回的表示是合法的PHP代码。可以通过将函数的第二个参数设置为TRUE,从而返回变量的表示。

例如:

复制代码

代码如下:

?php

$a

=

array

(

1,2,

array("a","b","c"))

;

var_export

($a)

;

echo

"br"

;

$v

=

var_export

(

$a

,

TRUE)

;

echo

$v

;

?

上例中,$v

=

var_export

(

$a

,

TRUE)

表示返回的是PHP的源代码,可以直接用PHP脚本的数组文件中。

相关说明:

以上三个函数都可以打印对象的值、系统函数值以及数组的内容;

echo

、print、printf可以打印变量内容,但不能显示数组及系统超级变量数组;

print_r

var_dump不仅可以打印数组、标量变量,还可以打印对象的内容;

var_dump语句不仅能打印变量、数组内容,还可以显示布尔变量和资源(Resource)的内容;

var_export

函数返回关于传递给该函数的变量的结构信息,和

var_dump()函数类似,不同的是其返回的内容是合法的PHP代码。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。