دوره آموزشی PHP

آموزشگاه تخصصی برنامه نویسی

دوره آموزشی PHP

آموزشگاه تخصصی برنامه نویسی

آموزش برنامه نویسی شیء گرا با PHP - قسمت دوم

در این قسمت به ساخت یک کلاس بسیار ساده می پردازیم.
بیایید کد یک کلاس Car را ایجاد کنیم . در این مثال شروع به تعریف کلاس خود می‌کنیم . این کار را با استفاده از کلمه کلیدی Class در خط دوم می‌کنیم . تمرین مهندسی نرم‌افزار خوبی است تا حرف اول تمامی نامهای کلاسها را برای تشخیص آنها از متغیرها یا توابع با حروف بزرگ بنویسیم .
برنامه‌نویسان این کار را برای سالها در زبانهای گوناگون دیگر انجام داده‌اند . شناسایی Constructor در میان متدهای متنوع دیگر در کلاس ساده است . همچنین عادت خوبی است که نام فایل‌هایتان را با نام کلاس نامگذاری کنید . نظیر Car.php یک فایل تنها باید شامل یک کلاس باشد . اگر چند کلاس دارید که به یکدیگر مرتبط هستند ، نظیر مجموعه کلاسهای انواع داده اصلی ، باید آنها را درون یک زیرادایرکتوری تحت برنامه کاربردی اصلی خود قرار دهید . اگر روی یک پروژه عظیم کار می‌کنید ، این تمرین ضروری است .

با بزرگتر شدن سیستم‌ها ، ضروری خواهد بود که از یک ساختار دایرکتوری درخت مانند ، برای نگهداری تمامی کلاسهایی که در برنامه کاربردی وب شما بکار می‌روند ، استفاده کنید . شما باید از include_once() یا require_once() برای اضافه کردن کلاسها به فایل‌های سورس خود در هنگام نیاز به آنها استفاده کنید .


PHP Code:
<? Php // Car.php class Car  {
در یک مدل بی‌نهایت ساده از یک اتومبیل ، کلاس شامل موتور و نمایش کلیدی برای روشن کردن اتومبیل است . یک اتومبیل واقعی باید یک بدنه ، یک پدال گاز و یک ترمز و یک چرخ ، گیربکس و غیره داشته باشد ، اما این تنها برای نمایش است :
PHP Code:
var $engine ;
var 
$requiredkey
اتومبیل ما همچنین یک constructor دارد که موتور آن را تنظیم می‌کند و کلیدی دارد که اتومبیل را روشن می‌کند . اگر این عناصر اتومبیل را شناسایی نمی‌کردیم ، هر فراخوانی start() و stop() از کار می‌ایستاد و خطاهایی را بر می‌گرداند . چنانکه قبلاً ذکر کردیم ، وظیفه constructor شناسایی تمامی عناصر شیء ، جهت کسب اطمینان از امکان استفاده از تمامی سرویس‌ها در هنگام نیاز است .
توجه داشته‌باشید که اگر می‌خواهید به یک عضو کلاس رجوع کنید ، باید یک کلمه کلیدی $this-> را در ابتدای نام عضو قرار دهید . این ارتباط از جاوا یا C++ متفاوت است که در آنها اختیاری است . این بدلیل کارایی ضعیف PHP ، سه سطح namespace وجود دارند که متغیرها در آن مرتب می‌شوند . (یک namespace اصولاً مجموعه‌ای از نام متغیرها است).
پایین‌ترین سط ح namespace برای متغیرهای محلی درون توابع یا متدها بکار می‌رود . هر متغیر ایجاد شده در این سطح به namespace محلی اضافه شده است . namespace بعدی حاوی تمامی اعضای یک شیء است . بالاترین سطح namespace برای متغیرهای عمومی بکار می‌رود . کلمهه کلیدی $this به PHP می‌گوید که متغیر را از namespace شیء می‌خواهید (سطح وسط) . اگر فراموش کنید که کلمه کلیدی $this را لحاظ کنید ، یک متغیر کاملاً جدید را در namespace محلی ایجاد خواهید کرد . از آنجایی که این به یک متغیر کاملاً متفاوت از آنچه که قرار بود رجوع می‌کند ، چند خطای منطقی که اشکال زدایی آنها دشوار است را خواهید داشت .

اطمینان پیدا نماید که گزارش خطا را فعال می‌کنید ، که در فصل بعدی مورد بحث قرار گرفته است ، و چند assertion را برای محافظت از این خطای رایج در هنگام توسعه کلاسهایتان اضافه کنید .

متد start() اتومبیل را با استفاده از key برای کاربر روشن خواهد کرد . اگر key صحیح باشد ، آبجکت اتومبیل به موتور خواهد گفت تا شروع به کار کند :

PHP Code:
// Constructor function Car()
{
$this-> requiredkey(); $this->engine= new Engine() ;
}
function 
start ($Key)
{
if (
$key->equals($this->requiredKey)) { $this->engine->start();
return 
true ;
}
return 
false ;
متد stop() ساختاری مشابه متد start() دارد . این متد بررسی می‌کند تا ببیند آیا موتور روشن است یا خیر ، و اگر روشن باشد ، اتومبیل را متوقف خواهد کرد . توجه کنید که چک کردن موتور برای اطمینان از روشن بودن آن می‌توانست در تابع stop() آبجکت engine صورت گیرد ، تا ما راحتی از فکر کردن درباره آن باز دارد . از خودتان سؤال خواهید کرد که منطق(logic) در کجا بکار خواهد رفت . این ، پایه‌های توسعه معماری خوب و موفق است :
PHP Code:
function stop ()
{
if (
$this->engine->isRunning()) { $this->engine->stop() ;
}
}
// … Several other methods such as moving and turning , and so on . } ?> 
نظرات 0 + ارسال نظر
برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد