2010-05-12 10 views

Antwort

52

Ok, also läuft alles in CodeIgniter durch die super-magische $this Variable. Dies funktioniert nur für Klassen, da $this grundsätzlich die aktuelle Klasse definiert.

Ihr Controller ist eine Klasse, so $ dies ist, so dass Sie $this->load->model('whatever');

Bei den Modellen tun, werden Sie auch eine Klasse. Es ist hier etwas anders, da $this nur nützliche Dinge enthält, wie Sie von Model. Immer noch ist $this noch gültig.

Wenn Sie einen Helfer oder eine Bibliothek verwenden, müssen Sie diese "Instanz" oder $this Entsprechung finden.

$ci =& get_instance(); 

... macht $ci genau das gleiche Material/code/Nützlichkeit als $this enthalten, auch wenn Sie nicht in einer Klasse sind, oder nicht in einer Klasse, die es erbt.

Das ist eine Erklärung für totale Anfänger nach 2 Pints, also ist es entweder falsch oder ungefähr richtig. ;-)

+2

2 Pints, was? Was ist dann die Nützlichkeit einer Bibliothek/eines Helfers? Warum nicht einfach Modelle benutzen? –

+2

Natürlich, da alles eine PHP-Klasse ist, können Sie, was auch immer Sie möchten, beliebig platzieren. Im Allgemeinen wird in CodeIgniter als "Datenbankinteraktion/Geschäftslogik" = Modelle, einfache Funktionen in Helfer und allgemeine Klassen in Bibliotheken unterteilt. –

10

Es ist eine Implementierung der singleton pattern. Im Wesentlichen gibt es nur eine Instanz der betreffenden Klasse, die global zugänglich ist. Die Methode get_instance ist statisch und bietet so eine Möglichkeit, von überall im Code auf die Instanz zuzugreifen.

+1

Nicht noobish genug. Ich bin ein SUPER NOOB! :) –

+5

@Kevin: In diesem Fall empfehle ich Sie lesen über objektorientierte Programmierung (OOP) vor dem Eintauchen in ein Framework, das darauf beruht! –

+2

Wird, Will !! –

Verwandte Themen