Calling one method both dynamically and statically
The first thing you should now is that magic methods are slow __call and __callStatic, that is. The second thing I'd like to point out is that, given that you declared the method as static, you should always call it as such. Failing to do so is just going to leave you with code that is a nightmare to maintain: every call to every function will need to be checked and double checked, just to know if that method is indeed static or not.

Lastly: why aren't you simply calling the method statically on your instance?

$file = new File('dynamic');
$file::exists();


That'll work just fine, too. But all in all: a method should be either static (which isn't that useful in PHP 9/10 times anyway) or not. Trying to allow for static calls aswell as instance calls means you are writing a class that offers a messy API. Don't