آژانس هواپیماییexchanging

آموزش پي اچ پي (كلاس ها) قسمت هشتم

شروع موضوع توسط Mehdi ‏21 دسامبر 2005 در انجمن آموزش PHP به زبان فارسی

  1. Mehdi

    Mehdi مدیر بازنشسته

    تاریخ عضویت:
    ‏1 آگوست 2004
    نوشته ها:
    5,569
    تشکر شده:
    49
    محل سکونت:
    Anywhere
    ابجكت ها :
    ابجكت چيست ؟ مجموعه اي از متغييرها و توابع است كه از يك الگوي خاص به نام كلاس ساخته شده اند .
    اما كلاس ها چي هستن ؟ فرض كنيد ما يك شركت داريم كه اين شركت از بخش هاي مختلفي تشكيل شده است حال ما در هربخش احتياج داريم كه هر ماه يك گزارش مالي بگيريم ! ما اينجا دو كار ميتونيم بكنيم هم ميتونيم براي هربخش چند نفر بزاريم و انها گزارش مالي را تهيه كنند و هر ماه تحويل دهند در اين صورت در هربخش شلوغي و همچنين كارمند بيشتري نيازمنديم ! راه ديگر اينست كه يك قسمت به عنوان اتاق گزارش مالي درست كنيم و هر بخش داده هاي خود را به اين قسمت بدهيم و گزارش مالي خود را دريافت كنيم
    در اين روش هم بخش ها منظم تر خواهند بود و هم ديگر احتياج به كارمند اضافي نداريم .
    در اينجا ابجكتها نقش كارمند در بخش گزارش مالي را بر عهده دارند فكر ميكنم مفهوم كلاس را درك كرده باشيد .
    بزاريد شكل كلي يك كلاس را برايتان نشان دهم
    PHP:
    Class First_class
    {
    //اين شكل كلي از يك كلاس هستش
    }
    پروپرتي ها:
    آبجكتها به متغيير هاي خاصي دسترسي دارند كه به آنها پروپرتي ميگويند اين پروپرتي ها ميتونند در هرجاي بدنه كلاس باشند اما براي اينكه كد مون مرتب باشه بهتره كه در بالاي كلاس تعريف بشن. بگزاريد با مثالي ديگر بيشتر توضيح بدم :
    PHP:
    Class f_class {
    var 
    $name="mehdi";
    }
    $obj1=new f_class();
    $obj2=new f_class();
    $obj1->name="Ali";
    print 
    "$obj1->name<br>";
    print
    "$obj2->name<br>";
    ديديم كه براي اختصاص دادن يك كلاس به يك متغيير اينگونه عمل كرديم
    PHP:
    $obj1=new f_class();   
    علامت <- به شما اجازه ميده تا به متغيير هاي درون يك كلاس دسترسي داشته باشيد و اونها رو تغيير بديد همونطور كه در كد ميبينيد ما در خط ششم متغيير name در ابجكت يك رو مساوي علي قرار داديم كه باعث عوض شدن متغيير ميشه همچنين براي چاپ خروجي نيز به همين صورت عمل كرديم ولي بدون علامت مساوي
    PHP:
    Print  $obj1->name ";
    متد ها :
    متدها در واقع توابعي هستند كه داخل يك كلاس وجود دارند بزاريد با يك مثال واضح تر بيان كنم :
    PHP:
    class f_class
         
    {
    var 
    $name;
    function 
    sayHello() 
     {
    Print 
    "Hello World";
    }
         }
    $obj1=new f_class();
    $obj1->sayHello();
    // Hello World  چاپ ميشود
    همونطور كه ميبينيد يك متد خيلي شبيه به تابع معمولي هستش با اين تفاوت كه متد هميشه داخل كلاس تعريف ميشه در ضمن شما ميتونيد با علامت <- يك متد ابجكت را صدا بزنيد
    مهمتر اينكه متدها به اعضاي متغيير هاي يك كلاس دسترسي دارند
    شما همين الان ديديد كه چطوري به يك پروپرتي از خارج يك آبجكت دسترسي پيدا كنيم اما چطوري يك آبجكت ميتونه خودشو به اصطلاح Return كنه :
    PHP:
    class f_class
         
    {
    var 
    $name="mehdi";
    function 
    sayHello() 
     {
    Print 
    "Hello My names $this->name<br>";
    }
         }
    $obj1=new f_class();
    $obj1->sayHello();
    // Hello My names mehdi    چاپ ميكنه
    يك عبارت مخصوص رو بكار برديم به اسم this$ تا كلاس به آبجكت كنوني Return بشه شما با تركيب اين عبارت با علامت <- ميتونيد داخل يك كلاس به هر پروپرتي و متدي كه بخواهيد دسترسي داشته باشيد حالا اگه بخواهيم به پروپرتي name در همه آبجكت هاي كلاسمون مقدار خاصي بديم ميتونيم به اين صورت عمل كنيم :
    PHP:
    class f_class     {
    var 
    $name="mehdi";
    function 
    setName($n){
    $this->name=$n;      }
    function 
    sayHello() 
     {
    Print 
    "Hello My names $this->name<br>";
    }
         }
    $obj1=new f_class();
    $obj1->setName("Ali");
    $obj1->sayHello();
    // Hello My names Ali   چاپ ميكنه
    همونطور كه ديديد اومديم يه تابع تعريف كرديم كه اسم رو بتونيم همه جا تغيير بديم واز دستورthis براي عوض كردنش داخل كلاس استفاده كرديم.
    در ابتدا اسم ما مهدي بود ولي بعد از اينكه تابع عوض كردن اسم رو بكار برديم متد صدا زده شد و اسم تغيير كرد
    كد بالا رو ميتونستيم بصورت ساده تر وكمي پيچيده تر هم بنويسيم :
    PHP:
    class first_class {
     var 
    $name;
     function 
    first_class$n="mehdi" ) {
     
    $this->name $n;
     }
     function 
    sayHello() {
     print 
    "hello my name is $this->name<BR>";
     }
     }
     
    $obj1 = new first_class("َAli");
     
    $obj2 = new first_class("Asef");
     
    $obj1->sayHello();
     
    // hello my name is Ali   چاپ ميكنه
     
    $obj2->sayHello();
     
    // hello my name is Asef  چاپ ميكنه
    همونطور كه ديديد اومديم و يه متد يا تابع با همون اسم كلاس خودمون ساختيم و مقدار ديفالتش رو روي مهدي گزاشتيم كه اگر هيچي وارد نشد اين عبارت چاپ بشه
    حالا در پايين در خط دهم و يازدهم هنگامي كه ابجكت يك و ابجكت دو رو به كلاس ها اختصاص ميديم همون موقع هم مقدار اسم رو عوض ميكنيم و مشكلي پيش نمياد كلاسمون هنگامي كه متد صدا زده ميشه خود به خود صدا زده ميشه.
    حال بزاريد با عبارت ديگري به اسم extends اشنا بشيم اين عبارت به اين معني ارث بردن است به اين مثال توجه كنيد :
    PHP:
     class first_class{
     var 
    $name "mehdi";
     function 
    first_class$n ) {
     
    $this->name $n;
     }
     function 
    sayHello(){
    print 
    "Hello my name is $this->name<br>";
    }
    }
     class 
    second_class extends first_class {
     }
     
    $test = new second_class("son of mehdi");
    $test->sayHello();
     
    // outputs "Hello my name is son of mehdi"
    همونطور كه ميبينيد ما كلاس دو رو تنظيم كرديم تا از كلاس يك ارث بري كنه وهمه متد هاي كلاس يك را خواهد داشت
    ما ميتونيم اينجا داخل كلاس دو يك تابع با اسم sayHello بسازيم و بگيم عبارت I dont know my name رو چاپ كنه در اينصورت اگه حتي در خط 12 ام ما يك عبارت براي تعويض اسم بديم تاثيري نميكنه و همون عبارت I dont know my name رو چاپ ميكنه راه ديگري هم هست و اون چاپ هردو كلاس باهم هست :
    PHP:
    class first_class {
     var 
    $name "harry";
     function 
    first_class$n ) {
     
    $this->name $n;
     }
     function 
    sayHello() {
    print 
    "Hello my name is $this->name<br>";
     }
     }
     class 
    second_class extends first_class  {
     function 
    sayHello() {
     print 
    "I'm not going to tell you my name -- ";
     
    first_class::sayHello();
     }
     }
     
    $test = new second_class("son of harry");
     
    $test->sayHello();
     
    // "I'm not going to tell you my name -- Hello my name is son of harry" چاپ ميكنه 
    همونطور كه ميبينيد دستور ( متد:: وارث ) ما ميتونيم هر متدي رو كه ما تغييرش داديم دوباره صدا بزنيم چون در كلاس دو ما متد sayHello رو تغيير داديم با اين دستور اونو دوباره برگردونديم .

    خوب اين درس هم تموم شد احتمالا بعضي اشكالات هم داره كه با كمك شما رفع ميشه درضمن من بسياري از مثال هاي خود كتاب رو نياوردم چون بسيار گيج كننده بود حتا خودمم بهشون نگاه نكردم
    -----------

    مهدی صفری
     
    reza10wert از این نوشته تشکر کرده است.
  2. siavashmusic

    siavashmusic Registered User

    تاریخ عضویت:
    ‏6 فوریه 2005
    نوشته ها:
    1,206
    تشکر شده:
    1
    محل سکونت:
    بندرانزلی
    آقا دستت درد نکنه هنوز نخوندم ولي حيفم اومد اولين نظر رو ندم کارت بيسته اي لواشک هلو سيب قرمز اي ماهي سفيد:D
     
  3. Romain_Gary

    Romain_Gary Registered User

    تاریخ عضویت:
    ‏23 فوریه 2005
    نوشته ها:
    1,711
    تشکر شده:
    5
    دستت درد نکنه خیلی مفید بید.
     
  4. Mehdi

    Mehdi مدیر بازنشسته

    تاریخ عضویت:
    ‏1 آگوست 2004
    نوشته ها:
    5,569
    تشکر شده:
    49
    محل سکونت:
    Anywhere
    بابا 20 نفر بازديد 2تا نظر ادم افسرده ميشه باور كنيد اين يكي از اون قبليه سخت تر بود نوشتنش رفته رفته هم سخت تر ميشه اين خاصيت انتشارات سمز هستش
    يخورده از خودتون نظر در وكنين جيگران
     
  5. amnhak

    amnhak Registered User

    تاریخ عضویت:
    ‏23 ژوئن 2005
    نوشته ها:
    866
    تشکر شده:
    0
    محل سکونت:
    www.freedanload.com
    مرسی از شما. واقعا کارت بیسته!
     
  6. mynobar

    mynobar Registered User

    تاریخ عضویت:
    ‏27 سپتامبر 2005
    نوشته ها:
    2,556
    تشکر شده:
    2
    امیدوارم دوستان حرفه ای پی اچ پی کار با سؤالات و مطالب خودشون بر غتای آموزش های شما بیفزایند ، حالا ما ( خودمو میگم) در ابتدای راهیم و بسی باید گرد کیبورد خوردن تا به پای شما رسیدن.
     
  7. appbannerkhuniresbanner
  8. mynobar

    mynobar Registered User

    تاریخ عضویت:
    ‏27 سپتامبر 2005
    نوشته ها:
    2,556
    تشکر شده:
    2
    در ضمن اگه mehdvirus بتونه مطالب مربوط به منابع و برنامه ها و کتابهای PHP رو هم اینجا بیاره خیلی خوب میشه و جمع و جور میشن ، حالا که خیلی پراکنده هستن.
     
  9. Mehdi

    Mehdi مدیر بازنشسته

    تاریخ عضویت:
    ‏1 آگوست 2004
    نوشته ها:
    5,569
    تشکر شده:
    49
    محل سکونت:
    Anywhere
    خيلي ممنون از نظرات:D
    منظورتو درست حسابي نفهميدم:blink: :D
     
  10. mynobar

    mynobar Registered User

    تاریخ عضویت:
    ‏27 سپتامبر 2005
    نوشته ها:
    2,556
    تشکر شده:
    2
    تو همین بخش طراحی صفحات داینامیک یه چند تا تاپیک پراکنده در مورد کتابها برنامه ها و منابع PHP هستش ، اونا رو میگم.
     
  11. Mehdi

    Mehdi مدیر بازنشسته

    تاریخ عضویت:
    ‏1 آگوست 2004
    نوشته ها:
    5,569
    تشکر شده:
    49
    محل سکونت:
    Anywhere
    اها اينجوري باشه من يه ليست از كتاباش دارم [​IMG]
     
  12. mynobar

    mynobar Registered User

    تاریخ عضویت:
    ‏27 سپتامبر 2005
    نوشته ها:
    2,556
    تشکر شده:
    2
    ممنون میشم اگه یه لیست از کتابهای منبع php رو که به زبان اصلی هستند ، همراه با لینک دانلودشان معرفی کنی ؛ منظور اصلی من هم تو پست قبلی ام این بود که با توجه به این که مدیر این بخش از فروم هستی ، میتونی اون تاپیک های گفته شده رو یکجا کنی و بیاری بذاری تو این بخش.
     
  13. TheMohammad

    TheMohammad Registered User

    تاریخ عضویت:
    ‏12 سپتامبر 2005
    نوشته ها:
    1,055
    تشکر شده:
    18
    محل سکونت:
    تهران
    آقا من هر جا کلمه var رو می بینم ، نمی دونم چرا می ترسم !!!
    هیچی نفهمیدم
     
  14. avajang.com .leftavajang.com.right
  15. Mehdi

    Mehdi مدیر بازنشسته

    تاریخ عضویت:
    ‏1 آگوست 2004
    نوشته ها:
    5,569
    تشکر شده:
    49
    محل سکونت:
    Anywhere
    مگه پاسكال رو نديدي همه متغير هاشو با اين تعريف ميكنه
    تازه برو از قسمت اول بخون بيا ميفهمي[​IMG]
    قسمت بعدي رو فردا ميزارم[​IMG]
     
  16. mynobar

    mynobar Registered User

    تاریخ عضویت:
    ‏27 سپتامبر 2005
    نوشته ها:
    2,556
    تشکر شده:
    2
    بازم ممنونیم.
     
  17. iransbs

    iransbs کاربر تازه وارد

    تاریخ عضویت:
    ‏3 می 2005
    نوشته ها:
    471
    تشکر شده:
    0
    محل سکونت:
    ایران، مازندارن، ساری
    دستت درد نکنه
    واقعا عالی کارت ادامه بدی عالی تر می شه
    لطفا curl , GD کامل آموزشش رو بنویس
    دستت درد نکنه
     
  18. shahi33

    shahi33 Registered User

    تاریخ عضویت:
    ‏3 جولای 2008
    نوشته ها:
    205
    تشکر شده:
    5
    محل سکونت:
    تهران
    آقا این فردای شما هنوز نرسیده:blink:
     
  19. sinads

    sinads کاربر تازه وارد

    تاریخ عضویت:
    ‏9 آپریل 2009
    نوشته ها:
    4
    تشکر شده:
    0
    salam . man ye sayt daram va tosh yeghesmat be esme sefaresh daram
    ke toosh ye forme sefareshe ke mishe print gereftesh
    hala man mikham in forme sefaresho vaghti dokmeye printesh ro mizanam ham print begire va ham ono ersal kone be emailam .
    age momkene komakam konid

    nemone
     
  20. sadegh62

    sadegh62 کاربر تازه وارد

    تاریخ عضویت:
    ‏9 ژانویه 2013
    نوشته ها:
    1
    تشکر شده:
    0
    کارتون عالی بود واقعا ممنون میشم اگه کلاسهای انتزاعی و اینترفیس ها رو هم توضیح بدین
     
  21. ice-popup

    ice-popup Registered User

    تاریخ عضویت:
    ‏18 فوریه 2014
    نوشته ها:
    505
    تشکر شده:
    146