On Wed, Aug 28, 2019 at 7:24 PM Lucas Werkmeister lucas.werkmeister@wikimedia.de wrote:
As far as I can tell, it actually strips final tokens from *any* PHP file that’s read, including by application code.
Yes, but only if you turn it on, and we'd only turn it on for tests.
It seems to override the standard PHP handler for the file:// protocol, and rely on the fact that the PHP engine also uses that handler to read source code files.
I wonder how it interacts with an opcode cache. Is the cache going to return the cached result based on mtime or whatever, meaning you'll get a random mix of code with and without final and tests might fail because they got a cached version of the file that wasn't de-finalized? Or does it somehow know? (I don't see how it would.)
I filed an issue on this: https://github.com/dg/bypass-finals/issues/12 Assuming it somehow works with an opcode cache, it shouldn't have to be a huge performance impact, because the files shouldn't be parsed often.