CodeIgniter: Kancalar (pre_controller) yükleme yardımcıları

2 Cevap php

Bizim sitede bir 'beni hatırla' işlevi için benim pre_controller askısına çerez bir yardımcı yüklemeye çalışıyorum. Ben $ ci ile CI nesnesinin bir örneğini oluşturarak düşündüm = & get_instance (); Bana yükleme yardımcıları erişmek için ama bu böyle değil sağlayacak.

Düşünceler?

 $ci =& get_instance();
 $ci->load->helper('cookie');
 // does not load

2 Cevap

pre_controller kanca süper nesne tamamen inşa edilmiştir önce yürütür, böylece get_instance() çalışamaz - statik bir nesne henüz başlatılmamış bir başvuru döndürür.

Yerine post_controller_constructor kanca kullanarak düşünün; Lütfen kontrolörün yapıcı idam olacak, ve CI süper nesne kullanıma hazır olacaktır.

Post_controller_constructor ile sorun kurucudan sonra çalışır (tuhaftır) ve pek çok şey için Kontrolör kurucular kullanırsanız bu bir sorun olabiliyor.

Bu sizin için bir sorun değil ise iki çözüm var bir sorun olup olmadığını, yeterince adil (yardımcınız alışkanlık çalıştırmak veya kurucular yüklü hiçbir şeyi etkilemez).

  1. Kanca MY_Controller kodunuzu koymak yerine
  2. MY_Controller oluşturmak ve özel bir kanca noktası ekleyin.

    class MY_Controller extends Controller
    {
    
        function MY_Controller()
        {
            parent::Controller();
            $GLOBALS['EXT']->_call_hook('pre_controller_constructor');
        } 
    }