Flagi takie podstawowe w php (niech ktoś krzyknie jak się mylę) to nic innego jak odpowiednik jakiejś cyferki w formie stałej. Czyli jeśli weźmiemy pod lupę funkcję:
error_reportingParametry podaje się w postaci int`a, ale dla wygody stworzone zostały stałe, aby nie trzeba było pamiętać, który numer, co oznacza. I taką stałą nazywamy flagą.
Kiedy używać stałych? Przykładowo właśnie wtedy, kiedy musisz operować na cyferkach, dajmy na to od 0-10, a te cyferki odpowiadają konkretnym "słownym" wartościom.
Inny przykład, to takie podstawowe parametry dla całej aplikacji, Zend Framework już w pliku index.php definiuje stałą o nazwie APPLICATION_PATH - która odnosi się do folderu aplikacji. Niesamowicie przydatna stała, której każdy użył pewnie setki razy.
Ale w skrócie i na temat. Stałych trzeba unikać, ponieważ nie są potrzebne w każdym miejscu, a niepotrzebnie zawalają pamięć. Masz stałe w klasach, co już jest lepszym rozwiązaniem.
Wiele CMSów krąży w internecie (szczególnie starych), gdzie cała konfiguracja jest w stałych i np. taki dostęp do bazy ustalony przez "define" i co? Użyty jest raz, 50 linijek dalej. A dane te są dostępne dalej globalnie w każdym miejscu, co jest wielką pomyłką.