1Because in different OS there is different directory separator. In Windows it's \ in Linux it's /. DIRECTORY_SEPARATOR is constant with that OS directory separator. Use it every time in paths.
2
3In you code snippet we clearly see bad practice code. If framework/cms are widely used it doesn't mean that it's using best practice code.