Можно ли использовать глобальные переменные?
1. Про статью.
Аффтар кликушествует и тупит. 
Единственная претензия, которую он родил, сводится к тому, что глобальную переменную можно переписать. Офигеть недостаток. А используя while, можно уйти в бесконечный цикл. Следуя его логике, while нельзя использовать, он разрушает структуру программы. И ещё моск.2. О глобальных переменных.
Существует [по крайней мере] два способа использовать глобальные переменные.Для доступа к глобальным сервисам.Для передачи данных в функцию и получения результата из неё.
Так вот, второй способ является гарантированным пропуском в АДЪ. Это реальный способ довести до самоубийства человека, котрый будет потом разбирать твою программу. 
В то же время, в первом варианте нет ничего зазорного. Все исползуют его, но из религиозных соображений задрапировав в статическую функцию, класс, или контейнер, но суть у всех будет ровно одна - получить доступ к глобальному сервису. 3. О твоем коде. 
1. Учитывая п.2 из предыдущего раздела, становится понятно, что твой второй вариант нежелателен. При этом.
2. Я не понял фразу про "тасакать". Куда и что ты собираешься таскать? Код коннекта должен лежать вызываться РОВНО ОДИН РАЗ, лежать, где-нибудь глубоко в бутстрапе, и не вызывать ни малейших ассоциаций со словом "таскать".
И - да. Сто процентов отвечателей будут тебе писать не про твои переменные с хостом и паролем, а про саму $pdo. Потому что вопрос про неё является более логичным и куда боле актуальным: ведь переменные для коннекта требуются тебе 1 раз, а само соединение - десятки раз в разных местах скрипта.
Это плохо тем, что переменную можно переопределить, лучше сделать по второму способу от Александр N++ А вот очень простой, но полезный класс<?php

class DB {
    private static $instance;

    public static function __callStatic($name, $args) {
        if (!self::$instance) self::getInstance();
        return call_user_func_array([self::$instance, $name], $args);
    }

    public static function getInstance() {
        self::$instance =  new PDO('mysql:host=127.0.0.1;dbname=test', 'root', '');
        self::$instance->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
        self::$instance->query('SET NAMES `utf8`');
    }
}
Использовать его можно примерно так$query= DB::query('SELECT * FROM `users`');
$prepare = DB::prepare('...')->execute(...);
Надеюсь, что суть ясна )