My principal recommendation is to go through the relevant Upgrading pages of the manual; all the ones between the "from" version and the "to" version. Skim-read first, then pay a bit more attention to incompatibilities and see if anything there rings a bell.

sneakyimp Do you have any tips for folks upgrading from 7.4 to 8?

Hmm...not really, other than it probably would have been easier for me if the old PHP app I was working on was more modular and leveraged compose and such for external modules. The one good thing was that we had a fairly extensive test suite for the main part of the app (it's API endpoints), so a lot of it was run the tests, research the resulting errors, fix them, search for other places in the code we used the offending function, syntax, whatever, then rinse and repeat. 🙂

The good news is that as part of it, I simplified how the Docker images were built by using an official PHP/Apache image, so at least for the near term I should be able to update the PHP version by modifying the first line of /Dockerfile and then running the tests and seeing what happens.

FROM php:8.1.9-apache

🙂

PS: Looks like php:8.1.13-apache is out there now, so maybe it's time to try that before there are too many changes. 😉

    Weedpacket My principal recommendation is to go through the relevant Upgrading pages of the manual; all the ones between the "from" version and the "to" version. Skim-read first, then pay a bit more attention to incompatibilities and see if anything there rings a bell.

    I have certainly been reading those, in particular these backward-incompatible changes. The 0 == "" seems like it might be a problem. It's always helpful to hear from folks who have practical experience.

    NogDog Hmm...not really, other than it probably would have been easier for me if the old PHP app I was working on was more modular and leveraged compose and such for external modules. The one good thing was that we had a fairly extensive test suite for the main part of the app (it's API endpoints), so a lot of it was run the tests, research the resulting errors, fix them, search for other places in the code we used the offending function, syntax, whatever, then rinse and repeat. 🙂

    Assuming that the composer packages you use would be updated by their maintainers. 🤷 I see the wisdom of the test suite. Did any 7/8 problems seem to be especially common? I'm imagining I'll be examining a lot of equality comparisons in if and switch statements.

    NogDog The good news is that as part of it, I simplified how the Docker images were built...

    Interesting to know you are using Docker. I was using virtualbox for virtual machines some time back and it seemed so cumbersome. I need to hone my virtual machine chops.

    sneakyimp it seemed so cumbersome

    I won't claim to be a Docker expert, but my boss is. We actually deploy the Docker containers in production, so in theory our development environment is identical to the deployment environment (minus maybe some hardware differences in RAM and such?). We work on MacOS for development, and I think it used to be a PITA to get Docker working on Windows, but supposedly is much better now in the last year or 2?

    sneakyimp Did any 7/8 problems seem to be especially common

    The couple of things that come to mind were a number of functions that either fail or warn if you pass null to an argument, and some places where we extended a built-in class and had to add the return type specifier on overridden functions that have such specifiers now.

    a month later
    10 days later

    TIL that PHP 8.2 has deprecated the dynamic creation of object variables. E.g., this will throw a warning:

    class Foo {
        public $foo;
        public function __construct() {
            $this->foo = 'Foo';
            $this->bar = 'Bar'; // $bar was not declared
        }
    }
    
    $test = new Foo();
    
    Deprecated: Creation of dynamic property Foo::$bar is deprecated in...
    

    (I was looking into upgrading an old app from 8.1 to 8.2, and ran into this in a bunch of places.)

      TIL there are new SI order-of-magnitude prefixes:
      ronna- (R) for 10²⁷
      quetta- (Q) for 10³⁰
      ronto- (r) for 10`²⁷
      quecto- (q) for 10`³⁰

      10 days later

      hey, laserlight -- saw your avatar, I remember you! You helped me w/ stuff long time ago. I had a different username back then. probably 2005 or so.

        14 days later

        Today I learned the true murderous rage your children can give you.

          18 days later

          Today I learned that Vinyl de Paris has shipped the 500 vinyl LPs I ordered of my First World War concept record. 👍

          I started working on ten years ago, and ordered the vinyl pressing in August. It's been a long time coming.

          I hope it's ok to link it here? If not, please forgive.

          9 days later

          TIL....
          ...that the United States (via NIST) has finally (from the start of this year) retired the "U.S. Survey Foot" as a unit of length, and will use the "international foot" instead for surveying, the way it already uses the "international foot" for everything else (defined as 0.3048 of a metre).

          a month later

          On 27 March I learned not to trust the C-Level types to have goodwill, or any understanding of IT....

          You'd have thought at my age that was already quite obvious...

          6 days later
          12 days later

          Life's throw a few variations of this lesson at me before. This one was a total surprise. Political firing.