Cái này mình nghĩ là tùy vào khẩu vị của từng nhóm, mà chính xác là do boss. Cách để config ở file php tồn tại từ lâu rồi và cũng dần ít được sử dụng. Cách này có lợi thế là cải thiện được tốc độ (mặc dù là micro-optimization) vì php sẽ được compiled thành opcode nên khi load không cần phải parse lại giống như khi sử dụng .env, xml, ini,…
PHP từ khi có zend-engine với composer thì workflow cũng ổn, sử dụng được trong enterprise. Tiếp đó là tồn tại các router-engine nên việc routing đến resource không cần phải như ngày xưa: index.php, forum.php nữa nên cấu trúc application cũng khác, configuration file cũng không nằm trong thư mục có thể access qua http-request nên tương đối an toàn.
Với m thì sử dụng .env, ini,… có lợi thế khi:
- Separate các environments, ví dụ
.env.test
cho unit-testing, .env.prod
cho production
- Trong collaborate project, thường theo cách cũ thì file config chứa 1 array nội dung của configuration, mà {[\n, trong PHP dài dòng và khó tìm hơn plain ini file. Hơn nữa khi commit sẽ không cần phải để ý tên file là gì để tạo mới, cứ
.env
thôi.
- Trong automated CI/CD chỉ cần viết 1 docker file, mọi mật khẩu, đường dẫn… bí mật đều có thể đơn giản sửa qua linux command mà không phải lo syntax của PHP nữa, cái này là điểm cộng lớn nhất mà m dùng .env.