This is just a more readable way of how it was already in `Connection`:

    if ($logger) {
        $logger->startQuery('"START TRANSACTION"');
    }
    $this->_conn->beginTransaction();
    if ($logger) {
        $logger->stopQuery();
    }

Reads better IMO as:

    $logger && $logger->startQuery('"START TRANSACTION"');
    $this->_conn->beginTransaction();
    $logger && $logger->stopQuery();

The part after `&&` will only execute if `$logger` evaluates to `true`, as it is the case for `object` while evaluates to `true` as opposed to `null` which evaluates to `false`.

It's the same as when we do:

    if ($logger) { ...

where an implicit conversion is made from `object` or `null` to boolean as well!

Now I guess I can very well use `and` instead, but I think they're exactly the same, as PHP classifies both of them as [Logical Operators](http://www.php.net/manual/en/language.operators.logical.php), the only thing that differentiates them AFAIK is their [operator precedence](http://www.php.net/manual/en/language.operators.precedence.php).