> On Feb 24, 2021, at 11:49 AM, Chase Peeler <chasepee...@gmail.com> wrote:
> 
> 
> 
> On Wed, Feb 24, 2021 at 11:35 AM Mike Schinkel <m...@newclarity.net 
> <mailto:m...@newclarity.net>> wrote:
> 
>> On Feb 24, 2021, at 11:27 AM, Chase Peeler <chasepee...@gmail.com 
>> <mailto:chasepee...@gmail.com>> wrote:
>> 
>> On Tue, Feb 23, 2021 at 11:27 PM Mike Schinkel <m...@newclarity.net 
>> <mailto:m...@newclarity.net>> wrote:
>> > On Feb 23, 2021, at 2:05 PM, Rowan Tommins <rowan.coll...@gmail.com 
>> > <mailto:rowan.coll...@gmail.com>> wrote:
>> > 
>> > On 23/02/2021 18:41, Albert Casademont wrote:
>> >> Sure, it's not a big deal having to write the ": null" but it doesn't add
>> >> any value
>> > 
>> > 
>> > On the contrary, it adds an important piece of information: that the 
>> > default value is "null", rather than "false", or "0", or "new 
>> > EmptyValue()".
>> > For instance, it doesn't seem at all obvious to me that this code should 
>> > produce a null:
>> > 
>> > $items = [];
>> > $itemCount = $items ? count($items);
>> > 
>> > I might be more convinced that "null" is the "natural" value if the 
>> > left-hand operand was only checked against null, not "falsiness": in that 
>> > case, you can read it as "if it's null, leave it alone". I'd still be 
>> > inclined towards "too specific to use up more syntax", though.
>> 
>> If you look at it from a software engineering perspective — which is how I 
>> assume most on this thread have been looking at it — being more explicit in 
>> the code is probably a better practice than saving a few keystrokes.
>> 
>> OTOH, if you view it from the perspective of a *templating* language — which 
>> is what PHP was initially created to be, for the web — then the reduction in 
>> visual noise from omitting ": null" would be a nice plus. And in the case of 
>> templating, the distinction between null vs. false vs. "" would be 
>> completely moot.
>> 
>> 
>> But PHP isn't just a templating language anymore.
> 
> It is not?  If it is not I think a lot of userland PHP developers never got 
> that decree.
> 
> 
> I didn't say it COULDN'T be used for templating

It would benefit when PHP *is* used for templating which is still not an 
insignificant use of PHP, and this one simple thing would make templates easier 
to read.

> (although even then I'd suggest utilizing a library like smarty or twig)

A long time ago I read an article on SitePoint that argued that using 
templating languages like Smarty or Twig made no sense because PHP *is* a 
templating language.  

That stuck with me and for many (most?) use-cases I still agree with it.

> but that it is a lot more than that. I'd also say that, good or bad, the 
> direction of the language in the last 15+ years has been to make it a robust 
> language that can be used for more than just templating. 

I think it is specious to imply allowing $foo ? $bar to return null when 
$foo==nil would make PHP a less robust language.

> Well it's pretty obvious. If php currently supported a statement like "$user 
> ? 'online'" then a change that requires the third argument would break every 
> single instance of code that didn't have one and wouldn't provide any 
> functional gains as nothing prevents people from adding on the ": null" if 
> they want to. It's a moot point, though, because PHP doesn't support it. I 
> just included that statement to give context to my views  - that I'm not 
> automatically in favor of changes just because they enforce better 
> development practices. 

So 1.) if PHP allowed  "$user ? 'online'" and then 2.) PHP later disallowed it 
then 3.) the second action would created BC concerns?

Yes, that is a moot point with respect to the proposal posed by this thread.

 -Mike

Reply via email to