Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 4021364
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 20, 20262026-05-20T10:20:33+00:00 2026-05-20T10:20:33+00:00

I’ve got a PHP database class which connects to MySQL and wraps up all

  • 0

I’ve got a PHP database class which connects to MySQL and wraps up all the PDO code and I use it to query the database. Basically in the page controller I make a new object:

$db = new Database($dbConfig);

Then I can get data from the database like so using a prepared query:

$params = array('username' => $username);
$result = $db->preparedSelect('select password, salt from users where username = :username', $params);

Which copies the PDO statement results into a new assoc array and returns just the database results back to the calling page. I iterate through them with a simple foreach like so:

foreach ($result as $key => $val)
{
   $password = $val['password'];
   $salt = $val['salt'];
}

Ok so lets say I want another class to use my $db object so it can access the database in some of the methods. At the moment the other class looks like this:

class General
{
    // Database object
    private $db;

    public function __construct($db)
    {
        $this->db = $db;
    }
}

That works well but I’m just wondering if the constructor should look like this:

public function __construct(&$db)
{
    $this->db = $db;
}

That should mean I’m passing it in via reference and not copying the object into the other class. I don’t want a copy of the $db object inside the class, I want it to use the existing database object so I don’t have multiple copies of it floating around using up memory.

Is there any difference in PHP5 between passing it in as $db or &$db? From doing some reading, PHP5 by default passes objects by reference, and other people saying it now does it the Java way and some say using the & makes a hard link whatever that is. I’m confused. What’s the best way to do it?

Many thanks!

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-20T10:20:34+00:00Added an answer on May 20, 2026 at 10:20 am

    There is a difference, but it’s not really the difference you may think.

    In PHP5, “$db” holding an object is basically equivalent to a “Foo *” in C or C++. In other words, $db doesn’t store the whole object, it just stores a small token that lets the code find the object when necessary. When you pass this token by value, it’s as fast as passing an integer value rather than a copy of the entire object. But if you assign $db, it doesn’t change the value in the caller because you’re changing your local variable holding the token to contain a different token.

    If the function takes “&$db”, that’s basically the equivalent of passing “Foo **” in C, or more correctly a function taking a “Foo *&” in C++. The call is just as fast since it’s the same size thing that’s being passed, but inside the function if you assign to $db it will change the value of $db in the caller because the “pass by reference” variable points you to the memory location holding the token in the caller.

    The best way to do it is to pass by value (do not use “&”) unless you know what you’re doing and why you’re doing it.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I want to count how many characters a certain string has in PHP, but
i got an object with contents of html markup in it, for example: string
I've got a string that has curly quotes in it. I'd like to replace
link Im having trouble converting the html entites into html characters, (&# 8217;) i
this is what i have right now Drawing an RSS feed into the php,
I have just tried to save a simple *.rtf file with some websites and
I have a JSP page retrieving data and when single or double quotes are
Seemingly simple, but I cannot find anything relevant on the web. What is the
Does anyone know how can I replace this 2 symbol below from the string
I'm trying to decode HTML entries from here NYTimes.com and I cannot figure out

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.