آموزش برنامه نویسی Oop

شروع موضوع توسط hidensoft ‏28 اکتبر 2007 در انجمن مقالات و آموزش‌ها

  1. justpersian

    justpersian Member

    ارسال‌ها:
    162
    تشکر شده:
    96
    امتیاز دستاورد:
    16
    با این توابع جادویی میشه به توابع سایر کلاس ها دسترسی پیدا کرد ؟
    برای دسترسی هم باید رجیستر بشن دیگه ؟
     
    نوشته شده توسط justpersian در ‏18 می 2009
  2. yakoza

    yakoza Well-Known Member

    ارسال‌ها:
    742
    تشکر شده:
    381
    امتیاز دستاورد:
    63
    به توابع (متدها) کاری نداره میشه به پروپرتیهای کلاس دسترسی داشت

    PHP:
    برای دسترسی هم باید رجیستر بشن دیگه ؟
    یعنی چی ؟ متوجه نشدم
     
    نوشته شده توسط yakoza در ‏18 می 2009
    bono056 از این پست تشکر کرده است.
  3. justpersian

    justpersian Member

    ارسال‌ها:
    162
    تشکر شده:
    96
    امتیاز دستاورد:
    16
    من از این روش قبلا تو یکی از کارام استفاده کرده بودم
    برای دسترسی به بقیه کلاس ها ، توابع و متغیرهاشون
    یه نمونه که الان نوشتم به این صورته :
    PHP:
    <?php
    class base {
        protected $vars = array();
       
        function __set($index, $value){
            $this->vars[$index] = $value;
        }
       
        function __get($index){
            return $this->vars[$index];
        }
    }


    class test1 {
        private $registry;
       
        function __construct($registry){
            $this->registry = $registry;
        }
       
        function print1(){
            echo 'Test1';
        }
    }


    class test2 {
        private $registry;
       
        function __construct($registry){
            $this->registry = $registry;
        }
       
        function print2(){
            echo 'Test2';
        }
    }

    $base = new base();
    $base->test1 = new test1($base);
    $base->test2 = new test2($base);
    $base->test1->print1();
    $base->test2->print2();
    ?>
    البته این خیلی ساده هست
    اما وقتی تو MVC بخوایم توسط loader فایل ها رو از view لود کنیم این روش اونجا خیلی به کار میاد و کنترل برنامه رو خیلی بالا می بره
     
    آخرین ویرایش: ‏18 می 2009
    نوشته شده توسط justpersian در ‏18 می 2009
    bono056 از این پست تشکر کرده است.
  4. yakoza

    yakoza Well-Known Member

    ارسال‌ها:
    742
    تشکر شده:
    381
    امتیاز دستاورد:
    63
    دقیقا درسته
    اگه بتونم یه آموزش در همین رابطه تو وبلاگم میزارم
     
    نوشته شده توسط yakoza در ‏18 می 2009
    justpersian از این پست تشکر کرده است.
  5. yakoza

    yakoza Well-Known Member

    ارسال‌ها:
    742
    تشکر شده:
    381
    امتیاز دستاورد:
    63
    دقیقا درسته
    اگه بتونم یه آموزش در همین رابطه تو وبلاگم میزارم
     
    نوشته شده توسط yakoza در ‏18 می 2009
    justpersian از این پست تشکر کرده است.
  6. bono056

    bono056 Member

    ارسال‌ها:
    247
    تشکر شده:
    9
    امتیاز دستاورد:
    16
    ن
     
    نوشته شده توسط bono056 در ‏10 ژوئن 2009
  7. hidensoft

    hidensoft Member

    ارسال‌ها:
    604
    تشکر شده:
    378
    امتیاز دستاورد:
    16
    Magic Methods قسمت اول

    سلام دوستان.
    مدتی هست که من در حال خدمت هستم و متاسفانه از بحث برنامه نویسی به شدت دور شدم و اطلاعاتم از همون چیزی که دوسال پیش بود فقط کمی بیشتر شده.
    از تمامی دوستانی که در این مدت به پیشرفت آموزش کمک کردن ممونم خصوصا ناصر جان.

    بریم سر اصل مطلب

    راستیتش چند رو زی هست که در حال نوشتن CMS اختصاصی خودم هستم و به شدت غرق در برنامه نویسی OOP شدم.
    از اونجایی که دیدم بحث در رابطه با متود های جادویی هم تا جای خوبی رسیده گفتم خوبه اگه از ابتدا شروع به آموزش متود های جادویی کنیم.

    کلیه متود های جادویی PHP اینها هستن.
    PHP:

    __construct
     __destruct
     __call
     __callStatic
     __get
    __set
     __isset
     __unset
     __sleep
     __wakeup
     __toString
     __invoke
     __set_state
     __clone
     
    در ابتدا خودم construct و destruct رو بطور کامل توضیح دادم. توی تاپیک ها دیدم دوستان زحمت get و set رو هم کشیدن که بازم ازشون تشکر می کنم. حالا شروع می کنم به توضیح دادن یکی این متود های جادویی

    toString

    همونطور که مشخص هست متود toString برای گرفتن خروجی بصورت رشته یا همون متن هست.
    کارش سادست و فکر نمی کنم زیاد جای بحث داشته باشه.
    یه مثال می زنم.

    PHP:
    <?php

    class TestClass
    {
        public $foo;

        public function __construct($foo) {
            $this->foo = $foo;
        }

        public function __toString() {
            return $this->foo;
        }
    }

    $class = new TestClass('Hello');
    echo $class;
    ?>
    خروجی
    کد (Text):
    Hello
     
    توضیحات خطی
    PHP:
    class TestClass
    کلاسی با نام TestClass شاخته می شه
    PHP:
      public $foo;
    متغیر foo$ بصورت public تعریف می شه. ** قبلا دوستان در مورد public و private و ... توضیحات لازم رو دادن.
    PHP:
      public function __construct($foo) {
            $this->foo = $foo;
        }
    همونطور که گفته شد متود سازنده (construct) بعد از ارجاء متغیر به کلاس به صورت خود کار اجرا می شه و تمامی آرگمانهای این متود رو شما هنگام ساخت باید به کلاس بدید.
    متغیر foo$ رو مساوی با مقدار آرگمان foo$ این تابع قرار می ده. سعی کنید هم نام بودن توابع شما رو گول نزنه. توجه کنید که متغیر های داخل توابع اگر که هم نام با متغیر های کلاس باشند به هیج وجه با هم مرتبت نیستند.
    PHP:
    public function __toString() {
            return $this->foo;
        }
    اینجا با متود جادویی toString تعریف می کنیم که در صورت که خروجی متنی درخواست بشه محتوای foo$ این کلاس به خروجی بره.
    PHP:
    $class = new TestClass('Hello');
    شعی class$ به کلاس TestClass ارجاء داده می شه و آرگمان اول هم رشته "Hello" مقدار دهی میشه.
    PHP:
    echo $class;
    به خط بالا دقت کنید. از شعی class$ در خوست خروجی متنی می شه. در واقع PHP با رسیدن به این دستور تابع toString کلاس رو فراخوانی می کنه.
    PHP:
    echo $class->__toString();
    در نهایت "Hello" برای خرجی فرستاده می شه و چاپ می شه. البته این توضیح رو هم اضافه می کنم که شما نباید حتما از دستور echo استفاده کنید تا این متود اجرا بشه بلکه می تونید به یک متغیر هم ارجاء بدید. به عنوان مثال
    PHP:
    $myVar =  $class;
    در واقع هرگاه در خواست خروجی به سورت مستیقیم از شعی ارجاء داده شده بشه این تابع اجرا می شه.

    امید وارم مورد استفاده قرار بگیره.

    موفق باشید.
     
    نوشته شده توسط hidensoft در ‏20 آگوست 2009
    RainDigital، k2-4u و justpersian از این ارسال تشکر کرده اند.
  8. k2-4u

    k2-4u Active Member

    ارسال‌ها:
    1,311
    تشکر شده:
    1,259
    امتیاز دستاورد:
    36
    Static در php 5.30

    سلام به همه دوستان در php 5.30 که تازه منتشر شده
    چند تا امکانات برای method ها و property های Static
    اضافه شده (در بهینه سازی بسیار موثر است )

    همون طور که میدانید تعریف Static ها به صورت زیر است
    PHP:

    class ClassName{
        static $StaticProperty='value';
       
        static function StaticMethod(){
       
        }
    }
     
    در حالت قبل برای دسترسی به Static ها به صورت زیر عمل می کردیم
    PHP:

    class ClassName{
        ......
        function test(){
            self::StaticMethod();
            self::StaticProperty;
        }
    }
     
    ولی در php 5.30 به صورت زیر است که حتما باید رعایت شود .
    PHP:

    class ClassName{
        ......
        function test(){
            static::StaticMethod();
            static::StaticProperty;
        }
    }
     
    در مثال بالا بجای کلید Self از کلید جدید Static استفاده شده است


    یکی دیگر از قابلیت های جدید php 5.30 این است که می توانید
    به شکل زیر به یک method/property از نوع static در خارج از کلاس
    دسترسی داشته باشید 
    PHP:

    class ClassName{
        static $Property;

        static function StaticMethod(){
        }
    }

    ClassName::StaticMethod();
    ClassName::Property;
     
    همان طور که می بینید با استفاده از نام کلاس
    و اپراتور :: فراخوانی انجام می شود

    دوستان این روش ها رو به عنوان جایگزین روش های قبل php برای static ها در نظر بگیرید
    یک نکته دیگه که (آقای YPY در مقالات ."نکات اصولی برنامه نویسی.." بهش اشاره کردن "
    این است که متد های Static سرعت . بسیار بیشتری دارند
    و . اگر در class خود . method ی را تعریف کردید که . با اجزای دیگر کلاس در ارتباط نبود
    لازم و ضروری است که به صورت Static تعریف شود

    موفق باشید :rose:
     
    آخرین ویرایش: ‏20 آگوست 2009
    نوشته شده توسط k2-4u در ‏20 آگوست 2009
    RainDigital، Allahparast و hidensoft از این ارسال تشکر کرده اند.
  9. hidensoft

    hidensoft Member

    ارسال‌ها:
    604
    تشکر شده:
    378
    امتیاز دستاورد:
    16
    بسیار عالی بود.

    من شنیدم توی PHP 5.3 تغییرات زیادی اعمال شده. فکر می کنم جای بحث داره و می شه روش کار کرد. حتی می گن نسخه موجود cakephp روی این ورژن در حال حاضر نصب نمی شه و تغییرات زیادی توی oop داده شده.
     
    نوشته شده توسط hidensoft در ‏21 آگوست 2009
  10. k2-4u

    k2-4u Active Member

    ارسال‌ها:
    1,311
    تشکر شده:
    1,259
    امتیاز دستاورد:
    36
    آره . خیلی امکانات بهش اضافه شده
    اینجا یکم در موردش نوشتم
    http://forum.majidonline.com/showthread.php?t=124959

    خیلی از سیستم ها . هماهنگی نداشتن و به خاطر php 5.30
    update کردن .
    برنامه های هم مثل zend studio
    به دلیل اینکه چندین تا syntax و operator مهم( مثل namespace )اضافه شده .
    version جدید بیرون دادن . (که دیگه از بحث خارجه )
     
    نوشته شده توسط k2-4u در ‏21 آگوست 2009
  11. RainDigital

    RainDigital Member

    ارسال‌ها:
    729
    تشکر شده:
    238
    امتیاز دستاورد:
    16

    با عضویت در خبرنامه www.phpclasses.com کلاس های خوبی رو برای استفاده یا به عنوان نمونه برای آموزش می‌تونید پیدا کنید.

    کلمه static در کلاس ها چه معنی ای داره؟
    توی سی شارپ هم دیدم ولی درموردش تحقیق نکردم.
    بعضی تابعا باید می‌داشتن بعضی ها نباید بعضی هم بی تفاوت...
    من متوجه نشدم

    راستی:
    کد (Text):

    [RIGHT]
    ارجاع
    متد
    آرگومان
    مرتبط
    شیء
    به صورت مستقیم

    و...[/RIGHT]
     
    :there:
     
    نوشته شده توسط RainDigital در ‏19 ژوئن 2010
  12. hidensoft

    hidensoft Member

    ارسال‌ها:
    604
    تشکر شده:
    378
    امتیاز دستاورد:
    16
  13. raha2101

    raha2101 New Member

    ارسال‌ها:
    1
    تشکر شده:
    0
    امتیاز دستاورد:
    1

    دانلود رایگان مقالات علمی با موضوعات کاربردی و جالب در زمینه برنامه نویسی php
     
    نوشته شده توسط raha2101 در ‏4 دسامبر 2012
  14. mkxd771

    mkxd771 New Member

    ارسال‌ها:
    3
    تشکر شده:
    2
    امتیاز دستاورد:
    3
    نوشته شده توسط mkxd771 در ‏15 جولای 2014
    safir1987 از این پست تشکر کرده است.
  15. parto123

    parto123 Member

    ارسال‌ها:
    35
    تشکر شده:
    20
    امتیاز دستاورد:
    6

به اشتراک بگذارید