Re: Runtime JIT Proposals

php.internals

Sara Golemon

19 years ago
> As I told you, there was already a consensus on this solution, check > my initial proposal (solution #2): > > http://news.php.net/php.internals/26965 >
No, that's a consensus on compile-time versus runtime. What I offered in my post was four variants of how runtime could be implemented.
>> In response to the suggestion to just turn $_REQUEST (et.al.) into >> objects with overloaded array access, the big danger there is that the >> following behavior would change: > > It will bring a BC break as well or is_array($arrayaccessobject) will > have to return true and we have to be sure about its implementation > (like properties access not always working well). >
Right, we all agree that approach won't work.
>> Personally, I like Option 4, but then I like complexity. I can >> certainly see going for any of the others, but I want to go with >> something that the rest of the group can see being appropriately useful. > > I like my initial proposal. All it needs is an extra function and to > move the JIT management to runtime. The complexity is the same as what > we have now. >
What if I want to inspect one particular element for encoding hints? /* Initially set encoding to ascii just for parsing 'ei' */ http_input_encoding('ascii'); if (!empty($_REQUEST['ei'])) { /* Request identified itself */ if (!http_input_encoding($_REQUEST['ei'])) { handle_bad_input_encoding(); } } else { /* Fallback on best-guess */ http_input_encoding_detect('UTF-8,ISO-8859-1'); } /* Work with the rest of $_REQUEST using the identified encoding */ -Sara

Pierre Joye

19 years ago
Hello, On 1/15/07, Sara Golemon <pollita@php.net> wrote:
> > As I told you, there was already a consensus on this solution, check > > my initial proposal (solution #2): > > > > http://news.php.net/php.internals/26965 > > > No, that's a consensus on compile-time versus runtime. What I offered > in my post was four variants of how runtime could be implemented.
The consensus was on #2 (which is your #1).
> >> In response to the suggestion to just turn $_REQUEST (et.al.) into > >> objects with overloaded array access, the big danger there is that the > >> following behavior would change: > > > > It will bring a BC break as well or is_array($arrayaccessobject) will > > have to return true and we have to be sure about its implementation > > (like properties access not always working well). > > > Right, we all agree that approach won't work. > > >> Personally, I like Option 4, but then I like complexity. I can > >> certainly see going for any of the others, but I want to go with > >> something that the rest of the group can see being appropriately useful. > > > > I like my initial proposal. All it needs is an extra function and to > > move the JIT management to runtime. The complexity is the same as what > > we have now. > > > What if I want to inspect one particular element for encoding hints? > > /* Initially set encoding to ascii just for parsing 'ei' */ > http_input_encoding('ascii'); > if (!empty($_REQUEST['ei'])) { > /* Request identified itself */ > if (!http_input_encoding($_REQUEST['ei'])) {
it is typo right? like using a function http_input_encoding_detect_from(...)?
> handle_bad_input_encoding(); > } > } else { > /* Fallback on best-guess */ > http_input_encoding_detect('UTF-8,ISO-8859-1'); > } > /* Work with the rest of $_REQUEST using the identified encoding */
Sorry but that's horrible :) That's way too complex to handle the input enconding. PHP Unicode functions can include some magic function to detect the encoding of a given string but I hardly see it as a specific http function. The two functions needed can be: http_input_encoding: set the input encoding (UTF-8, ASCII, etc.) http_input_encoding_error: get the error (invalid sequence, badly formed,etc.) If we like to go with #4, I rather prefer a more drastic change and go with something like perl/python CGI objects. And it is a piece of cake to implement in ext/filter. #4 makes possible as well to implement #1 to minimize the impact on the existing applications (relying on GPC). --Pierre