Я всегда использовал вариант № 2 и просто гарантирую, что никто, кроме владельца, не имеет НИКАКОГО доступа к нему. Это самый популярный метод среди приложений PHP, таких как Joomla, vBulletin, Gallery и многие другие.
Первый метод мне неопрятен (удобочитаемость), а третий слишком опасен. Я никогда не думал о методе Class, так что кто-то другой может предоставить свой вклад в этот метод. Но я думаю, что это нормально, если для использования класса используется правильный доступ.
Пример ..
define('EXAMPLE1', "test1"); // scenario 1
$example2 = "test2"; // scenario 2
function DealWithUserInput($input)
{
return eval($input);
}
Теперь этот пример кода действительно тупой, но всего лишь пример. Подумайте, что может вернуть функция, в зависимости от того, какой сценарий пользователь может попытаться использовать при вводе.
Сценарий 2 вызовет проблему, только если вы сделаете его глобальным в функции. В противном случае он выходит из области видимости и недоступен.