Дуже багато людей плутають функціональне та процедурне програмування.
Мені здавалося, що вже декілька років як не потрібно пояснювати, чому глобальні змінні - зло. Але ще досі їх показують.
У прикладі від VTrim, якщо функція abc декларується в одному місці, визивається в другому, а змінні використовуються у третьому - той, хто це не писав ніколи не зрозуміє, що взагалі відбувається у коді. Звідки взялися ці змінні? Чому вони мають те значення, яке мають? А що, як воно хибне - де шукати помилку? Навіть для того хто це писав такий код - не просто засіб вистрілити собі у ногу, а справжнє мінне поле.
Єдине, що я можу собі уявити - це повернення декількох змінних із функції, тоді можна робити так:
function foo() { return ['foo', 'bar', 'baz']; }
list($foo, $bar, $baz) = foo();
echo $foo, $bar, $baz;
Але все одно пов'язувати зовнішній код із функціями, тобто їх внутрішньою структурою - це створювати собі зайві проблеми. Уявіть, що з часом ви повинні будете змінити/замінити цю функцію. Якщо ваш код буде залежати від внутрішньої структури - вам доведеться переписати всі місця, в яких ви користуєтесь цією функцією. Такий підхід - це справжній кошмар у підтримці. Не робіть так, краще подумайте, як можна вирішити задачу іншим шляхом - він завжди є. І повірте, той, хто буде працювати з цим кодом після Вас буде Вам вдячний.