Including a file (is this safe and effective?)
As it uses the basename function it should be safe enough.

One note though: I would personally always have a lookup table (PHP "array") for whitelisting files unless there is a very specific reason not to do so. That way I will have full control and the result should be the same for the user - as a side effect it is way way more easy to have shorter names and/or aliases for files later on.