PHP でオブジェクトを文字列に変換する

Subodh Poudel 2023年1月30日
  1. PHP で __toString()Magic メソッドを使用してオブジェクトを文字列に変換する
  2. PHP で serialize() 関数を使用してオブジェクトを文字列に変換する
  3. PHP で print_r() 関数を使用してオブジェクトを Strig に変換する
PHP でオブジェクトを文字列に変換する

このチュートリアルでは、PHP でオブジェクトを文字列に変換するさまざまなメソッドを紹介します。

PHP で __toString()Magic メソッドを使用してオブジェクトを文字列に変換する

__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() 関数を呼び出します。次に、オブジェクト $stserialize() 関数を使用し、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() 関数を使用してオブジェクトを Strig に変換する

print_r() 関数を使用して、PHP でオブジェクトを文字列に変換することもできます。この関数は、最初のパラメーターを出力される値として受け取り、2 番目のパラメーターを戻りパラメーターであるブール値として受け取ります。文字列を返すために、最初のパラメーターとしてオブジェクトを指定し、2 番目のパラメーターとして true ブール値を指定できます。戻りパラメーターはオプションです。print_r() 関数は、2 番目のパラメーターが指定されていない場合、指定された変数の値を出力します。

たとえば、$name$age の 2つのメンバー変数を持つクラス Student を作成します。$name$age をパラメーターとして使用してコンストラクターを作成し、変数を設定します。クラスの外で、オブジェクト $st を作成し、コンストラクターへの引数として値 jadon21 を指定します。次に、別の変数 $result を作成し、それに print_r() 関数を割り当てます。関数の最初のパラメーターを $st として設定し、true を 2 番目のパラメーターとして設定します。最後に、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