Hi
I would like to introduce a new method for the new Randomizer class [1].
I would like to have a function that generates a random string for me
based on a given alphabet. This function is useful as a building block,
as many use cases require generating random strings with a specified
list of characters (e.g. random passwords, voucher codes, numeric
strings larger than integers) and implementing this in userland requires
multiple lines of code for what effectively is a very simple operation.
Furthermore the obvious implementation based on ->getInt() is
inefficient, as it requires at least one call to the engine per
character, whereas a 64 Bit engine could generate randomness for 8
characters at once.
I have opened a Pull-Request on PHP to demonstrate the implementation
[2] but I am unsure about the method name and decided for
getBytesFromAlphabet()
but I am open for better suggestions.
During code review Go Kudo requested that this goes through an RFC and
Tim Düsterhus requested to handle multiple new methods in bulk. Tim
implemented a new method, which returns a random float value [3], since
that's non-trivial to do in userland and an equally useful building
block like my introduced method.
Since the class into which this function is built is final anyway, the
methods can be built in with full backwards compatibility.
I look forward to feedback from you!
[1] https://wiki.php.net/rfc/random_extension_improvement
[2] https://github.com/php/php-src/pull/9664
[3] https://github.com/php/php-src/pull/9679
PS: Since this is my first contribution, someone needs to give me karma
to open an RFC. My account name is josh
.
Cheers
Joshua Rüsweg
PS: Since this is my first contribution, someone needs to give me karma
to open an RFC. My account name isjosh
.
RFC karma granted. Best of luck with the RFC!
--
Christoph M. Becker
2022年10月6日(木) 6:44 Joshua Rüsweg via internals internals@lists.php.net:
Hi
I would like to introduce a new method for the new Randomizer class [1].
I would like to have a function that generates a random string for me
based on a given alphabet. This function is useful as a building block,
as many use cases require generating random strings with a specified
list of characters (e.g. random passwords, voucher codes, numeric
strings larger than integers) and implementing this in userland requires
multiple lines of code for what effectively is a very simple operation.
Furthermore the obvious implementation based on ->getInt() is
inefficient, as it requires at least one call to the engine per
character, whereas a 64 Bit engine could generate randomness for 8
characters at once.I have opened a Pull-Request on PHP to demonstrate the implementation
[2] but I am unsure about the method name and decided for
getBytesFromAlphabet()
but I am open for better suggestions.During code review Go Kudo requested that this goes through an RFC and
Tim Düsterhus requested to handle multiple new methods in bulk. Tim
implemented a new method, which returns a random float value [3], since
that's non-trivial to do in userland and an equally useful building
block like my introduced method.Since the class into which this function is built is final anyway, the
methods can be built in with full backwards compatibility.I look forward to feedback from you!
[1] https://wiki.php.net/rfc/random_extension_improvement
[2] https://github.com/php/php-src/pull/9664
[3] https://github.com/php/php-src/pull/9679PS: Since this is my first contribution, someone needs to give me karma
to open an RFC. My account name isjosh
.Cheers
Joshua Rüsweg
--
To unsubscribe, visit: https://www.php.net/unsub.php
Hi
I have read the RFC. I think the content is generally good and adequately
compensates for the areas that could not be completed.
I am skeptical only about getFloat(). The use cases are limited and seem
somewhat excessive. Do you have examples of how this is supported in other
languages?
Regards
Go Kudo
P.S.
It's been too long and I had forgotten everything about how to use ML.
Apologies for replying directly to you.