A melhor maneira de compartilhar conexão de banco de dados entre classes

Gostaria de poder ocultar minha conexão com o banco de dados do print_r, por isso estou usando uma variável estática. Eu tenho uma classe base e algumas classes de objetos. Idealmente, todos compartilhariam a mesma conexão com o banco de dados. Qual é a melhor maneira de compartilhar isso? A maneira como eu o configurei agora "funciona", mas simplesmente não parece certo. Deve ser uma maneira melhor de fazer isso. (logicamente as classes não devem se herdar)

class base {

  private static $db;

  function __construct() {

    self::$db = new DB(); // our database class
    $foo = new Foo( self::$db ); // some other class that needs the same connection

  }

}

class Foo {

  private static $db;

  function __construct( $db ) {
    self::$db = $db;
  }

}

questionAnswers(1)

yourAnswerToTheQuestion