PHP 中将对象转换为字符串
-
在 PHP 中使用
__toString()魔术方法将对象转换为字符串 -
在 PHP 中使用
serialize()函数将对象转换为字符串 -
在 PHP 中使用
print_r()函数将对象转换成字符串
本教程介绍了在 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 并将值 jadon 和 21 作为构造函数的参数。然后,创建另一个变量 $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 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