Ваш второй пример возможен, ваш первый нет. Нет такой вещи, как наличие переменной-члена класса, которая является глобальной переменной, или использование области видимости, как в первом примере.
Как правило, я бы рекомендовал полностью не использовать ключевое слово global. Я много занимаюсь программированием на PHP и никогда не использовал его ни в чем серьезном (да и вообще во всем за последние 10 лет).
Если вам нужен доступ к переменной в вашем классе, я бы передал переменную в ваш конструктор класса, например:
class abc
{
private $conn;
function __construct($conn)
{
$this->conn = $conn;
}
public function xyz($a)
{
$this->conn->execute();
}
public function xya($a)
{
$this->conn->execute();
}
}
Тогда у вас будет
$myabc = new abc($conn);
Таким образом, вы явно указываете, какая переменная доступна для каких функций. Это также упрощает / делает возможным в будущем давать разные значения $ conn разным классам или даже переименовывать их в $ conn, и все же вам не нужно будет просматривать все ваши классы и изменять каждую ссылку на эту переменную.
С глобальными переменными намного сложнее отследить, какая переменная доступна для каких функций, или сделать это структурированным образом. Кроме того, больше соблазна продолжать накапливать больше зависимостей от глобальных переменных, пока вы не потеряете преимущество наличия классов.