TGViewer
| کانال توسعه‌دهندگان PHP | | کانال توسعه‌دهندگان PHP | @developixphp · 1.68K subscribers
Post #36 766
مجیک متد __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
  • 🔥 4
  • 👍 1
More from @developixphp
  1. Sep 26, 2026این کد موقع اجرا چه خروجی‌ای می‌ده و مشکلش کجاست؟ 🔖 #PHP #پی_اچ_پی 👤 Developix 💎 Channe…
  2. Sep 25, 2026🔥 پکیج: قراردادهای ترجمه سیمفونی اگر کد PHP را برای چندزبانگی می‌نویسید، بهتر است منطق بر…
  3. Sep 16, 2026🚀 &rlm;LaraGram Brain منتشر شد! از این به بعد برای ساخت ربات‌های تلگرام با فریم‌ورک LaraG…
  4. Sep 11, 2026ارسال ایمیل تأیید ثبت‌نام، بازیابی رمز عبور یا نوتیفیکیشن سفارش، تقریباً توی هر پروژه‌ PHP…
  5. Sep 10, 2026برنامه نویسی سوکت در PHP بخش اول عبارت دیگر در ارتباط های غیر سوکت برای ارسال یک پالس از س…
  6. Aug 31, 2026🔥 پکیج: استاندارد PSR-11 برای Container استاندارد PSR-11 فقط یه interface مشترک برای Cont…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →