در بخش قبلی از سری آموزش شی گرایی در PHP، نحوه استفاده از کلمه کلیدی $this
برای بهره بردن از متدها و پراپرتی ها داخل اسکوپ کلاس رو یاد گرفتیم.
در این بخش، ما یاد میگیریم که چطور از خروجی که $this
ایجاد میکنه، می توانیم یک زنجیره ای از کدها بسازیم.
برای مثال، در کلاس Car
, ما مقدار سوخت داخل مخزن را اندازه گیری می کنیم.
و مقدار سوخت مخزن، میزان کیلومتری که میتوانیم با آن ماشین برانیم را مشخص می کند.
برای رسیدن به این نتیجه، یک پراپرتی پابلیک $tank
در کلاس خودمان قرار میدیم که مقدار سوخت داخل خودرو را نشان می دهد.
1 2 3 |
class Car { public $tank; } |
همچنین باید دو متد دیگر به کلاس خود اضافه کنیم:
- متد
fill()
که سوخت را به مخزن اضافه میکند. - متد
ride()
محاسبه می کند که چه مقدار سوخت در هر مسافت طی می شود و آن را از مقدار موجود در مخزن کم می کند.
در مثال ما، خودرو می تواند به ازای هر ۵۰ مایل یک گالون (۳/۷۸۵۳ لیتر) مصرف کند.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
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; } } |
همانطور که میخوایم کد ما مدرن به نظر بیاد، زنجیره ای از متدها و خواص ایجاد می کنیم :
1 |
$tank = $car -> fill(10) -> ride(40) -> tank; |
در مثال بالا ما محاسبه کردیم که بعد از اینکه مخزن را ۱۰ گالون پر کردیم و ۴۰مایل رانندگی کردیم، چه مقدار سوخت داخل مخزن باقی می ماند.
برای اینکه بتوانیم از تکنیک زنجیر استفاده کنیم، باید متدهای ما مقدار آبجکت (object) را برگشت بدهد، از آنجایی که ما داخل کلاس هستیم، متدها باید مقدار کلمه کلیدی $this
را برگشت بدند.
در کد پایین، می توانیم ببینیم که هر متد مقدار $this
را برگشت می دهد که به ما اجازه زنجیر کردن را می دهد.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
class 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; } } |
حالا، می توانیم یک شی از کلاس کار به نام $bmw
بسازیم و مقدار سوخت باقی مانده داخل مخزن ماشین را بعد از پر کردن ۱۰گالون و رانندگی به مسافت ۴۰ مایل، بدست بیاریم.
1 2 3 4 5 6 7 8 9 |
// 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."; |
خروجی
The number of gallons left in the tank: 9.2 gal.
جمع بندی
در این بخش از آموزش شی گرایی در php، یاد گرفتید که برای نوشتن کد روان و بهبود خوانایی آن، متدها و پراپرتی ها را زنجیر کنید.
در بخش بعدی یاد میگیرید که چطور متدها و خواص یک متد را با کلمه کلیدی public
و private
محدود کنید
امیدوارم از این آموزش نهایت استفاده را برده باشید.
هر سوال یا مشکلی داشتید در بخش نظرات همین پست ارسال کنید، سریعا بررسی و راهنمایی می شود.
موفق و پیروز باشید.
سلام یک سوال داشتم من یه سایت درست کردم یک ناحیه کاربری ساده هست که افراد میتونن در اونجا ثبت نام کنند و وارد محیط کاربری خودشون بشن برای این کار من یک تیبل به اسم user درست کردم خب داخل این جدول اطلاعات کاربر ثبت میشه مثل اسم و نام خانوادگی و …. یکی از مواردی که داخل این جدول ثبت تعداد روزی هست که میتونن از سایت استفاده کنه که من بطور پیشفرض این و روی ۳۰ روز گذاشتم حالا من میخوام بدونم چطور میتونم هر روز ۱ روز از این ۳۰ روز کم کنم که بشه ۰ اگه میشه کدشو بهم بدید راهنمایی کنید
سلام. به جای اینکه تعداد روز رو قرار بدید یه تاریخی از ۳۰ روز آینده رو به صورت timestamp ذخیره کنید تا چک بشه که اگه به این روز رسید دسترسی رو قطع کنه یا هرچیزی شبیه این
این چک کردن هر روزه هم باید با کرون جاب انجام بشه
دو آموزش زیر رو ببینید :
https://netparadis.com/date-time-php
https://netparadis.com/managing-cron-jobs-with-php