آموزش Property و Method در PHP شیءگرا (OOP) به زبان ساده
مقدمهای بر شیءگرایی (OOP) در PHP
برنامهنویسی شیءگرا یا Object-Oriented Programming (به اختصار OOP) یک الگوی برنامهنویسی قدرتمند است که به ما کمک میکند کدهای خود را با شبیهسازی دنیای واقعی، ساختاریافتهتر و منظمتر بنویسیم. دو مفهوم پایهای و بسیار اساسی در این الگو، پراپرتی (Property) و متد (Method) هستند.
اگر یک کلاس را مانند یک نقشه ساختمانی در نظر بگیریم، شیء (Object) سازهای است که از روی آن نقشه ساخته میشود. ویژگیهای این سازه (مانند رنگ دیوار، تعداد اتاقها و مساحت) همان پراپرتیها هستند و فعالیتهایی که در آن انجام میشود (مانند باز کردن درها یا روشن کردن سیستم گرمایشی) همان متدها نام دارند.
پراپرتی (Property) در PHP چیست؟
پراپرتیها در واقع همان متغیرهایی هستند که درون یک کلاس تعریف میشوند و مشخصات یا دادههای مربوط به آن کلاس را در خود ذخیره میکنند. برای تعریف یک پراپرتی، ابتدا یکی از کلمات کلیدی دسترسی (مانند public) و سپس نام متغیر را میآوریم.
class Car {
public $brand;
public $color;
}
در مثال فوق، کلاس Car دارای دو ویژگی به نامهای brand (برند) و color (رنگ) است. این متغیرها ویژگیهای فیزیکی خودروی ما را مشخص میکنند.
متد (Method) در PHP چیست؟
متدها توابعی هستند که درون یک کلاس تعریف میشوند و وظیفه انجام کار خاصی را بر عهده دارند. متدها رفتار شیء را توصیف میکنند. برای مثال، یک خودرو میتواند حرکت کند یا ترمز کند.
class Car {
public $brand;
public $color;
public function startEngine() {
return "موتور خودروی " . $this->brand . " روشن شد!";
}
}
در این مثال، تابع startEngine متدی است که رفتاری را برای خودروی ما شبیهسازی میکند.
کلمه کلیدی $this چیست و چه کاربردی دارد؟
شبهمتغیر $this در PHP برای اشاره به نمونه فعلی از کلاس (یعنی همان شیء جاری) استفاده میشود. زمانی که درون یک متد میخواهیم به پراپرتیها یا دیگر متدهای همان کلاس دسترسی داشته باشیم، از $this->propertyName استفاده میکنیم تا PHP متوجه شود مقصود ما ویژگیهای متعلق به همین شیء خاص است.
سطوح دسترسی (Access Modifiers) به زبان ساده
برای کنترل دسترسی و امنیت دادهها، میتوانیم میزان دسترسی به متدها و پراپرتیها را با استفاده از کلمات کلیدی زیر محدود کنیم:
- public: از همه جا (داخل کلاس و خارج کلاس) قابل دسترسی و تغییر است.
- private: فقط و فقط از داخل کلاسی که تعریف شده قابل دسترسی است.
- protected: فقط از داخل خود کلاس و کلاسهایی که از آن ارثبری کردهاند (فرزندان) قابل دسترسی است.
یک نمونه کد کامل و استاندارد
بیایید تمام مفاهیم گفته شده را در یک کلاس واقعی به نام User جمعبندی کنیم که شامل پراپرتیهای private و متدهای Getter برای دسترسی امن به آنهاست:
class User {
// تعریف پراپرتیهای خصوصی (کپسولهسازی)
private $username;
private $email;
// متد جادویی سازنده برای مقداردهی اولیه
public function __construct($username, $email) {
$this->username = $username;
$this->email = $email;
}
// متد عمومی برای دسترسی به نام کاربری
public function getUsername() {
return $this->username;
}
// متد برای دریافت اطلاعات کامل کاربری
public function getProfileInfo() {
return "کاربر: " . $this->getUsername() . " | ایمیل: " . $this->email;
}
}
// نمونهسازی یا ایجاد شیء جدید
$user1 = new User("mohammad_dev", "m.dev@gmail.com");
echo $user1->getProfileInfo();
بهترین شیوهها (Best Practices) در توسعه استاندارد
طبق استانداردهای جهانی توسعه و تمیزنویسی کد (Clean Code):
- اصل کپسولهسازی (Encapsulation): بهتر است همیشه پراپرتیهای خود را به صورت
privateیاprotectedتعریف کنید و برای خواندن یا تغییر مقدار آنها از متدهای Getter و Setter استفاده نمایید. - نامگذاری استاندارد: نام پراپرتیها را با روش camelCase (مانند
$userEmail) و نام کلاسها را با PascalCase (مانندUserProfile) بنویسید. - مسئولیت واحد (Single Responsibility): هر متد در کلاس باید فقط و فقط یک وظیفه مشخص را انجام دهد و از نوشتن متدهای شلوغ و چندمنظوره پرهیز کنید.
پرسش و پاسخ
نظری یافت نشد
برای ارسال نظر ابتدا وارد شوید