Re: print with newline
| From: | Ryan Jentzsch | Date: | Sun, 03 Mar 2019 08:45:23 +0000 |
| Subject: | Re: print with newline | ||
| References: | 1 2 3 4 5 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-104555@lists.php.net to get a copy of this message | ||
Thanks for the explanation of b/c. I didn't know PHP is this rigid. Now I
do...
On Sun, Mar 3, 2019 at 1:30 AM Alexandru Pătrănescu <drealecs@gmail.com>
wrote:
> Steven, Ryan,
>
> Adding new functions is also considered BC break because users might have
> those functions in their code.
> Over the years new functions were added to PHP core but mostly there were
> functions that saved in the userland code more than one line of code.
> Like array_first_key was accepted but array_first_value didn't.
>
> And would you all stop with PHP_EOL? If my code will ever run on something
> different than Linux, I want it to be portable, not generate files
> differently. I think we should define PHP_EOL_N constant so people will use
> it more...
>
> Jokes aside, each case might need a different version of they println/say
> implementation.
> Maintaining it in core is probably not worth the effort as it could be more
> easily maintained in userland.
>
> You can use https://packagist.org/packages/print/ln in the
> meantime. Or
> publish you own and use it.
>
> Regards,
> Alex
>
> On Sun, Mar 3, 2019, 08:49 Joe Watkins <krakjoe@gmail.com> wrote:
>
> > Sara, where do I send pull requests?
> >
> > <?php
> > function println(string $format, ...$args) : void {
> > \vprintf($format . \PHP_EOL, $args);
> > }
> >
> > function fprintln($stream, string $format, ...$args) : void {
> > if (!\is_resource($stream)) {
> > throw new \TypeError(\sprintf(
> > "Argument 1 passed to %s expected to be a resource, %s
> given",
> > __FUNCTION__,
> > \is_object($stream) ?
> > \sprintf(
> > "instance of %s", \get_class($stream)
> > ) : \gettype($stream)));
> > }
> >
> > \vfprintf($stream, $format . \PHP_EOL, $args);
> > }
> >
> > function sprintln(string $format, ...$args) : string {
> > return \vsprintf($format . \PHP_EOL, $args);
> > }
> >
> > Jokes aside, this is so trivially achievable in userland that there is no
> > justification whatever for an internal function or functions, or
> > constructs, or opcodes.
> >
> > Cheers
> > Joe
> >
> > On Sun, 3 Mar 2019 at 06:50, Ryan Jentzsch <ryan.jentzsch@gmail.com>
> > wrote:
> >
> > > I've always wondered why PHP didn't have a built in command or function
> > > that behaved as
echo but with a EOL.
> > > I propose not to modify print or
> > > echo (as this was rightly pointed
> > out
> > > to cause b/c). How difficult would it be to add a new statement and/or
> > > function to the PHP core called say /
> > > say() that has an EOL?
> > >
> > > This seems to me to be simple to do. The benefit is less code to type
> in
> > > user land (ex: say 'Hello World'; as
> > > opposed to `echo 'Hello World' .
> > > PHP_EOL;`
> > >
> >
>