On Sat, Apr 24, 2021, at 10:12 AM, Mel Dafert wrote:
> Hi Internals,
> 
> I would like to propose an RFC 
> https://wiki.php.net/rfc/intldatetimepatterngenerator to add 
> IntlDateTimePatternGenerator
> which exposes ICU's ability to flexibly create localized date/time 
> formatting patterns from a skeleton.
> 
> Previous discussion: https://externals.io/message/113831
> Implementation: https://github.com/php/php-src/pull/6771
> 
> Proposed signature:
> ```
> class IntlDateTimePatternGenerator
> {
>     public function __construct(?string $locale = null) {}
>  
>     public static function create(?string $locale = null): 
> ?IntlDateTimePatternGenerator {}
>  
>     public function getBestPattern(string $skeleton): string|false {}
> }
> ```
> 
> There is an open question about what this should be named 
> `IntlDatePatternGenerator` instead, both for brevity and to keep 
> consistency
> with `IntlDateFormatter`. (Note that the underlying ICU classes are 
> called `DateTimePatternGenerator` and `DateFormatter`, respectively.)
> I am open to switching to the shorter form.
> 
> Another open question is the signature, as currently both `__construct` 
> and `create` are exposed (like `IntlDateFormatter`).
> Other classes inside the intl extension (like `IntlCalendar`) only 
> provide a static `create` method, and leave the `__construct` method
> private. Is there a preferred way, or are both equivalent?

For both points, I'd say "consistency wins by default."  So if the other 
classes in that package already skip "Time" and use ::create() instead of a 
constructor, you should do the same as well unless there's a very good reason 
not to.

(Consistency with everything else in PHP that's not that package is a possible 
reason not to, I grant, hence why it's somewhat subjective.)

--Larry Garfield

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: https://www.php.net/unsub.php

Reply via email to