PDA

مشاهده نسخه کامل : Class نویسی در php



Siavashmusic
25-01-08, 06:59
Class نویسی در php

يك كلاس تعريف يا نماي يك نوع خاص داده است و كلاسها به عنوان روشي براي حالت دادن به تمام انواع متفاوت اشياء و سيستم شما عمل مي‌كنند . هنگامي كه مي‌خواهيم يك شيء جديد را تعريف كنيم ، ابتدا از كلمه كليدي class براي تعريف آن ، پيش از استفاده از آن در اسكريپت‌هاي PHP خود استفاده مي‌كنيم . تفاوت واضح يك كلاس و يك شيء اين است كه كلاس‌ها اشيايي را تعريف مي‌كنند كه در برنامه‌هايمان به كار مي‌بريم . پيش از آن كه درباره روش ساخت يك كلاس صحبت كنيم ، مي‌خواهيم شروع به تأمل كنيد كه يك كلاس نمايشي از يك ايده است . مهم است كه هنگامي كه كلاس‌هاي خودتان را طراحي مي‌كنيد . آنها يك هدف را دنبال كنند و تمامي رفتاري را كه از آن ايده انتظار مي‌رفت را فراهم كنند .
يك كلاس در PHP حاوي سه كامپوننت اصلي است : members (اعضاء) كه به آنها به عنوان داده يا صفت اشاره مي‌شود) متدها ، و Consructor يك عضو members تكه‌اي از داده است كه شيء در بر دارد . اشياء مي‌توانند هر تعداد عضو داشته باشند . براي مثال ، اگر قرار باشد اتومبيل را با استفاده از يك كلاس طراحي كنيم ، يك چرخ در حال دوران يا گيربكس بايد به عنوان يك عضو از ماشين تعريف شوند .
متدها سرويس‌هايي هستند كه شيء براي سرويس گيرنده‌هايش فراهم مي‌كند كه از اعضا داخلي آن استفاده مي‌كنند و آنها را دستكاري مي‌كنند . براي مثال ، اگر قرار باشد اتومبيل را با استفاده از يك كلاس طراحي كنيم ، يك چرخ در حال دوران يا گيربكس بايد به عنوان يك عضو از ماشين تعريف شوند .
متدها سرويس‌هايي هستند كه شيء براي سرويس گيرنده‌هايش فراهم مي‌كند كه از اعضا داخلي آن استفاده مي‌كنند و آنها را دستكاري مي‌كنند . براي مثال ، يك كلاس car مي‌تواند يك متد را براي روشن كردن وسيله نقله و استفاده از چرخ در حال دوران در داخل آن فراهم كند .
يك Constructor متد خاصي است كه شيء را درون وضعيت آماده آن معرفي مي‌:ند . تنها يك Constructor براي يك شيء در PHP مي‌تواند موجود باشد . در يك كلاس car ، افزودن بدنه ، موتور ، لاستيك‌ها ، گيربكس ، صندلي و غيره بر روي car با هم متفاوتند . هنگامي كه سرويس گيرنده‌ها مي‌خواهند از متدهاي روي يك شيء استفاده كنند ، Constructor اطمينان مي‌دهد كه هر متد عمليات را با موفقيت به انجام خواهد رساند و نتيجه مورد انتظار را برخواهد گرداند . براي مثال ، براي روشن كردن راديو درون اتومبيل شما ، بايد يك راديو نصب شده‌ باشد . در اين نمونه ، Constructor مسئول اطمينان بخشيدن از اين موضوع است كه راديو پيش از استفاده نصب شده است.
به غير از مقدار دهي شيء به يك وضعيت آماده معتبر ، تفاوت اساسي ديگر اين است كه يك Constructor هيچ مقدار برگشتي صريحي ندارد . تمامي Constructor ها يك متغير جديداً اختصاص يافته را براي استفاده در برنامه شما بر مي‌گردانند .
در نتيجه ، برگرداندن يك مقدار در Constructor كلاس ، غيرقانوني است . درباره استفاده از اشياء در برنامه‌هاي شما ، در بخش بعدي بيشتر صحبت خواهيم كرد . اطمينان يافتن از طراحي مناسب اشياء و Constructor هاي آنها ، مسئله‌اي است كه توسعه دهندگان زيادي اغلب با آن روبرو مي‌شوند . هنگامي كه كلاس برنامه‌نويسان را وادار مي‌كند كه اعضاي شيء را پيش از استفاده از متدهاي خود تنظيم كنند يا هنگامي كه كلاس برنامه‌نويس را وادار مي‌كند تا از ترتيب خاصي ، هنگام فراخواني متدهاي شيء پيروي كند ، كد گيج كننده و مبهمي را ايجاد مي‌كند . از OPP به اين منظور استفاده مي‌كنيم كه به طور كلي از بروز چنين مسئله‌اي جلوگيري كنيم . اگر كلاس مهندسي شده است تا از Constructor هاي خود براي معرفي بخشهاي كليدي كلاس استفاده نكند ، اشكال از طراحي ضعيف ناشي مي‌گردد . دوباره در همان تله گرفتار نشويد .
كلاسي كه خوب طراحي شده باشد برنامه‌نويسي ، اشكال‌زدايي و نگهداري زيادي را حذف مي‌كند

بياييد نگاهي به دستور زبان كلي براي Class در PHP بيندازيم ، كه استفاده از اين سه نوع كامپوننت را نشان مي‌دهد :



class ClassName [extends ParentclassName]
{
var $member1;
var $member2;


var $memberN;
// Constructor
function Class Name()
{
}
function method1()
{
}

function method2()
{
}
function methodN()
{
}
}
همان‌گونه كه مي‌بينيد ، يك كلاس چيزي نيست جز يك مجموعه از اعضاي تعريف شده (متغيرها) و متدها (توابع) . اعضا مي‌توانند يا انواع داده اوليه نظير integer ها و رشته‌ها يا انواع پيچيده‌تري نظير آرايه‌ها يا اشياء ديگر باشند . از آنجايي كه PHP از شما انتظار ندارد كه انواع را تعريف كنيد ، فقط مي‌توانيد متغيرهايتان را در بالاي كلاس ، به صورتي كه در بالا نشان داده شد ، نام ببريد .
با PHP مي‌توانيد متغيرهايي را در تابع خود ايجاد كنيد ؛ آنها به همان خوبي كه مورد انتظارتان است كا رخواهند كرد . اگرچه ، تمرين خوبي نخواهد بود اگر اين كار را انجام دهيد . اين به آن خاطر است كه وقتي برنامه‌نويسان ديگر به كلاس شما نگاه مي‌كنند ، فوراً تمامي اعضاي آن را پيش از نگاه كردن به پياده‌سازي توابع بشناسند .
متدها به سادگي تمام سرويس‌هايي هستند كه اين كلاس تضمين مي‌كند تا براي سرويس گيرنده‌هايش فراهم كند . سرويس گيرنده‌ها مي‌توانند برنامه‌هاي ديگر ، پروژه‌هاي ديگر و غيره باشند‌.