Made with KolourPaint and screenshots from Kate (with the GitHub theme).

  • danA
    link
    fedilink
    arrow-up
    7
    ·
    14 hours ago

    Can we talk about PHP functions with typehints too?

    public static function foo(): string {
    

    Practically every other language with similar syntax does this instead:

    public static string foo() {
    
      • danA
        link
        fedilink
        arrow-up
        1
        ·
        edit-2
        12 hours ago

        TypeScript doesn’t need the “function” keyword for a method in an object or on a class though.

        const foo = {
          bar(): string {
           ... 
          } 
        }
        

        which I assume is doable because the syntax is unambiguous.

        PHP’s object orientation is similar to languages like Java and C#, which is what I was comparing to.

        • marlowe221@lemmy.world
          link
          fedilink
          English
          arrow-up
          1
          ·
          4 hours ago

          I believe the reason a function or method in an object does not need the “function” keyword has to do with the fact that JS is built on the prototype model and the fact that functions are first class in JS.

          As the saying goes, “Everything is an object in JavaScript…” (which is not strictly true).

        • sbv@sh.itjust.works
          link
          fedilink
          English
          arrow-up
          1
          arrow-down
          1
          ·
          10 hours ago

          Your example didn’t mention the use of the function keyword. Instead, it seemed to be questioning the placement of the return type - placing it after the argument list seems pretty common in newer languages.

    • HiddenLayer555@lemmy.mlOP
      link
      fedilink
      English
      arrow-up
      6
      ·
      14 hours ago

      TIL PHP has statics.

      Also, does PHP actually enforce the type declarations? I’d assume it would but knowing PHP…

      • danA
        link
        fedilink
        arrow-up
        4
        ·
        14 hours ago

        It enforces scalar types (string, int, etc) at runtime if you enable strict mode. There’s also static analysis tools like PHPStan and Psalm that will flag issues at build time.

    • calcopiritus@lemmy.world
      link
      fedilink
      arrow-up
      2
      ·
      12 hours ago

      JavaScript (Typescript for the type part) and python, the most popular scripting languages, use the same order as PHP.

      It’s usually compiled languages that do the other one.

      • danA
        link
        fedilink
        arrow-up
        2
        ·
        11 hours ago

        TypeScript doesn’t need the “function” keyword for a method in an object or on a class though.

        const foo = {
          bar(): string {
           ... 
          } 
        }
        

        which I assume is doable because the syntax is unambiguous.

        In PHP’s case, the method syntax should also be unambiguous.