/
  • این رجیستری چه طوره ؟

  • صفحه‌ها (2):
  • ارسال پاسخ   امتیاز موضوع:
    • 0 رأی - میانگین امیتازات: 0
    • 1
    • 2
    • 3
    • 4
    • 5

    حالت موضوعی | حالت خطی این رجیستری چه طوره ؟
    نویسنده پیام
    Reza آفلاین
    رضا شیخله
    *****

    ارسال‌ها: 3,024
    تاریخ عضویت: ۱۳۹۰ آبان ۱۶
    اعتبار: 133
    تشکرها : 2724
    ( 2715 تشکر در 1691 ارسال )
    ارسال: #1
    این رجیستری چه طوره ؟
    تغییرات جدید

    رجیستری
    کد PHP:
    <?php
    ## location ./registry.php

    final class regi{

        private 
    $registry = array();
        private static 
    $instance null;
        
        public static function 
    stry()
        {
            if(
    is_null(self::$instance))
            {
                
    self::$instance = new regi;
            }
            return 
    self::$instance;
        }
        
        public function 
    __set($var$parm)
        {
            if(isset(
    $this->registry[$var]))
                echo 
    "$var was setted";
            else
                
    $this->registry[$var] = $parm;
        }
        
        public function 
    __get($var)
        {
            return 
    $this->registry[$var]; 
        }
        
        public  static function 
    ster($var NULL)
        {
            if( ! 
    is_null($var))
            {
                if(
    is_object($var))
                    
    regi::stry()->{get_class($var)} = $var;
                else
                    
    regi::stry()->{$var} = new $var();
            }
        }
        
    }


    interface 
    registry
    {
        public static function 
    register();
    }

    function 
    __autoload($class_name
    {
        require_once 
    dirname(__FILE__).'/classes/'.$class_name '.php';



    تست2 (کلاس هسته که شامل اعمال تنظیمات قبل از گرفتن آبجکت میشود مثل دیتابیس یا لاگ ارور)
    کد PHP:
    <?php
    ## location : classes/test2.php

    class test2 implements registry{

        public 
    $num '123';
        
        
        
    // اعمال تنظيمات ، گرفتن يک آبجکت
        
    static public function register()
        {
            
    $obj = new test2;
            
    $obj->num 45;
            
            
    regi::ster($obj);
        }
        
        function 
    name()
        {
            return 
    'reza';
        }




    تست (کلاسهای شوت Big Grin مثلاً یه هلپر فایل و ...)
    کد PHP:
    <?php
    ## location : classes/test.php

    class test{
        
        
        function 
    sum($x,$y)
        {
            return 
    $x $y ;
        }



    استفاده
    کد PHP:
    <?php
    ## location : ./index.php

    include './registry.php';


    // کلاس غیر از هسته
    regi::ster('test');

    // کلاس هسته
    test2::register();

    echo 
    regi::stry()->test->sum(1,8);
    echo 
    regi::stry()->test2->name();
    echo 
    regi::stry()->test2->num;

    //print_r(regi::stry()); 

    ابهامی هست بگید .
    __________________________________________________________________________
    -- - RezaWorkShop.ir - blog.RezaOnline.net
    (آخرین ویرایش در این ارسال: ۱۳۹۱ آبان ۱ ۰۴:۱۲ عصر، توسط Reza.)
    ۱۳۹۱ آبان ۱ ۰۳:۴۰ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط : undefined webnevesht ali786
    Reza آفلاین
    رضا شیخله
    *****

    ارسال‌ها: 3,024
    تاریخ عضویت: ۱۳۹۰ آبان ۱۶
    اعتبار: 133
    تشکرها : 2724
    ( 2715 تشکر در 1691 ارسال )
    ارسال: #2
    RE: این رجیستری چه طوره ؟
    نقل قول: تشکر شده توسط : Ehsan webnevesht ali786
    بابا دارم یه کلاس رجیستری مینویسم برای سیستم .
    یه نظر بدید ، تشکر میخوام چیکار .Dodgy
    __________________________________________________________________________
    -- - RezaWorkShop.ir - blog.RezaOnline.net
    ۱۳۹۱ آبان ۱ ۱۱:۰۸ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط :
    undefined غایب
    احسان
    *******

    ارسال‌ها: 2,088
    تاریخ عضویت: ۱۳۸۸ مهر ۲۹
    اعتبار: 76
    تشکرها : 2005
    ( 2071 تشکر در 1219 ارسال )
    ارسال: #3
    RE: این رجیستری چه طوره ؟
    به کلاس رجیستری راسپینا یه نگاهی بنداز، کار یوشاست.

    کد:
    https://gitorious.org/raspina/raspina/blobs/master/library/Raspina/Registry/Registry.php
    __________________________________________________________________________
    هر چیزی که در جستن آنی آنی...
    (آخرین ویرایش در این ارسال: ۱۳۹۱ آبان ۱ ۱۱:۱۷ عصر، توسط undefined.)
    ۱۳۹۱ آبان ۱ ۱۱:۱۴ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط :
    Reza آفلاین
    رضا شیخله
    *****

    ارسال‌ها: 3,024
    تاریخ عضویت: ۱۳۹۰ آبان ۱۶
    اعتبار: 133
    تشکرها : 2724
    ( 2715 تشکر در 1691 ارسال )
    ارسال: #4
    RE: این رجیستری چه طوره ؟
    بذارش اینجا .
    __________________________________________________________________________
    -- - RezaWorkShop.ir - blog.RezaOnline.net
    ۱۳۹۱ آبان ۱ ۱۱:۱۵ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط :
    undefined غایب
    احسان
    *******

    ارسال‌ها: 2,088
    تاریخ عضویت: ۱۳۸۸ مهر ۲۹
    اعتبار: 76
    تشکرها : 2005
    ( 2071 تشکر در 1219 ارسال )
    ارسال: #5
    RE: این رجیستری چه طوره ؟
    کد PHP:
    final class registry
    {
        protected 
    $registry NULL;

        public function 
    __call($method$arguments)
        {
            return 
    call_user_func_array(array($this->registry$method), $arguments);
        }

        
    # public function __construct($array = array(), $flags = parent::ARRAY_AS_PROPS)
        
    public function __construct($array = array())
        {
            
    # parent::__construct($array, $flags);
            # return;
        
    }

        public function 
    __destruct()
        {
            unset(
    $this->registry);
            return;
        }

        public function 
    reset()
        {
            
    $this->registry = array();
        }

        public function 
    add($name$value)
        {
            
    $this->registry[$name] = $value;
            return;
        }

        public function 
    addMultiple($input = array())
        {
            if(
    is_array($input) || is_object($input))
            {
                foreach(
    $input as $key=>$value)
                {
                    
    $this->add($key$value);
                }
            }

            return;
        }

        public function 
    addDefault($name$defaultValue NULL)
        {
            return 
    $this->add($name$this->get($name$defaultValue));
        }

        public function 
    remove($name)
        {
            unset(
    $this->registry[$name]);
            return;
        }

        public function 
    removeMultiple($input NULL)
        {
            if(
    is_array($input) || is_object($input))
            {
                foreach(
    $input as $value)
                {
                    
    $this->remove($value);
                }
                return;
            }

            return 
    FALSE;
        }

        public function 
    exists($name)
        {
            return isset(
    $this->registry[$name]);
        }

        public function 
    existsInArray($object$name)
        {
            if(
    $this->exists($name) && @in_array($object$this->registry[$name]))
            {
                return 
    TRUE;
            }

            return 
    FALSE;
        }

        public function 
    get($name)
        {
            if(
    array_key_exists($name$this->registry))
            {
                return 
    $this->registry[$name];
            }

            return 
    NULL;
        }

        public function 
    getClass()
        {
            return 
    get_class($this->registry);
        }

        public function 
    toString()
        {
            return (string)
    get_class($this);
        }

        public function 
    toArray()
        {
            return (array)
    $this->registry;
        }

        public function 
    toObject()
        {
            return (object)
    $this->registry;
        }

    __________________________________________________________________________
    هر چیزی که در جستن آنی آنی...
    ۱۳۹۱ آبان ۱ ۱۱:۲۷ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط : Reza
    Reza آفلاین
    رضا شیخله
    *****

    ارسال‌ها: 3,024
    تاریخ عضویت: ۱۳۹۰ آبان ۱۶
    اعتبار: 133
    تشکرها : 2724
    ( 2715 تشکر در 1691 ارسال )
    ارسال: #6
    RE: این رجیستری چه طوره ؟
    Cool
    اینو ول کن ، روی اون چیزی که من نوشتم نظر بده Tongue
    __________________________________________________________________________
    -- - RezaWorkShop.ir - blog.RezaOnline.net
    ۱۳۹۱ آبان ۱ ۱۱:۳۴ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط :
    undefined غایب
    احسان
    *******

    ارسال‌ها: 2,088
    تاریخ عضویت: ۱۳۸۸ مهر ۲۹
    اعتبار: 76
    تشکرها : 2005
    ( 2071 تشکر در 1219 ارسال )
    ارسال: #7
    RE: این رجیستری چه طوره ؟
    چشم Wink
    اما یه مقدار صبر کن. شرمنده Blush
    __________________________________________________________________________
    هر چیزی که در جستن آنی آنی...
    ۱۳۹۱ آبان ۱ ۱۱:۴۵ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط : Reza
    webnevesht آفلاین
    محمدرضا سلطانی
    ***

    ارسال‌ها: 972
    تاریخ عضویت: ۱۳۹۰ آذر ۲۵
    اعتبار: 22
    تشکرها : 384
    ( 702 تشکر در 427 ارسال )
    ارسال: #8
    RE: این رجیستری چه طوره ؟
    میشه توضیح بدی این کد چیکار میکنه؟ من ِ آماتور سر در نمیارم آخهBig Grin
    __________________________________________________________________________
    بنده طعم ايمان را نمي چشد، تا اينكه دريابد آنچه اتفاق نيفتاده است نمي شد كه اتفاق بيفتد؛و آنچه شده و اتفاق افتاده است,نمي شد كه نشود و اتفاق نيفتد....حضرت علي(ع)
    ۱۳۹۱ آبان ۲ ۱۰:۴۵ صبح
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط :
    Reza آفلاین
    رضا شیخله
    *****

    ارسال‌ها: 3,024
    تاریخ عضویت: ۱۳۹۰ آبان ۱۶
    اعتبار: 133
    تشکرها : 2724
    ( 2715 تشکر در 1691 ارسال )
    ارسال: #9
    RE: این رجیستری چه طوره ؟
    دارم یه سیستم رو از بیس مینویسم .
    کلاس رجیستری ، یک کلاس که وظیفه اش اینه توی سرتاسر اسکرپیت دست به دست میچرخه و آبجکت هایی رو که میگیری نگه داری میکنه .
    یه مثال ساده اش ، فرض کن توی اسکریپت ، کنترلرها و مدل ها مختلفی داری .
    ممکنه یه کنترلر از یک مدل استفاده کنه ، و یکی دیگه از سه تا مدل .
    توی تموم اینها تو به دیتابیس احتیاج داری ، اگه قبل از فراخوانی تموم اینها ، آبجکت دیتابیس رو رجیستری گرفته باشه ، توی تموم اینها استفاده میشه ، در غیر اینصورت باید توی هر کدم از اینها یک بار آبجکت بگیری ، که مثلاً توی 10 تا اینکلود ، میشه 10 تا آبجکت Tongue
    این کلاس رجیستری من یه خورده بهش آب و تاب دادم .
    مثلاً هر جا بخوای از دیتابیس استفاده کنی ، مینویسی
    کد PHP:
    db::register(); 
    سپس بقیه کارها رو انجام میدید .
    کد PHP:
    regi::stry()->db->query("SELECT * FROM POST");

    $result regi::stry()->db->select('*')->from('post')->result(); 

    دیگه خودش چک میکنه که قبلاً آبجکت گرفته شده یا نه .

    خوبیهای دیگه ام داره .
    دیگه نمیخواد هی include کنی و ...
    مثلاً فایل کلاس mail رو میذاری توی پوشه classes و از این ور
    کد PHP:
    regi::ster('mail');
    regi::stry()->mail->sendmail('some things'); 

    خوبیهای دیگه ای هم داره
    هر جای اسکریپت برای دیباگ میتونی ببینی چه کلاسهایی لود شده و استفاده میشه .
    ممکنه بعضی جاها کلاس اضافه ای استفاده بشه که میتونی حذفش کنی و ...

    البته هنوز تکمیلش نکردم کامل (منتظر نظر دوستان هستم ببینم در کل نظرشون چیه ! )
    __________________________________________________________________________
    -- - RezaWorkShop.ir - blog.RezaOnline.net
    ۱۳۹۱ آبان ۲ ۰۱:۵۴ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط : webnevesht undefined
    webnevesht آفلاین
    محمدرضا سلطانی
    ***

    ارسال‌ها: 972
    تاریخ عضویت: ۱۳۹۰ آذر ۲۵
    اعتبار: 22
    تشکرها : 384
    ( 702 تشکر در 427 ارسال )
    ارسال: #10
    RE: این رجیستری چه طوره ؟
    خیلی عالیه...دوست دارم یاد بگیرم و بیشتر بدونمBlush
    __________________________________________________________________________
    بنده طعم ايمان را نمي چشد، تا اينكه دريابد آنچه اتفاق نيفتاده است نمي شد كه اتفاق بيفتد؛و آنچه شده و اتفاق افتاده است,نمي شد كه نشود و اتفاق نيفتد....حضرت علي(ع)
    ۱۳۹۱ آبان ۲ ۰۵:۲۷ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط :
    « قدیمی تر | تازه‌ تر »

  • صفحه‌ها (2):
  • ارسال پاسخ
    پرش به انجمن:


    کاربرانِ درحال بازدید از این موضوع: 1 مهمان
    IranPHP.org | تماس با ما | بازگشت به بالا | بازگشت به محتوا | بایگانی | پیوند سایتی RSS