title: public function returns NULL instead of array
body: <p>I am trying to write a thin wrapper around pdo mysql, but I am running into an issue where a public function is returning null instead of the expected array of associative arrays. Is this a problem with pass by value/reference? My initial thought was this was a reference or public issue, but the trivial example works.</p>
  
  <pre><code>&lt;?php
  class PDOMysqlAdapter {
    public $db;
    public $result;
    public $test = array(1,2);
  
    public function get(){
      return $this-&gt;test;
    }
  
    public function __construct($host, $port, $dbname, $username, $password, $charset = "utf8") {
      $this-&gt;db = new PDO(
        "mysql:host={$host};port={$port};dbname={$dbname};charset={$charset}",
        $username,
        $password
      );
      $this-&gt;db-&gt;setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    }
  
    public function singleton($sql, $debug = false) {
      if($debug) { error_log("Executing:\n\n{$sql}\n"); }
  
      try {
        $this-&gt;result = $this-&gt;db-&gt;query($sql)-&gt;fetch(PDO::FETCH_ASSOC);
        if($debug) { error_log(print_r($this-&gt;result, true)); }
        return $this-&gt;result;
      } catch(PDOException $ex) {
        error_log($ex-&gt;getMessage()."\n");
        return NULL;
      }
    }
  
    public function multiple($sql, $debug = false) {
      if($debug) { error_log("Executing:\n\n{$sql}\n"); }
  
      try {
        $this-&gt;result = $this-&gt;db-&gt;query($sql)-&gt;fetchAll(PDO::FETCH_ASSOC);
        if($debug) { error_log(print_r($this-&gt;result, true)); }
        error_log(count($this-&gt;result));
        return $this-&gt;result;
      } catch(PDOException $ex) {
        error_log($ex-&gt;getMessage()."\n");
        return NULL;
      }
    }
  }
  
  $db = new PDOMysqlAdapter(DB_SERVER, DB_PORT, DB_NAME, DB_USER, DB_PASS);
  
  error_log(print_r($db-&gt;get(), true)); // does what I think it should
  
  $result = $db-&gt;singleton("SELECT 1", true);
  error_log(print_r($result, true));  // return { '1' =&gt; '1' }
  
  $foo = $db-&gt;multiple("SELECT * FROM users LIMIT 2", true); // query returns without error and result exists within scope
  error_log(print_r($foo, true));  // null
  error_log(count($db-&gt;result));   // variable is public and full of expected contents
  </code></pre>
  
  <p>Why is $foo NULL here? <code>$db-&gt;result</code> contains the things that I expect to be returned into $foo.</p>