100 лет не писал на PHP, не уверен, что правильный синтаксис, но идея такая.
И, как сказали, echo не надо пихать везде. Есть золотая цитата: "PHP разработчиков бить по рукам ровно столько раз, сколько встречается вывод буффера, минус 1".
<?php
class MyClass {
static $providers = [
'DefaultProvider' => DefaultProvider::class,
'Test' => TestProvider::class,
];
public function setProvider($onEnable = true) {
$name = $this->getProviderName();
$class = self::$providers[$name];
if ($class) {
echo "Provide type ${name}";
$provider = new $class($this);
// do magic
} else {
echo "No provider";
}
}
}