قوانین نامگذاری کلاس ها در php
قوانین نامگذاری کلاس ها در php، تقریبا شبیه این قوانین در متغیرها، و مخصوصا قوانین نامگذاری توابع در php می باشد.
یک کلاس با نام استاندارد می تواند باعث راحتی بیشتر در استفاده از آن شود. مفهوم کلاس را بهتر برساند و خوانایی آن در سراسر برنامه بیشتر شود.
نام کلاس نباید تکراری باشد
نامی که برای کلاس خود انتخاب می کنیم، باید خاص و غیرتکراری باشد. در غیر اینصورت php به ما خطای نام تکراری می دهد.
همچنین نام های رزرو شده ای برای توابع و کلاس های از پیش ساخته (pre-defined) وجود دارد که مجاز به استفاده از آنها نیستیم. مانند کلاس های closure و generator یا توابع strlengh و array_filter.
نام های دوبخشی کلاس
اگر نامی که قصد دارید برای کلاس خود انتخاب کنید، شامل بیش از یک کلمه باشد، باید از روش UpperCamelCase استفاده کنید.
در این روش حرف اول تمام کلمه ها، uppercase نوشته می شود:
class GetUser {} class SavePost {}
نام کلاس به حروف کوچک و بزرگ حساس نمی باشد
مشابه توابع و برخلاف متغیرها، نام کلاس ها در php، به حروف کوچک و بزرگ حساس نمی باشد. (case-insensitive)
می توانیم بدون آنکه به کوچک یا بزرگ بودن نام کلاس فکر کنیم، از آن استفاده کنیم. گرچه بهتر است فکر کنیم!
class SavePost{} $save = new savePost(); //true $save = new savepost(); //true
نام کلاس باید معنادار و منطبق با هدف آن باشد
ما مجاز نیستیم هر نامی که دلمان میخواهد برای کلاس انتخاب کنیم.
نام کلاس مانند یک برند، هویت آن کلاس را مشخص می کند. نام کلاس باید در نگاه اول، هدف آن کلاس و کاری که می کند را شفاف کند.
مثلا اگر قرار است کلاس ما در مورد کاربر باشد، انتخاب نام User مناسب است، چون دقیقا به کاربر اشاره می کند.
نامگذاری غیرمرتبط هم می تواند ما را در استفاده از کلاس دچار سختی کند و هم کار را برای کسی که در آینده کد ما را می خواند، دشوار کند.
هم چنین نام کلاس حتما باید اسم مفرد (singular noun) باشد، نه اسم جمع، نه صفت و فعل.
کاراکترهای مجاز در نام کلاس
در نام گذاری کلاس باید قوانین زیر را در نظر داشته باشیم:
- حرف اول کلاس باید حرف بزرگ باشد.
- حرف دوم به بعد می تواند undrescore، حرف یا عدد باشد. (بهتر است فقط از حرف استفاده کنیم)
- نام کلاس نمی تواند حاوی space باشد.
class SavePost {} //true and use class _savePost {} //true but dont use class $savePost {} //false class Save$post {} //false class 1savePost {} //false class Save post {} //false class Save1post {} //true but dont use