• Olissipo
    link
    fedilink
    English
    arrow-up
    1
    ·
    edit-2
    1 year ago

    I like it in modern PHP, it’s balanced. As strict or as loose as you need in each context.

    Typed function parameters, function returns and object properties.

    But otherwise I can make a DateTime object become a string and vice-versa, for example.

    • argv_minus_one@beehaw.org
      link
      fedilink
      arrow-up
      1
      ·
      1 year ago

      What happens when you coerce a string to a date-and-time but it’s not valid?

      Where I’m from (Rust), error handling is very strict and very explicit, and that’s how it should be. It forces you to properly handle everything that can potentially go wrong, instead of just crashing and looking like a fool.

      • Olissipo
        link
        fedilink
        English
        arrow-up
        1
        ·
        1 year ago

        My point is, you won’t ever try. You’d only use “weak” variables inside the function you’re working on.

        It’s explicit when you absolutely need it to be, when the function is being called and you need to know what arguments to pass and what it’ll return

          • Olissipo
            link
            fedilink
            English
            arrow-up
            1
            ·
            1 year ago

            When you say user, you mean a user of a function? In that case PHP would throw a TypeError, and presumably only happens when developing/testing.

            If you mean in production, like when submitting a form, an Exception may be thrown. In which case you catch it and return some error message to the user saying the date string is invalid.

            • argv_minus_one@beehaw.org
              link
              fedilink
              arrow-up
              1
              ·
              1 year ago

              By “user” I mean the person who is using the application.

              Using exceptions for handling unexceptional errors (like invalid user input) is a footgun. You don’t know when one might be raised, nor what type it will have, so you can easily forget to catch it and handle it properly, and then your app crashes.

              • Olissipo
                link
                fedilink
                English
                arrow-up
                1
                ·
                1 year ago

                you can easily forget to catch it and handle it properly

                Even if I coded the form by hand and that happened, it’s on me, not on the programming language.

                But I don’t, I use a framework which handles all that boilerplate validation for me.