php中 类是什么意思,什么是PHP类?

简而言之,Class是对象的蓝图。对象在应用程序中封装了概念上相关的状态和责任,并且通常提供与之交互的编程接口。这促进了代码重用并提高了可维护性。

想象一下锁:namespace MyExample;class Lock{

private $isLocked = false;

public function unlock()

{

$this->isLocked = false;

echo 'You unlocked the Lock';

}

public function lock()

{

$this->isLocked = true;

echo 'You locked the Lock';

}

public function isLocked()

{

return $this->isLocked;

}}

现在忽略namespace,private并public宣布。

Lock类是应用程序中所有Locks的蓝图。锁可以被锁定或解锁,由财产 代表$isLocked。由于它只能有这两种状态,我使用布尔(true或false)来表示适用的状态。我可以通过它的方法 lock与Lock进行交互unlock,这将相应地改变状态。该isLocked方法将为我提供Lock的当前状态。现在,当您从此蓝图创建一个对象(通常也称为实例)时,它将封装唯一的状态,例如$aLock = new Lock; // Create object from the class blueprint$aLock->unlock();  // You unlocked the Lock$aLock->lock();    // You locked the Lock

让我们创建另一个锁,同时封装它自己的状态$anotherLock = new Lock;$anotherLock->unlock(); // You unlocked the Lock

但是因为每个对象/实例都封装了它自己的状态,所以第一个锁保持锁定状态var_dump( $aLock->isLocked() );       // gives Boolean truevar_dump( $anotherLock->isLocked() ); // gives Boolean false

现在,锁定或解锁锁定的整个可靠性都是在Lock类中完成的。每次想要锁定某些东西时都不必重建它,如果你想改变Lock的工作方式,你可以在Lock的蓝图中改变它,而不是所有具有 Lock 的类,例如一个门:class Door{

private $lock;

private $connectsTo;

public function __construct(Lock $lock)

{

$this->lock = $lock;

$this->connectsTo = 'bedroom';

}

public function open()

{

if($this->lock->isLocked()) {

echo 'Cannot open Door. It is locked.';

} else {

echo 'You opened the Door connecting to: ', $this->connectsTo;

}

}}

现在,当您创建Door对象时,可以为其指定一个Lock对象。由于Lock对象处理锁定或解锁某些东西的所有责任,因此Door不必关心这一点。实际上,任何可以使用Lock的对象都不必关心,例如胸部class Chest{

private $lock;

private $loot;

public function __construct(Lock $lock)

{

$this->lock = $lock;

$this->loot = 'Tons of Pieces of Eight';

}

public function getLoot()

{

if($this->lock->isLocked()) {

echo 'Cannot get Loot. The chest is locked.';

} else {

echo 'You looted the chest and got:', $this->loot;

}

}}

如您所见,胸部的可靠性与门的不同。胸部包含战利品,而门则将房间隔开。您可以将锁定或解锁状态编码到两个类中,但是使用单独的Lock类,您不必重复使用Lock。$doorLock = new Lock;$myDoor = new Door($doorLock);$chestLock = new Lock;$myChest new Chest($chestLock);

胸部和门现在有他们独特的锁。如果锁是一个可以同时存在于多个地方的魔法锁,就像在量子物理中一样,你可以为胸部和门分配相同的锁,例如$quantumLock = new Lock;$myDoor = new Door($quantumLock);$myChest new Chest($quantumLock);

当你unlock()的$quantumLock,无论是门和胸部将被解锁。

虽然我承认量子锁是一个不好的例子,但它说明了共享对象的概念,而不是在整个地方重建状态和责任。一个真实世界的示例可以是您使用数据库传递给类的数据库对象。

请注意,上面的示例没有显示如何进入Lock of a Chest或Door以使用lock()和unlock()方法。我将此作为练习让您锻炼(或其他人添加)。

还要检查何时使用self超过$ this?有关类和对象的更深入解释以及如何使用它们

对于一些额外的资源检查

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值