2024年3月6日(水) 18:42 Niels Dossche <dossche.ni...@gmail.com>:
>
> On 06/03/2024 01:37, youkidearitai wrote:
> > 2024年3月6日(水) 9:22 youkidearitai <youkideari...@gmail.com>:
> >>
> >> Hi, Larry
> >> Hi, Niels
> >>
> >> 2024年3月6日(水) 6:47 Niels Dossche <dossche.ni...@gmail.com>:
> >>>
> >>> Hi Larry
> >>> Hi Yuya
> >>>
> >>> So first of all, I meant the error handling in cases like these: 
> >>> https://github.com/php/php-src/pull/13580/files#diff-b8fe038d9d7539694593978bea5605f38dde4bcb6a016865130590e45e23202eR852-R860
> >>> The implementation still returns NULL here, so the signature is still 
> >>> incorrect. Either it should return false to match the other functions, or 
> >>> throw something and not return a value.
> >>>
> >>> On 05/03/2024 18:40, Larry Garfield wrote:
> >>>> On Tue, Mar 5, 2024, at 7:25 AM, youkidearitai wrote:
> >>>>> 2024年3月5日(火) 5:52 Niels Dossche <dossche.ni...@gmail.com>:
> >>>>>>
> >>>>>> Hi Yuya
> >>>>>>
> >>>>>> This sounds useful.
> >>>>>>
> >>>>>> I do have a question about the function signature:
> >>>>>> function grapheme_str_split(string $string, int $length = 1): array {}
> >>>>>>
> >>>>>> This always returns an array.
> >>>>>> However, looking at your PR it seems you return NULL on failure, but 
> >>>>>> the return type in the signature isn't nullable.
> >>>>>> Also, from a quick look, it seems other functions return false instead 
> >>>>>> of null on failure. So perhaps the return type should be array|false.
> >>>>>>
> >>>>>> What do you think? :)
> >>>>>>
> >>>>>> Kind regards
> >>>>>> Niels
> >>>>>>
> >>>>>> On 03/03/2024 00:21, youkidearitai wrote:
> >>>>>>> Hi, Internals
> >>>>>>>
> >>>>>>> I noticed PHP does not have grapheme cluster for str_split function.,
> >>>>>>> Until now, you had to use the PCRE function's \X.
> >>>>>>>
> >>>>>>> Therefore, I try create `grapheme_str_split` function.
> >>>>>>> https://github.com/php/php-src/pull/13580
> >>>>>>> It is possible to convert array per emoji and variation selectors 
> >>>>>>> using ICU.
> >>>>>>>
> >>>>>>> If it's fine, I'll create an RFC.
> >>>>>>>
> >>>>>>> Regards
> >>>>>>> Yuya
> >>>>>>>
> >>>>>
> >>>>> Hi, Niels
> >>>>>
> >>>>> Thank you for your comment.
> >>>>> Indeed, returns false is make sense.
> >>>>>
> >>>>> Therefore, I changed to returns false when invalid UTF-8 strings.
> >>>>>
> >>>>> Regards
> >>>>> Yuya
> >>>>
> >>>> Many legacy functions return false on error, but that is widely regarded 
> >>>> as bad design.  Please do not continue bad design.
> >>>
> >>> I agree that returning false on error isn't ideal for exceptional cases, 
> >>> that's what exceptions are for.
> >>> Looking at the other grapheme functions makes me wonder though how 
> >>> consistent this would be, especially w.r.t. intl_get_error_*() and 
> >>> intl_error_name().
> >>>
> >>>>
> >>>> Right now, the best "standard" error handling mechanism available is 
> >>>> exceptions.  false (or null) can very easily lead to incorrectly using 
> >>>> that value as though it were valid, when it's not, which will sometimes 
> >>>> cause a fatal error and sometimes cause a security leak.
> >>>>
> >>>> If the input value cannot be logically processed, that's an exception.  
> >>>> (Or Error, perhaps.)
> >>>>
> >>>> --Larry Garfield
> >>>
> >>> Kind regards
> >>> Niels
> >>
> >> Thank you so much for advice.
> >> Indeed, This current grapheme* functions seems inconsistent.
> >>
> >> Therefore, it's one thing when returns null, throws any exception.
> >> Shall we do so just for the grapheme_str_split function?
> >>
> >> Regards
> >> Yuya
> >>
> >> --
> >> ---------------------------
> >> Yuya Hamada (tekimen)
> >> - https://tekitoh-memdhoi.info
> >> - https://github.com/youkidearitai
> >> -----------------------------
> >
> > Ah, If throws exception when intl_error*, is required other an RFC?
> > If we make grapheme_str_split's signature is below (include null):
>
> Hi Yuya
>
> If you want to change other grapheme functions with respect to error 
> handling, then it requires a separate RFC.
> I think consistency between the functions is important.
>
> >
> > ```
> > function grapheme_str_split(string $string, int $length = 1): array|null {}
> > ```
> >
> > For now, I change signature to `array|null`.
>
> Most others functions return false on error, so I think it should be 
> array|false, and the implementation should use RETURN_FALSE instead of 
> RETURN_NULL.
>
> >
> > Regards
> > Yuya
> >
> >
>
> Kind regards
> Niels

Hi, Niels
Thank you very much.

I got it. You're right. I couldn't understand well.
I use returns false when something wrong.

I updated Pull Request. Please see.

Regards
Yuya


-- 
---------------------------
Yuya Hamada (tekimen)
- https://tekitoh-memdhoi.info
- https://github.com/youkidearitai
-----------------------------

Reply via email to