PHP 中将对象转换为字符串

Subodh Poudel 2023年1月30日
  1. 在 PHP 中使用 __toString() 魔术方法将对象转换为字符串
  2. 在 PHP 中使用 serialize() 函数将对象转换为字符串
  3. 在 PHP 中使用 print_r() 函数将对象转换成字符串
PHP 中将对象转换为字符串

本教程介绍了在 PHP 中将对象转换为字符串的不同方法。

在 PHP 中使用 __toString() 魔术方法将对象转换为字符串

我们可以使用 __toString() PHP 魔术方法将对象转换为 PHP 中的字符串。PHP 中有一些方法以 __ 开头,PHP 保留了它们。当我们对对象执行某些特定操作时,这些方法会覆盖默认行为。一些魔法函数是 __construct()__destruct()__isset()__set()__get() 等。我们可以使用 __toString() 方法来模拟一个对象到一个字符串。然后,我们可以研究像字符串一样的对象的行为。在 PHP 8.0 之前,__toString() 方法应该总是返回一个字符串值;否则会抛出错误。但是,如果可能,PHP 8.0 会将该值强制转换为字符串。

例如,创建一个类 Student 并编写一个变量 $name 作为属性并为其命名。然后,编写 __toString() 函数并使用 $this 关键字返回 $name 变量。在类之外,创建名为 $st 的类 Student 的对象。现在,使用 echo 函数打印 $st 对象。

在输出部分,我们可以看到显示的名称。因此,它证明该对象已转换为字符串。echo 函数是一个字符串函数,我们使用它打印字符串。这就是我们如何使用魔术方法 __toString() 将对象转换为字符串的方法。

示例代码:

<?php
class Student {
 protected $name = 'Jadon';
 public function __toString() {
 return $this->name;
 }
}
$st = new Student;
echo $st;
?>

输出:

Jadon

在 PHP 中使用 serialize() 函数将对象转换为字符串

PHP 中的 serialize() 函数将给定值转换为字节流字符串的表示形式。当我们想要将数据存储在会话或数据库中时,我们可以使用该函数。可以使用 serialize() 函数将对象转换为字符串。该函数返回一个位序列。当我们需要通过网络传输比特时,这个函数就派上用场了。

例如,创建与第一种方法相同的类和成员变量。然后,创建一个函数 show()。使用函数内的 echo 函数,使用 $this 关键字打印 $name 变量。在函数之外,创建一个 Student 类的对象 $st。使用 $st 对象调用 show() 函数。然后在对象 $st 上使用 serialize() 函数并使用 echo 函数将其打印出来。

下面的示例以位序列输出一个字符串。因此,我们可以使用 serialize() 函数将 PHP 对象转换为字符串。

示例代码:

<?php
class Student {
 protected $name = 'Jadon';
 public function show() {
 echo $this->name."<br>";
 }
}
$st = new Student;
$st->show();
$sr = serialize($st);
echo $sr;
?>

输出:

Jadon
O:7:"Student":1:{s:7:"*name";s:5:"Jadon";}

在 PHP 中使用 print_r() 函数将对象转换成字符串

我们还可以使用 print_r() 函数将对象转换为 PHP 中的字符串。该函数将第一个参数作为要打印的值,第二个参数作为返回参数,一个布尔值。我们可以提供一个对象作为第一个参数,并提供一个 true 布尔值作为第二个参数来返回一个字符串。返回参数是可选的。如果未提供第二个参数,print_r() 函数将打印所提供变量的值。

例如,创建一个具有两个成员变量 $name$age 的类 Student。创建一个以 $name$age 作为参数的构造函数并设置变量。在类之外,创建一个对象 $st 并将值 jadon21 作为构造函数的参数。然后,创建另一个变量 $result 并为其分配 print_r() 函数。将函数的第一个参数设置为 $st,将 true 设置为第二个参数。最后,使用 echo 函数打印出 $result

当我们将 print_r() 函数的返回参数设置为 true 时,该函数返回字符串并将其存储在 $result 变量中。因此,我们可以使用 echo 函数打印字符串。这样,我们就可以使用 print_r() 函数将对象转换为 PHP 中的字符串。

示例代码:

class Student {
 protected $name;
 protected $age;
 public function __construct($name, $age) {
 $this->name =$name;
 $this->age = $age;
 }
}
$st = new Student("jadon", 21);
$result = print_r($st, true);
echo $result;
?>

输出:

Student Object ( [name:protected] => jadon [age:protected] => 21 )
作者: Subodh Poudel
Subodh Poudel avatar Subodh Poudel avatar

Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.

LinkedIn

相关文章 - PHP Object

相关文章 - PHP String