CodeIgniter Forums
How do I get access to the DB-object outside CI? - Printable Version

+- CodeIgniter Forums (https://forum.codeigniter.com)
+-- Forum: Archived Discussions (https://forum.codeigniter.com/forumdisplay.php?fid=20)
+--- Forum: Archived General Discussion (https://forum.codeigniter.com/forumdisplay.php?fid=21)
+--- Thread: How do I get access to the DB-object outside CI? (/showthread.php?tid=24178)



How do I get access to the DB-object outside CI? - El Forum - 11-02-2009

[eluser]christian studer[/eluser]
Hello,

Is there any way to get to the database object before CI is initialised?

In my case: I'm trying to log a cache hit to the database in the output class.

Any idea?

(get_instance() is not yet available).

christian


How do I get access to the DB-object outside CI? - El Forum - 11-02-2009

[eluser]BrianDHall[/eluser]
You could perhaps try include() on db.php in the CI library and attempting to instantiate your own DB object, its the only way I could imagine you could do it.

Rather than do all that, why not use a pre_controller hook? I think the db is available there...


How do I get access to the DB-object outside CI? - El Forum - 11-02-2009

[eluser]Phil Sturgeon[/eluser]
DB is not available in pre_conroller and post_controller_constructor is too late. This is why I have been banging on about mid_controller_constructor.

To get the same effect as my crazy hook point you can use MY_Controller.php constructor to log this.

Other than that, you will NOT have much joy trying to run the DB class early, and will need to include the db config and use native MySQL functions.


How do I get access to the DB-object outside CI? - El Forum - 11-02-2009

[eluser]BrianDHall[/eluser]
[quote author="Phil Sturgeon" date="1257199600"]DB is not available in pre_controller and post_controller_constructor is too late. This is why I have been banging on about mid_controller_constructor.

To get the same effect as my crazy hook point you can use MY_Controller.php constructor to log this.

Other than that, you will NOT have much joy trying to run the DB class early, and will need to include the db config and use native MySQL functions.[/quote]

Hmf, I would have thought it have been available by then.

I see what you mean, now I agree there should be a pre_constroller_constructor, but I think I understand why there isn't - if the constroller is initiated, is there really anywhere to load the hook?

Ooo, thinking outloud here, how about the Controller class constructor - in our own constructors most of us call the parent controller as the first line of the constructor, so that is the perfect place to put a hook I would think - as the last line of the controller class constructor?

But yeah, it seems MY_Controller would be the best, or just deal without having access to the DB object.


How do I get access to the DB-object outside CI? - El Forum - 11-02-2009

[eluser]Phil Sturgeon[/eluser]
Keep up dude :-p


How do I get access to the DB-object outside CI? - El Forum - 11-02-2009

[eluser]BrianDHall[/eluser]
[quote author="Phil Sturgeon" date="1257218215"]Keep up dude :-p[/quote]

Tongue

Seconded Wink


How do I get access to the DB-object outside CI? - El Forum - 11-03-2009

[eluser]christian studer[/eluser]
Thanks everyone for the help, the following piece of code did it:
Code:
require_once BASEPATH.'database/DB'.EXT;
$db = DB();

Just as a side note: Controller hooks did not apply in this case as I was trying to access the DB from within the caching methods in the Output class. No controller is anywhere close to being constructed at that moment...


How do I get access to the DB-object outside CI? - El Forum - 11-03-2009

[eluser]Phil Sturgeon[/eluser]
[quote author="christian studer" date="1257262703"]Thanks everyone for the help, the following piece of code did it:
Code:
require_once BASEPATH.'database/DB'.EXT;
$db = DB();
[/quote]

Ha! Nice hack. I'll be using that.


How do I get access to the DB-object outside CI? - El Forum - 11-03-2009

[eluser]christian studer[/eluser]
Yeah, that's actually easier than I thought. I was afraid that I would have to instanciate a whole CI-object.

(Credit for this goes to wiredesignz over here.)