۱ احسان پژمان
نحوه عملکرد Constructor بصورت پیشفرض چگونه است؟
جامعه پی اچ پی ایجاد شده در ۱۳ اردیبهشت ۱۴۰۲

با سلام وققتون بخیر توی ویدیو توضیح داده شده که اگر این متد سازنده تعریف نشه بصورت پیشفرض و ضمنی داخل کلاس وجود داره الان من یک کلاس میسازم بدون هیچ پراپرتی و متدی

class MyClass{
}

حالا میخوام این کلاس یک متن رو در خروجی نمایش بده و بدین شکل دستور رو مینویسم

echo new MyClass('MyClass class has initialized !');

اما خطا میده Object of class MyClass could not be converted to string خب چرا این اتفاق میفته مگه متد سازنده بصورت ضمنی وجود نداره داخل کلاس؟ حالا فرض کنیم این شده ورودی اون متد شده این متن وبایستی خطا نده ممنون میشم توضیح بدید این موضوع رو و البته عین عملیات رو داخل یکی از ویدیو‌ها استاد انجام دادن خطا نداد ولی من انجام میدم خطا میده

سلام،

متدسازنده رو باید بهش دستور بدید چه کاری انجام بده. بصورت پیشفرض چیزی رو چاپ نمیکنه. ضمن اینکه این دستور echo که نوشتید، قصد کردید آبجکت رو چاپ کنید. شما نمیتونید یک آبجکتو بصورت یک رشته باهاش رفتار کنید(خطا هم به همین اشاره میکنه) مگر اینکه متد مثل زیر عمل کنید:

class Test {
	public $value;
	public function __construct($value) {
		$this->value = $value;
	}
	public function __toString() {
		return $this->value;
	}
}
echo new Test('hi');
بهترین پاسخ
محسن موحد ۱۳ اردیبهشت ۱۴۰۲، ۱۷:۰۷