
PHP 7.3.0 alpha 1 Released - flavius37
http://php.net/archive/2018.php#id2018-06-07-1
======
dlbucci
I recently revisited some of the earliest web code I ever wrote, which was in
PHP 5.5 (about 7 years old, I think). I wasn't surprised by all the mistakes I
made, both from being a newbie programmer and from making what I think were
fairly easy-to-make PHP mistakes. After all, every tutorial I could find back
then used mysql, didn't used real_escape_string, etc.

What was surprising was how hard I had to dig _now, 7 years later_ to find out
how to do things correctly in PHP 7. Searching for what I thought should be
fairly common things to do seemed to bring up all of the old articles that I
first mislearned from, and it was really hard to find things like what the
best way to iterate over a mysql result set was.

Honestly, after putting my 7 years of experience to practice, the final code
didn't look half bad, but I don't think I'll ever end up using PHP since it
still appears to be _very easy_ to write bad code. Maybe if a definitive guide
for how to write good PHP shows up, I'll give it a shot (or maybe I'll just
try Hack).

~~~
prplhaz4
[http://www.phptherightway.com/](http://www.phptherightway.com/) attempts to
do just that - can't vouch for its effectiveness, but is a resource that was
at least updated for PHP 7...

[https://github.com/codeguy/php-the-right-way](https://github.com/codeguy/php-
the-right-way)

~~~
TooBrokeToBeg
I always hated the DI fervor in PHP, like it solves all problems. You get such
gems from phptherightway as

> We can demonstrate the concept with a simple, yet naive example.

> Here we have a Database class that requires an adapter to speak to the
> database.

It tries so hard to be java, which seems backward.

~~~
__aeneas
I can only agree. I wrote a CMS with Zend Framework 2 which is heavy on DI and
tries to be like Spring + Hibernate (Doctrine). Apart from being very hard to
understand for new devs in the project, it's also very, very slow.

The way PHP is evolving is definitely towards the Java world and I think it's
the worst decision they could make.

Moved to Go 5 years ago, never looking back.

~~~
trm42
Haven't had to use Zend but at least Symfony DI is really heavy to use with
all the services.yamls and the javaisms it introduces.

DI can be heavy or it can be something mostly automagical like in Laravel.
That's something I've enjoyed quite a bit. Basically it doesn't that much
exist until you start needing special cases.

Quite a big part of the PHP community is gravitating towards Laravel and the
new steam it introduced with OOB best practices and "let's try hard to avoid
the Java-heaviness". Laravel seems to have quite nice balance between easy for
new devs and bunch of powerful concepts when needed. Lots of basic problems
solved OOB as well.

------
mmosta

      - JSON:
      . Added JSON_THROW_ON_ERROR flag. (Andrea)
    

A blessed day, prior to this, json_decode would simply return null on error.

~~~
LeonM
Absolutely, before you had to do some check like:

if(null === $data = json_decode($json)) throw new Exception();

~~~
rollcat
Wrong! "null" is a valid JSON-serialized value! You MUST call json_last_error.

Better yet - don't use PHP.

------
tylerjwilk00
_Notable New Stuff in Core_

\- list() Reference Assignment

    
    
      https://wiki.php.net/rfc/list_reference_assignment
    

this allows using list() function for reference assignment instead of just
assigning to new variables

\- Flexible Heredoc and Nowdoc Syntaxes

    
    
      https://wiki.php.net/rfc/flexible_heredoc_nowdoc_syntaxes
    

This makes using HEREDOC blocks much more friendly looking for spaces/tab
usages in code

 _Other stuff_

Just a lot of updates and bugfixes to many extensions

~~~
combatentropy
>
> [https://wiki.php.net/rfc/flexible_heredoc_nowdoc_syntaxes](https://wiki.php.net/rfc/flexible_heredoc_nowdoc_syntaxes)

Not only does it let you indent the closing marker, but however much you
indent it causes that much white space to be trimmed from the enclosed text.
Heredocs are now perfect.

------
pasta
_Removed support for BeOS_

It's amazing a lot of software still support some very old stuff :)

~~~
agildehaus
Have to make room for Haiku :)

------
bovermyer
Maybe I should take this as an opportunity to write a new app in PHP. I've
been too deep into Go for awhile to have any sense for where PHP's at these
days.

~~~
mmaunder
If you want to be cool, write Go. If you want to make money, write PHP.

~~~
ergo14
Are you implying PHP devs are earning more than Go devs?

~~~
jdpedrie
I don't speak for the parent (and I don't think the assertion is correct), but
I will say that PHP jobs outside the valley are plentiful. A large percentage
of those are legacy maintenance or development on unpleasant platforms such as
WordPress or Magento, but there is still a lot of challenging and enjoyable
work being done using PHP, and the improvements to the language over the last
few years have made many of the old arguments against the language obsolete.

~~~
ergo14
I'm asking about salary ranges specifically.

~~~
waibelp
I know some php devs from munich in germany which started at 64k per year.
Others earn 70k+ per year. In agencies (wordpress i.e.) jobs start at 48k.

~~~
foepys
Tbf, 70k€ in Munich is like 50k€ nearly anywhere else in Germany.

------
creeble
what does it break from 7.2?

I love how every php upgrades requires me to find mysqli-type crap that breaks
all my customers' code.

~~~
wolfgang42
Seems to be mostly fixes and incremental improvements. Here's the only
breaking changes I see in NEWS:

. Removed support for BeOS. (Kalle)

. Removed support for ODBCRouter. (Kalle)

. Removed support for Birdstep. (Kalle)

So, if your customers are still using BeBoxes, you might have a problem.

------
olskool
Did PHP ever change the misfeature that there is no warning when you reference
an uninitialized variable?

~~~
JeanMarcS
If my memory is correct (might not be) you get a Notice since PHP5. So around
13 years ago.

------
emodendroket
What's new in this release? I couldn't figure it out by looking at the page.

~~~
muglug
Check out [https://github.com/php/php-
src/blob/php-7.3.0alpha1/NEWS](https://github.com/php/php-
src/blob/php-7.3.0alpha1/NEWS)

~~~
pp19dd
One thing that stuck out to me was flexible heredoc changes:
[https://wiki.php.net/rfc/flexible_heredoc_nowdoc_syntaxes](https://wiki.php.net/rfc/flexible_heredoc_nowdoc_syntaxes)

