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