با مطالعه فصل گذشته نحوه تعریف یک کلاس به همراه استفاده از آن را یاد گرفتید. همچنین با مفاهیمی چون Construct ها یا سازنده ها تا حد قابل قبولی آشنا شدید. سپس به تعریف ویژگی ها در یک کلاس پرداختیم. در این جلسه قصد داریم به نحوه کار با متدها (Methods) در کلاس ها اشاره کنیم. اگرچه مثال های ساده ای در ارتباط با متدها ارائه کردیم ولی در این بخش به صورت عمقی به آن می پردازیم.
متدها شبیه به توابع هستند اما با کمی تغییرات جزئی. برای مثال در متدها علامت ــ (دو آندرلاین) به عنوان نام های رزرو شده هستند و شما نمی توانید یک متد به صورت مثلا construct__ تعریف کنید!
همچنین یک کلمه ی کلیدی ویژه به نام this$ وجود دارد که برای دسترسی به ویژگی های (Properties) یک کلاس مورد استفاده قرار می گیرد. در مثال زیر یک متد به نام get_password تعریف کرده ایم و درون آن مقدار رمز عبور را بر می گردانیم:
class User { public $name, $password; function get_password() { return $this->password; } }
متد get_password از یک کلمه کلیدی به نام this$ جهت دسترسی به ویژگی password از همان کلاس استفاده کرده است. توجه داشته باشید که برای دسترسی به متد password نیازی به قرار دادن علامت $ نیست. بلکه اپراتور یا عملگر <- جایگزین علامت دلار یا $ می شود. در ادامه برای استفاده از این مثال باید یک شیء به عنوان نمونه از آن تعریف کرده و سپس متد موردنظر را فراخوانی کنیم:
$object = new User; $object->password = "secret"; echo $object->get_password();
برخی متدها یا ویژگی ها در زبان برنامه نویسی PHP به صورت استاتیک یا ایستا تعریف می شوند. مزیت این نوع متدها این است که شما بدون اینکه از آن کلاس نمونه برداری کنید، می توانید متد مورد نظر را با قرار دادن یک جفت علامت :: بکار بگیرید. به عبارت دیگر متدها یا ویژگی های استاتیک به کلاس چسبیده اند و برای استفاده از آنها نیازی به ساختن شیء نیست!
به مثال زیر توجه کنید:
<?php class User { static function pwd_string() { echo "Please enter your password"; } } User::pwd_string(); ?>
در این مثال برای استفاده از متد pwd_string نیازی به ساخت شیء از روی آن کلاس نیست.
همواره نباید ویژگی ها را درون یک کلاس تعریف کرد. گاهی می توان آنها را به صورت ضمنی یعنی خارج از کلاس تعریف نموده و سپس نمایش دهیم. به مثال زیر توجه کنید:
<?php class User {} $object1 = new User(); $object1->name = "Alice"; echo $object1->name; ?
در مثال فوق ابتدا کلاس User را تعریف کرده ایم و چون هیچ ویژگی ای برای آن در نظر نگرفته ایم، میتوانیم ویژگی های جدیدی را خارج از کلاس با استفاده از عملگر <- ایجاد کنیم.
اگر یادتان باشد در فصول اولیه این دوره آموزشی متنی، نحوه تعریف کردن ثابت ها در زبان PHP را آموزش دادیم. در کلاس ها ثابت ها دقیقا مشابه آنچه بیان شده است، تعریف می شوند ولی اگر بخواهیم به آنها دسترسی داشته باشیم باید از کلمه ی کلیدی self به همراه عملگر :: استفاده کنیم. به مثال زیر توجه بفرمایید:
<?php Translate::lookup(); class Translate { const ENGLISH = 0; const SPANISH = 1; const FRENCH = 2; const GERMAN = 3; static function lookup() { echo self::SPANISH; } } ?>
با بررسی مثال فوق متوجه شده اید که ثابت ها را درون یک متد استاتیک با کلمه ی کلیدی self نمایش داده ایم.
اگر به مثال های قبلی توجه کنید با کلماتی مشابه public, protected و private رو به رو می شوید. این کلمات در واقع محدوده ی به کارگیری یک ویژگی یا متد را مشخص می کنند.
public
در صورتیکه این کلمه در ابتدای یک ویژگی یا متد قرار بگیرد بدین معنی است که آن ویژگی یا متد علاوه بر اینکه درون آن کلاس در دسترس است، درون تمام کلاس های دیگر و خارج از کلاس اصلی قابل استفاده می باشد.
protected
قرار گرفتن این کلمه در ابتدای یک ویژگی یا متد باعث می شود آن متد یا ویژگی علاوه بر اینکه درون کلاس اصلی خود در دسترس باشد، در کلاسی که از کلاس اصلی ارث بری (مبحث ارث بری در ادامه توضیح داده خواهد شد) داشته، قابل دسترس شود.
private
ویژگی یا متدی که به صورت private تعریف می شود، تنها درون آن کلاس (کلاس اصلی) در دسترس است و در هیچ مکانی قابل استفاده نیست.
ارث بری به معنای به ارث بردن یک سری ویژگی ها یا متدها از کلاس پدر توسط کلاس فرزند است.
مثلا فرض کنید شما قد، رنگ مو و ابروهایتان را از پدر خودتان به ارث برده اید، بنابراین به ویژگی هایی مثل ابرو، قد، دسترسی دارید. در دنیای برنامه نویسی نیز دقیقا به همین صورت است.
مثلا فرض کنید یک کلاس به نام User داریم که کلاس پدر نامیده می شود. کلاس فرزند دیگری به نام Contact تعریف می کنیم که تمام متدها و ویژگی های کلاس پدر را به ارث برده است. برای نمایش ارث بری یک کلاس از کلمه کلیدی extends
استفاده می کنیم:
<?php class User { public $name, $password; function save_user() { echo "Save User code goes here"; } } class Contact extends User { public $phone, $email; function display() { echo "Name: " . $this->name . "<br>"; echo "Pass: " . $this->password . "<br>"; echo "Phone: " . $this->phone . "<br>"; echo "Email: " . $this->email; } } $object = new Contact; $object->name = "Fred"; $object->password = "pword"; $object->phone = "012 345 6789"; $object->email = "fred@bloggs.com"; $object->display(); ?>
در این مثال ابتدا یک شیء به نام object از کلاس Contact ایجاد کرده ایم. سپس به مقادیر name و password که در کلاس پدر User تعریف شده است، مقادیر دیگری را اختصاص می دهیم. همانطور که ملاحظه می کنید، تمام ویژگی ها و متدهای کلاس پدر User علاوه بر اینکه در کلاس فرزند Contact در دسترس است، در شیء ای که از کلاس Contact ایجاد شده است، قابل مشاهده می باشد. در نهایت خروجی این مثال به صورت زیر خواهد بود:
Name: Fred Pass: pword Phone: 012 345 6789 Email: fred@bloggs.com
بسیار عالی عزیزان از اینکه تا به اینجای دوره آموزشی متنی PHP خدمت شما بودیم بسیار خوشحالیم. در فصل بعدی به صورت مفصل درباره آرایه ها در زبان PHP صحبت خواهیم کرد و شما عزیزان را با مفاهیم جدیدی آشنا می کنیم.
جهت دریافت آموزش ویدیویی صفر تا صد PHP به همراه ساخت CMS مشابه وردپرس روی اینجا یا تصویر زیر کلیک کنید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.