Gabriel, caso eu tenha entendido bem sua dúvida, para o que você disse funcionar, você teria que criar a função sacar em uma outra classe que "realizasse o saque" e alterasse os valores da instância $primeiraConta, neste caso é possível sim.
Deste modo, sua função sacar deveria ter +/- a seguinte forma:
<?php
use App\Banco\Modelo\Conta\Conta;
use App\Banco\Modelo\Conta\SaldoInsuficienteException;
class OperacoesFinanceiras
{
/**
* @param Conta $conta
* @param float $valorASacar
*/
public function saca(Conta $conta, float $valorASacar): void
{
$tarifaDeSaque = $valorASacar * $conta->recuperaPercentualTarifa();
$valorSaque = $valorASacar + $tarifaDeSaque;
if ($valorSaque > $conta->recuperarSaldo()) {
throw new SaldoInsuficienteException($valorASacar, $conta->recuperarSaldo());
}
$conta->defineSaldo($conta->recuperarSaldo() - $valorSaque);
}
}
E a chamada para ela ficaria algo como:
$conta = new ContaPoupanca(
new Titular(
new Cpf('123.456.789-10'),
'Teste',
new Endereco(
'Teste',
'Teste',
'Teste',
55)
)
);
$operacao = new OperacoesFinanceiras();
$operacao->saca($conta, 100);