Как использовать $pdo внутри функции (без global)?
1) Аргумент функции
2) Статический класс

сложным материям, типа ооп, патернам проектирования, внедрения зависимостей, синглтонов и т.п.
Или такая необходимость это неизбежно сигнал неверного проектирования приложения?
Как то вообще первая цитата со второй не в ладах... Ясень пень у вас неверное проектирование, если паттерны и ооп у вас сложные материи...
пока пошёл таким путём, в классе пишу всё что связано с базой
$pdo = new PDO($dsn, $user, $pass, $opt);

class oop
{
  
  function __construct($pdo)
  {
    $this->pdo = $pdo;
  }

  function anythingForDb($arg)
  {
    $q = "SELECT * FROM table WHERE field=?";
    $test = $this->pdo->prepare($q);
    $test->execute([$arg]);
    return $test->fetchAll();
  }
}

$oop = new oop($pdo);

print_r($oop->anythingForDb('test'));