PHP对象和类


在本教程中,我们将学习基本的面向对象编程(OOP)。介绍PHP OOP中最重要的概念:对象和类。

在面向对象编程中,我们使用对象对问题和流程建模。因此,面向对象的应用程序由相互协作以解决问题的相关对象组成。

面向对象编程的基本构件是类和对象。在深入研究面向对象编程方法之前,理解对象和类以及对象和类之间的区别是非常重要的。

PHP对象 VS 类

在现实世界中,一个物体有它自己的特征和行为。我们可以将具有相同特征和行为的相似对象分组到一个类中。所以我们可以说类是对象的蓝图。

例如,一个类是一个房子的蓝图。蓝图在纸上定义了房子的特征。
根据蓝图,我们可以建造很多我们想要的房子。
我们说对象是类的实例,或者房子是蓝图的实例。

定义类和对象

在创建任何新对象之前,您需要一个类或对象的蓝图。

在PHP中定义一个新类非常简单。要在PHP中定义一个新类,可以使用class关键字。如下面的示例所示:

1
2
3
4
<?php
class BankAccount{
 
}

我们定义了一个新的空类BankAccount。在BankAccount类中,我们可以使用new关键字创建新的BankAccount对象,如下所示:

1
2
3
4
5
6
7
8
9
<?php
class BankAccount{
 
}
 
// 创建一个新的银行帐户对象
$account = new BankAccount();
 
var_dump($account);

对象属性

在面向对象的术语中,对象的特征称为属性。例如,银行账户有账号和总余额。

让我们将这些属性添加到BankAccount类中:

1
2
3
4
5
<?php
class BankAccount{
private $accountNumber;
private $totalBalance;
}

可以看到,我们在属性前面使用了private关键字。
这称为属性可见性。每个属性可以有三种可见性级别,即私有的private、受保护的protected和公共的public。

  • private:类的私有属性只能由类内部的方法访问。
  • protected:受保护的属性类似于私有属性,只是受保护的属性可以被子类访问。
  • public:公共属性不仅可以通过类内部的方法访问,还可以通过类外部的代码访问。

在BankAccount类中,我们只能在类中访问银行帐户的那些属性。

方法

对象或类的行为称为方法。

与类属性类似,这些方法可以具有三个不同的可见性级别:private、protected和public。

有了银行账户,我们可以存钱,取款,查询余额。另外,我们需要设置银行账号和获取银行账号的方法。
银行账号是用来区分一个银行账户和另一个银行账户的。

要为类创建方法,请使用function关键字,后面跟着类名和括号。
方法类似于函数,只是方法是与类相关联的,并且具有可见性级别。
与函数一样,方法可以有一个或多个参数并可以返回一个值。

让我们添加一些方法到BankAccount类中:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<?php
class BankAccount{
/**
* 银行账户号码
* @var string bank account number
*/
private $accountNumber;
/**
* 总余额
* @var float total balance
*/
private $totalBalance;
 
/**
* 把钱存入银行账户
* @param float $amount amount to deposit
*/
public function deposit($amount){
$this->totalBalance += $amount;
}
 
/**
* 从银行账户里取钱
* @param double $amount
*/
public function withdraw($amount){
if($amount > $this->totalBalance)
die('余额不足');
 
$this->totalBalance -= $amount;
}
 
/**
* 返回总余额值
* @return float total balance
*/
public function getBalance(){
return $this->totalBalance;
}
 
/**
* 返回银行账号
*/
public function getAccountNumber(){
return $this->accountNumber;
}
 
/**
* 设置银行账号
* @param string $accountNumber
*/
public function setAccountNumber($accountNumber){
$this->accountNumber = $accountNumber;
 
}
}

注意,我们使用了一个特殊的$this变量来访问对象的属性。PHP使用$this变量来引用当前对象。

要访问属性,需要使用箭头操作符(->), 如下所示:

1
object->property

调用方法

要调用对象的方法,可以使用(->)操作符,后跟着方法名和括号。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// 创建一个新的银行帐户对象
$account = new BankAccount();
 
$account->setAccountNumber('1234578');
echo sprintf("银行账号 # %s<br/>",$account->getAccountNumber());
 
echo sprintf("把2000元存入银行账户。<br/>");
$account->deposit(2000);
echo sprintf("余额: %0.2f<br/>", $account->getBalance());
 
echo sprintf("从银行账户中支取100元。<br/>");
$account->withdraw(100);
echo sprintf("余额: %0.2f<br/>", $account->getBalance());
 
echo sprintf("从银行账户中支取2000元。<br/>");
$account->withdraw(2000);


原文链接:https://codingdict.com/