1
resposta

Dúvida com relação a pergunta / resposta do exercício.

<?php

/*
Curso: PHP Exceptions: Tratamento de erros
Capítulo 04 atividade 06:
Vimos como fazer um bloco catch pegar diversos "problemas", sem utilizar o multi-catch, informando apenas um tipo.
*/

try{
    $array = new SplFixedArray(3);
    $array[0] = 'João';
    $array[1] = 'Maria';
    $array[2] = 'Eduardo';
    $array[3] = 'Leonardo';
} /* Abstração das classes Exception e Error */
catch(Throwable $t){
    /* Polimorfismo para resposta do método */
    echo $t->getMessage() . PHP_EOL;
    echo $t->getLine() . PHP_EOL;
    echo $t->getTraceAsString() . PHP_EOL;
}

/*
    Uma dúvida,
    No caso do execício a captura da exceção não parece ser realizada pelo polimorfismo e sim pela abstração das classes que herdam da interface. 
    Pois a interface genérica das classes Exception e Error é herdada de Throwable que é sua abstração.
    Neste caso a resposta B (Através da abstração da orientação a objetos) não estaria mais adequada?

    Acho que entendi o que ocorreu na pergunta, 
    quando fala do bloco catch pegar diversos problemas não fica claro se os problemas os herdados de Throwable ou são as mensagens a serem exibidas dos métodos.

*/
1 resposta

Fala Leonardo, beleza?

A resposta é Polimorfismo, por quê a variável $t pode ser representada por diversos tipos de objetos em tempo de execução, desde que as classes desses objetos implementem a interface interna Throwable do PHP.

A abstração é somente uma parte do processo, a finalidade é poder obter o polimorfismo, lembrando também que existem vários tipos de polimorfismos na orientação a objetos.