php怎么调用类中的方法
时间 : 2023-03-25 04:34:02声明: : 文章内容来自网络,不保证准确性,请自行甄别信息有效性

在 PHP 中,调用一个类中的方法有几种不同的方式,下面我们来介绍一下常见的方式。

#### 1. 创建对象并调用方法

首先,需要创建一个对象,然后通过该对象调用方法。

```php

<?php

// 定义一个类

class MyClass {

public function myMethod() {

echo "Hello World!";

}

}

// 创建一个对象

$obj = new MyClass;

// 调用对象的方法

$obj->myMethod(); // 输出 "Hello World!"

?>

在这个例子中,我们首先定义了一个类 `MyClass`,该类有一个公共方法 `myMethod`,方法中打印输出了一个字符串。

接下来,我们创建了一个 `MyClass` 的对象 `$obj`,并通过对象调用 `myMethod` 方法,最终输出了字符串。

#### 2. 静态方式调用方法

在 PHP 中,可以通过 `::` 运算符静态调用类的方法。

```php

<?php

// 定义一个类

class MyClass {

public static function myMethod() {

echo "Hello World!";

}

}

// 静态调用对象的方法

MyClass::myMethod(); // 输出 "Hello World!"

?>

在这个例子中,我们通过 `static` 关键字定义了一个静态方法 `myMethod`。静态方法和非静态方法不同,它不需要通过对象来调用,而是通过类名来调用。

我们直接使用 `::` 运算符来调用 `MyClass` 类的 `myMethod` 方法。

#### 3. 回调函数方式调用方法

在 PHP 中,我们可以使用 `call_user_func` 或 `call_user_func_array` 函数来回调一个类的方法。

```php

<?php

// 定义一个类

class MyClass {

public function myMethod($name) {

echo "Hello, ". $name ."! <br>";

}

}

// 回调该方法

call_user_func(array(new MyClass(), "myMethod"), "John"); // 输出 "Hello, John!"

?>

在这个例子中,我们定义了一个 `MyClass` 类的方法 `myMethod`,它接收一个参数 `$name`。

我们使用 `call_user_func` 函数回调 `myMethod` 方法,并传入一个字符串参数 `"John"`。

> 注意:`call_user_func` 函数的第一个参数必须是一个回调函数,可以是函数名字符串、匿名函数、方法名数组。

#### 4. 字符串方式调用方法

可以使用字符串方式来调用类的方法,不论该方法是静态还是非静态方法。

```php

<?php

// 定义一个类

class MyClass {

public function myMethod($name) {

echo "Hello, ". $name ."! <br>";

}

}

// 字符串方式调用方法

$methodName = "myMethod";

$obj = new MyClass();

$obj->$methodName("John"); // 输出 "Hello, John!"

?>

在这个例子中,我们定义了一个 `MyClass` 类的方法 `myMethod`,它接收一个参数 `$name`。

我们定义了一个 `$methodName` 变量,存储了 `myMethod` 方法名。

然后,首先创建了一个 `MyClass` 对象 `$obj`,并使用字符串方式调用 `$methodName` 方法,并传入 `"John"` 参数。

这四种调用类的方法的方式都有各自的使用场景,可以根据具体的业务和需求来选择合适的方式。

在PHP中,调用类中的方法,需要先通过关键字`new`来创建该类的一个对象,并将该对象赋值给一个变量。然后可以使用该变量来调用该类中的方法。

例如,假设我们有一个定义如下的`Person`类:

```php

class Person {

private $name;

private $age;

public function __construct($name, $age) {

$this->name = $name;

$this->age = $age;

}

public function getName() {

return $this->name;

}

public function setName($name) {

$this->name = $name;

}

public function getAge() {

return $this->age;

}

public function setAge($age) {

$this->age = $age;

}

}

现在我们想要调用该类中的`getName`、`setName`、`getAge`和`setAge`方法,这里我们先创建一个`Person`对象:

```php

$person = new Person("Tom", 25);

这里我们传递了两个参数,`"Tom"`和`25`,这些参数将会被传递给类的构造函数。现在,我们可以使用该对象来调用`Person`类中的方法,如下所示:

```php

$name = $person->getName(); // 调用getName方法,并将返回值赋值给$name变量

echo "Name: " . $name . "<br>"; // 输出Name: Tom

$person->setName("Jerry"); // 调用setName方法,将"name"属性设为"Jerry"

$name = $person->getName(); // 再次调用getName方法,将$name变量设为"Jerry"

echo "Name: " . $name . "<br>"; // 输出Name: Jerry

$age = $person->getAge(); // 调用getAge方法,并将返回值赋值给$age变量

echo "Age: " . $age . "<br>"; // 输出Age: 25

$person->setAge(30); // 调用setAge方法,将"age"属性设为30

$age = $person->getAge(); // 再次调用getAge方法,将$age变量设为30

echo "Age: " . $age . "<br>"; // 输出Age: 30

如上所示,我们可以使用该类的对象来调用该类中的方法,从而实现对类的操作。由于在上面的`Person`类中,属性`$name`和`$age`都是私有的,因此不能直接使用`$person->name`或`$person->age`来访问它们。这些属性只能在类的内部使用。但是,我们可以使用类中提供的getters和setters方法来操作这些属性。