„variables_order“ PHP директивата задава на кои суперглобални масиви да бъдат зададени стойности. Задаваме кои от GET, POST, COOKIE, ENV и SERVER ще презапишат една друга.
This directive determines which super global arrays are registered when PHP
starts up. G,P,C,E & S are abbreviations for the following respective super globals: GET, POST, COOKIE, ENV and SERVER. There is a performance penalty paid for the registration of these arrays and because ENV is not as commonly used as the others, ENV is not recommended on productions servers. You can still get access to the environment variables through getenv().
Демек, използването на „E“ не се препоръчва, защото натоварва сървъра с още един масив, което е безсмислено, при условие че стойностите му могат така или иначе да се вземат с getenv()
А ако искаме да зададем РЕДЪТ НА ПРЕЗАПИСВАНЕ, това става с директивата „request_order“, която задава въпросният ред на презаписване.
Ето един пример:
Ако имаме request_order = „GP“, това значи, че ако имаме GET и POST променливи с еднакви имена, то стойността на дадената POST променлива ще презапише тази на съответната GET променлива.
Демек, редът на презаписване е – десните презаписват левите.
Какво, ако не зададем стойност на тази директива – „request_order“?
Leaving this value empty will cause PHP to use the value set in the variables_order directive. It does not mean it will leave the super globals array REQUEST empty.
Демек, ще използва стойността на директивата „variables_order“ и пак ще имаме $REQUEST масив със стойности.
Друго, което се вижда, че информацията в ENV e аналогична с тази, получена от getenv().
А разликата между ENV и SERVER e, че първото съдържа информация по-скоро за операционната система, както и такива, зададени от командният ред, такива, зададени с putenv()
А SERVER- променливи на ниво конкретен уебсърв, apache, nginx…
Литература:
https://www.php.net/manual/en/reserved.variables.request.php
https://stackoverflow.com/questions/43157933/what-is-the-request-precedence