> De : Benjamin Eberlei [mailto:kont...@beberlei.de] > I want to open discussion on my RFC to strengthen the ability of extensions > to provide functionality to developers in both C **and** PHP code. > > For this extensions can add PHP files to a list of "prepend files" that are > part of every request execution exactly the same way the INI > auto_prepend_file functionality works: > > https://wiki.php.net/rfc/extension_prepend_files > > I propose implementation details in the RFC, but they are completely up to > discussion. I am even sure there is probably a better way than what I > proposed, because I am not familiar with the code.
Can you please develop the API changes in your RFC ? You're talking about changes in zend_execute_scripts(), a new zend_execute_script() function (but the name in the prototype is wrong), then php_execute_scripts()... Where are the file handles coming from ? Does it mean that the files to prepend will be kept open ? Do you register paths to prepend, or will the scripts be loaded in memory during MINIT ? How will these files be cached by opcode caches (mandatory for such a feature) ? And, finally, how can an extension determine where a given PHP script it requires has been installed ? It makes sense in php.ini because it is under control of the final user. But an extension is just a C library, installed anywhere or bundled in the PHP executable. Would it compute the script paths from PHP installation paths ? Actually, I don't see how it would work with PHP scripts which would remain separate from the extension code. What I would imagine for such a feature, would be PHP code embedded in the extension as a memory buffer, registered during MINIT, and then executed at each RINIT. This would probably require a stream wrapper because the opcode cache would require paths for this code. We can also concatenate the scripts but we still need a virtual path. The stream wrapper would just be simpler to implement. Regards François -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php