Re: OOP PHP with MySQLi
- From: Jerry Stuckle <jstucklex@xxxxxxxxxxxxx>
- Date: Tue, 31 Jan 2006 13:04:05 -0500
Erwin Moller wrote:
Citrus wrote:
Hey, i'm looking for the best possible way for connecting to my database without too much of an effort.
The example works fine and fast. What i need to know is if it's safe, stable and the way to go. If anyone has a better way for connecting side-wide to something i'd like you to show me. I've had it working before using 'global' but people told me 'global' is bad programming.
One of the possibilities would be to make the link and pass it on to every function and object but this is NOT an option because it makes my script less transparant and easy to read.
<?php
class My { private static $connection;
function SQL() { if(empty(self::$connection)) { self::$connection = new mysqli("localhost", "user", "password", "db"); } return self::$connection; } }
class User { function __construct() { echo "user init<p>"; }
public function show() { $query = My::SQL()->query("SELECT * FROM user"); while($row = $query->fetch_object()) { echo $row->login."<p>"; } } }
$user = new User(); $user->show();
//Works here too $query = My::SQL()->query("SELECT * FROM user"); while($row = $query->fetch_object()) { echo $row->login."<p>"; }
?>
What a lot of overhead and such. I am glad I just use global $connection; whereever I need it.
begining of every script that need a db: <? require_once('dnconnect.php'); ?>
then from a function: function leaveThingsSimple(){ global $connection; // do stuff here }
Bad programming?
Says who? And why?
Only use Objects if they add something to your code or structure somehow. (Like PEAR:DB) I really don't see the problem with making $connection global...
Regards, Erwin Moller
Yes, bad programming. It binds all of your code to the variable $connection, among other things. If you need to change that you have a huge amount of code to change. It also makes the code less portable. Also, if $connection gets changed someplace, you'll have a hell of a time trying to debug it.
Globals in general are bad ideas.
Citrus's design is much better. There is a little overhead - but not all that much.
And I find objects almost always improve the structure of my code. It also makes it more flexible and configurable. For instance - I can easily change databases simply by changing the database object. No changes in my code are necessary. Heck - I can even use flat files when necessary!
-- ================== Remove the "x" from my email address Jerry Stuckle JDS Computer Training Corp. jstucklex@xxxxxxxxxxxxx ================== .
- References:
- OOP PHP with MySQLi
- From: Citrus
- Re: OOP PHP with MySQLi
- From: Erwin Moller
- OOP PHP with MySQLi
- Prev by Date: Re: OOP PHP with MySQLi
- Next by Date: Re: Washington DC Job Opportunity
- Previous by thread: Re: OOP PHP with MySQLi
- Next by thread: Newbie Help - mkdir problem
- Index(es):
Relevant Pages
|