__toString در PHP برای تعریف نحوه تبدیل یک شیء به رشته استفاده میشود. این مجیک متد زمانی فراخوانی میشود که شیء به صورت خودکار باید به یک رشته تبدیل شود، مثلاً زمانی که میخواهیم یک شیء را به عنوان یک رشته چاپ کنیم یا در یک رشته ادغام کنیم. این قابلیت برای ارائه نمایش معنادار و قابل فهم از شیء در قالب رشته بسیار مفید است.مجیک متد
__toString هیچ پارامتری ندارد و یک رشته برگرداند.مثال:
فرض کنید میخواهیم یک کلاس برای نمایش اطلاعات کتاب در یک کتابخانه داشته باشیم. ما میتوانیم مجیک متد
__toString را به کار ببریم تا یک خلاصه مناسب از کتاب را زمانی که نیاز به نمایش آن به صورت رشتهای داریم، تولید کنیم.class Book {
private $title;
private $author;
private $year;
public function __construct($title, $author, $year) {
$this->title = $title;
$this->author = $author;
$this->year = $year;
}
public function __toString() {
return "{$this->title} written by {$this->author}, published in {$this->year}.";
}
}
$book = new Book("The Little Prince", "Antoine de Saint-Exupéry", 1945);
echo $book;
// Output: The Little Prince written by Antoine de Saint-Exupéry , published in 1945در این مثال، کلاس Book شامل سه خصوصیت (عنوان، نویسنده، و سال نشر) است. مجیک متد
__construct برای تعیین این خصوصیات هنگام ایجاد شیء استفاده میشود، و مجیک متد __toString برای تولید یک رشته خلاصه از کتاب به کار میرود. زمانی که echo برای نمایش شیء استفاده میشود، مجیک متد __toString به طور خودکار فراخوانی میشود و رشته مورد نظر چاپ میگردد.———
مجیک متد
__debugInfo در PHP به شما اجازه میدهد تعیین کنید چه اطلاعاتی باید زمان استفاده از تابع var_dump برای شیء نمایش داده شود. این مجیک متد به خصوص در مواقعی مفید است که شما میخواهید برخی از جزئیات داخلی شیء را مخفی کنید یا فرمت خروجی را سفارشی سازی کنید.مجیک متد
__debugInfo باید یک آرایه را برگرداند که کلیدهای آن نشان دهنده نامهای خصوصیاتی هستند که باید در خروجی var_dump نمایش داده شوند، و مقادیر آن خود دادههایی هستند که باید نمایش داده شوند.مثال:
فرض کنید میخواهیم کلاس User داشته باشیم که شامل اطلاعات حساس مثل رمز عبور است. ما میخواهیم که زمان استفاده از var_dump بر روی نمونههای این کلاس، رمز عبور نمایش داده نشود.
<?php
class User {
private $username;
private $password;
private $email;
public function __construct($username, $password, $email) {
$this->username = $username;
$this->password = $password;
$this->email = $email;
}
public function __debugInfo() {
return [
'username' => $this->username,
'email' => $this->email
];
}
}
$user = new User("ali", "12345", "ali@example.com");
var_dump($user);
/*
Output:
object(User)#1 (2) {
["username"]=>
string(3) "ali"
["email"]=>
string(15) "ali@example.com"
}
*/
در این مثال، کلاس User شامل سه خصوصیت است: نام کاربری، رمز عبور و ایمیل. مجیک متد
__construct برای مقداردهی این خصوصیات استفاده میشود. مجیک متد __debugInfo تعریف شده است تا زمانی که var_dump بر روی نمونههای این کلاس اجرا میشود، رمز عبور نمایش داده نشود. به جای آن، فقط نام کاربری و ایمیل نمایش داده میشوند. این روش کنترل بیشتری بر دادههایی که ما میخواهیم نمایش داده شود و نشود به ما میدهد، و از نمایش اطلاعات حساس در محیطهای توسعه جلوگیری میکند.👤 AmirHossein
💎 Channel: @DevelopixPHP