به جایِ (insteadof)
کلیدواژه «insteadof در PHP» هنگام استفاده از «تریت (Trait)» می گوید کدام متد را انتخاب کن. اگر دو تریت هم نام باشند، با insteadof یکی را برمی گزینیم. مثل انتخاب کاپیتان بین دو تیم.
تعریف و کاربرد insteadof
وقتی چند تریت متد هم نام دارند، برخورد رخ می دهد. با insteadof مشخص می کنیم کدام نسخه متد در کلاس استفاده شود. بنابراین کد پایدار و قابل پیش بینی می ماند.
نمونه کد: حل تعارض تریت ها
<?php
trait message1 {
public function msgA() {
echo "My favorite color is red. ";
}
public function msgB() {
echo "My favorite number is 5. ";
}
}
trait message2 {
public function msgA() {
echo "My favorite color is blue. ";
}
public function msgB() {
echo "My favorite number is 7. ";
}
}
class MyClass {
use message1, message2 {
message1::msgA insteadof message2;
message2::msgB insteadof message1;
}
}
$obj = new MyClass();
$obj->msgA();
$obj->msgB();
?>
گام های عملی
- دو تریت با متدهای هم نام بساز.
- در کلاس، هر دو تریت را use کن.
- با insteadof تعیین کن کدام متد اجرا شود.
نکته: برای آشنایی با خود تریت، صفحه trait را ببین. همچنین کاربرد use در واردکردن تریت ها مهم است.
هشدار: فقط تعارض هم نام را حل می کند؛ نام های متفاوت نیاز به insteadof ندارند.
برای دسترسی سریع، این صفحه insteadof در PHP را نشانه گذاری کن.
جمع بندی سریع
- insteadof تعارض متد تریت ها را حل می کند.
- در بخش use کلاس نوشته می شود.
- می توان برای هر متد جدا تعیین تکلیف کرد.
- کد را قابل پیش بینی می کند.