یه بار برای همیشه، فرانت‌اندو اصولی یاد بگیر! یه بار برای همیشه، فرانت‌اندو اصولی یاد بگیر!
🎯 ثبت نام
بستن تبلیغات
دوره آموزش جامع PHP از صفر تا صد با پروژه‌های عملی

توی دوره رایگان PHP، هر چیزی که برای حرفه‌ای شدن نیاز داری رو یاد می‌گیری! از مفاهیم پایه تا پیشرفته، همراه با یه پروژه واقعی برای ساخت یه سایت مثل آپارات.

مشاهده بیشتر
دوره پروژه‌محور لاراول: ساخت وبسایت خبری از صفر تا صد

توی این دوره با هم یه وبسایت خبری واقعی رو از صفر می‌سازیم! از طراحی دیتابیس و احراز هویت تا ساخت API و یه پنل مدیریت حرفه‌ای، همه رو یاد می‌گیریم و آماده پروژه‌های واقعی میشی!

مشاهده بیشتر

آموزش فراخوانی متدها و property ها به صورت زنجیره ای و پشت سرهم / chaining methods & properties

آموزش فراخوانی متدها و property ها به صورت زنجیره ای و پشت سرهم / chaining methods & properties>>

در مبحث حاضر به شرح نحوه ی فراخوانی دستورات به صورت پشت سرهم در php می پردازیم. در این آموزش خواهید دید هنگامی که متد یک کلاس $this را با استفاده از دستور return در انتهای بدنه (تابع) برمی گرداند، چگونه می توان دستورات را به صورت پشت سرهم در یک خط صدا زده و کد اپلیکیشن مورد نظر را به صورت روان و کاراتر نوشت.

برای مثال، در کلاس Car، می خواهیم مقدار بنزین موجود در باک ماشین را اندازه گیری کنیم. مقدار سوخت موجود در باک علاوه بر بنزینی که در باک می ریزیم، به مسافتی که اتومبیل (بر حسب مایل) طی می کند ، بستگی دارد.

به منظور نیل به این هدف، ابتدا یک property با سطح دسترسی public به نام $tank در کلاس car تعریف می کنیم. داخل این متغیر مقدار سوخت (بر حسب گالون) که در باک ماشین ریخته شده است را ذخیره می نماییم.

1
2
3
4
class Car {
  public $tank;
}
<button></button>

آنچه در این آموزش خواهید آموخت:

  • با نحوه ی فراخوانی پشت سرهم متدها و property های کلاس آشنا می شوید.
  • علت فراخوانی پشت سرهم متدها و property ها را خواهید فهمید.

لازم است دو متد به کلاس Car اضافه کنیم:

  1. متد ()fill، به هنگام فراخوانی، باک اتومبیل را با چند گالون سوخت پر می کند.
  2. متد ()ride به هنگام فراخوانی، محاسبه می کند آیا چقدر سوخت برای طی کردن مسافت معینی مصرف می شود و سپس آن مقدار سوخت را از باک (مقدار متغیر $tank) کسر می کند. در مثال جاری، فرض را بر این می گذاریم که ماشین به ازای هر 50 مایل، 1 گالون سوخت مصرف می کند:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Car {
  public $tank;
  // Add gallons of fuel to the tank when we fill it.
  public function fill($float)
  {
    $this-> tank += $float;
  }
  // Substract gallons of fuel from the tank as we ride the car.
  public function ride($float)
  {
    $miles = $float;
    $gallons = $miles/50;
    $this-> tank -= $gallons;
  }
}
<button></button>

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

1
$tank = $car -> fill(10) -> ride(40) -> tank;<button></button>

شرح کد: پس از پر کردن باک ماشین با 10 گالون و طی کردن 40 مایل، چقدر سوخت در باک ماشین (متغیر tank) باقی می ماند.

برای اینکه بتوانیم متدها را به صورت پشت سرهم یا زنجیره ای فراخوانی کنیم، متدها می بایست آبجکت را به عنوان خروجی بازگردانی کند و از آنجایی که داخل کلاس خود هستیم، متد باید کلیدواژه ی $this را برگرداند. در قطعه کد زیر می بینید که چگونه هر یک از متدها با برگرداندن $this (درج کلیدواژه ی $this پس از دستور return در انتهای بدنه ی هر متد) امکان فراخوانی پشت سرهم دستورها را فراهم می کنند.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Car {
  public $tank;
  // Add gallons of fuel to the tank when we fill it.
  public function fill($float)
  {
    $this-> tank += $float;
    return $this;
  }
  // Substract gallons of fuel from the tank as we ride the car.
  public function ride($float)
  {
    $miles = $float;
    $gallons = $miles/50;
    $this-> tank -= ($gallons);
    return $this;
  }
}
<button></button>

اکنون، می توانیم یک آبجکت از روی کلاس Car به نام $bmw ساخته و مقدار سوخت باقی مانده در باک ماشین (مقدار نهایی متغیر tank پس از کسر مسافت طی شده) را پس از افزودن 10 گالون به باک و پیمودن 40 مایل بدست بیاوریم.

1
2
3
4
5
6
7
8
// Create a new object from the Car class.
$bmw = new Car();
// Add 10 gallons of fuel, then ride 40 miles,
// and get the number of gallons in the tank.
$tank = $bmw -> fill(10) -> ride(40) -> tank;
// Print the results to the screen.
echo "The number of gallons left in the tank: " . $tank . " gal.";
<button></button>

خروجی:

1
The number of gallons left in the tank: 9.2 gal.<button></button>
1396/03/11 5362 1645
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
نظرات شما

نظرات خود را ثبت کنید...