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
並將值 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