خواص
property (خصوصیت) روشی برای دسترسی به متغیرهایی با سطح دسترسی private میباشد. هر property دارای دو بخش میباشد، یک بخش جهت مقدار دهی (بلوک set) و یک بخش برای دسترسی به مقدار (بلوک get) یک داده private میباشد. در مثال زیر نحوه تعریف و استفاده از property آمده است :
2: <?php 2: 3: class Person 4: { 5: private $name; 6: 7: public function setName($my_name) 8: { 9: $this->name = $my_name; 10: } 11: 12: public function getName() 13: { 14: return $this->name; 15: } 16: } 17: 18: $person1 = new Person(); 19: 20: $person1 -> setName('Jack'); 21: echo $person1 -> getName(); 22: 23: ?>
Jack
در برنامه بالا نحوه استفاده از property آمده است. همانطور که مشاهده میکنید در این برنامه ما یک خصوصیت تعریف کردهایم و یک متغیر با سطح دسترسی private.
private $name;
دسترسی به مقدار این متغیر فقط از طریق property های ارائه شده امکان پذیر است.
public function setName($my_name) { $this->name = $my_name; } public function getName() { return $this->name; }
در نامگذاری property ها به صورت قراردادی ابتدا کلمه set یا get و سپس علامت زیر و بعد نام متغیر را بنویسید :
setName() { } getName() { }
در داخل کلاس دو بخش میبینید، یکی بخش (7-10) set و دیگری بخش (12-15) get.
به این نکته توجه کنید که به طور قرار دادی، در نامگذاری متدهای set و get ابتدا این دو کلمه و سپس نام فیلدهای کلاس با حرف بزرگ میآیند. مثلاً در همین مثال بالا برای فیلد name$ متدها به صورت setName و getName نامگذاری میشوند. برای دسترسی به یک خاصیت میتوانید از علامت <- استفاده کنید.
$person1 -> setName('Jack');
دستور بالا بخش set مربوط به property را فراخوانی کرده و مقادیری به متغیر اختصاص میدهد. استفاده از property ها کد نویسی را انعطاف پذیر میکند مخصوصاً اگر بخواهید یک اعتبارسنجی برای اختصاص یک مقدار به متغیر یا استخراج یک مقدار از آن ایجاد کنید. مثلاً در مثال زیر شما میتوانید یک محدودیت ایجاد کنید که فقط اعداد مثبت به فیلد age (سن) اختصاص داده شود. میتوانید با تغییر بخش set خاصیت Age این کار را انجام دهید :
1: <?php 2: 3: class Person 4: { 5: private $age; 6: 7: public function setAge($my_age) 8: { 9: if($my_age > 0) 10: { 11: $this->age = $my_age; 12: } 13: else 14: { 15: echo 'Age can not negative or zero!'; 16: } 17: } 18: 19: public function getAge() 20: { 21: return $this->age; 22: } 23: } 24: 25: $person1 = new Person(); 26: 27: $person1 -> setAge(12); 28: echo $person1 -> getAge(); 29: 30: ?>
12