El patrón Singleton se encarga de crear una sola instancia de un objeto al ser llamado, de este modo no tendremos más de una instancia generada y será accesible en toda nuestra aplicación.

En Phalconphp ya tenemos ese patrón implementado al momento de instanciar algún servicio determinado en el archivo services.php. Un ejemplo de ello sería la conexión a la bd, la cual no necesitamos instanciarla más de una vez, ya que no será cambiada en ningún momento.

$di->setShared('db', function () {
    $config = $this->getConfig();

    $class = 'Phalcon\Db\Adapter\Pdo\\' . $config->database->adapter;
    $params = [
        'host'     => $config->database->host,
        'username' => $config->database->username,
        'password' => $config->database->password,
        'dbname'   => $config->database->dbname,
        'charset'  => $config->database->charset
    ];

    if ($config->database->adapter == 'Postgresql') {
        unset($params['charset']);
    }

    $connection = new $class($params);

    return $connection;
});

Si solo utilizamos el método set, corremos el riesgo de que en alguna otra parte de nuestra aplicación instanciemos de nuevo la class, generando así varias instancias iguales y ocupando más espacio de memoria.

En este post de phalconphp forum, Dylan Anderson los explica con unos ejemplos.