2016-08-09 13 views
0

Ich arbeite in einer benutzerdefinierten Bibliothek für ein Projekt in CI3.1 (CodeIgniter 3.1) verwendet werden. Dies ist ein Stück Code:Wie überprüft man, ob die Standardkonfiguration in CI3 geladen wurde?

class NavigationMenu 
{ 
    protected $CI; 

    public function __construct($params = ['config' => 'navigation']) 
    { 
     $this->CI =& get_instance(); 
     $this->CI->load->helper('url'); 
     $this->CI->config->load($params['config'], true); 
     $this->CI->load->model('nav_model', 'nav'); 
    } 
    .... 
} 

Die Standard-config ‚navigation.php`-Datei den folgenden Code:

$config['navigation_open']   = '<ul class="nav">'; 
$config['navigation_close']   = '</ul>'; 
$config['item_open']    = '<li>'; 
$config['item_open_active_class'] = 'active'; 

Wie Sie mir das Laden der url Helfer sehen können, die navigation Konfigurationsdatei und das nav_model Modell. Gibt es eine Möglichkeit zu überprüfen, ob sie vorher geladen wurden? Könnte der Fall sein, wenn ich Zeit will und dann Setup der autoload.php wie folgt speichern:

$autoload['helper'] = ['url']; 
$autoload['config'] = ['navigation']; 
$autoload['model'] = ['nav_model']; 

Wenn das der Fall ist, wie kann ich überprüfen, ob geladen wurde versucht, um nicht noch einmal zu laden?

Ich habe Blick über die Dokumentation für config class und nichts nützlich finden konnten

+0

Sie können prüfen, ob der Artikel eingestellt ist. 'if (! isset ($ this-> config-> item ('item_open_active_class')) {$ this-> config-> load ('navigation');}' – Tpojka

Antwort

0

Sie können prüfen, ist jede Funktion von url Helfer zur Zeit zur Verfügung, so dass Sie der Lage zu verstehen, wurde geladen Helfer oder Sie selbst tun sollte:

if(!function_exists('site_url')) 
    $this->CI->load->helper('url'); 

es ist ein einfacher Trick, wenn Sie überprüfen müssen, ist wurde jeder Helfer geladen, aber es ist nicht ganz klar, wie config/Modell überprüfen geladen ist, so dass, wenn Sie wirklich Ihre erstellen möchten eigener Autoloader Sie müssen ähnliche Überprüfungen mit dem Core-Objekt durchführen ($this->CI):

if(!method_exists($this->CI,'nav')) 
    $this->CI->load->model('nav_model', 'nav'); 
Verwandte Themen