tami: Closures in PHP - PHP ist eine "Scheißsprache" ... ???

Beitrag lesen

hi,

Hallo,

Es kommt mir so vor, als würde hier auf ungeheuer komplizierte Art und Weise ein Designfehler von PHP ausgebügelt, nämlich dass es keine privaten Funktionen (also in Funktionen gekapselte Unterfunktionen) gibt. Die fehlen mir oft!

PHP ist eine Scheißsprache, ja, und mit dem Verstreuen von ein wenig funktionalem Zucker wird sie nicht angenehmer. ;)

Naja, das sagen viele zu Javascript auch und Crockford hat Recht: Du musst die good-parts nehmen. Zusammen mit den bad-parts ist JS "Scheiße".

Zu Arrays finde ich glaube ich aus der SPL (Standard PHP Library) das ArrayObject (http://www.php.net/manual/de/class.arrayobject.php).

Private Funktionen gibt es in prozeduralen, nicht funktionalen Sprachen höchstens in der Objektorientierung (Klassendeklarationen). Closures in PHP sollen weniger das Verschachteln von Funktionen ermöglichen, sondern andere Probleme umgehen:

  • Die Standardbibliothek ist weder konsequent objektorientiert noch funktional, es gibt tausende globale Array-Funktionen anstelle einer Array-Klasse.
      - Bei einer Array-Klasse würde Code üblicherweise im Scope der Instanz ausgeführt, Felix hätte also nicht das Verfügbarkeitsproblem.
      - Bei funktionaler Definition der Sortierfunktion wäre es trivial, die Liste durchzuschleifen. Oder sie wäre über die Scope-Chain verfügbar.
  • Das schreckliche Angeben von Callback-Funktionen über ihren Namen als String. Jetzt sind *einige* Funktionen Objekte, andere müssen weiterhin über ihren Namen als String referenziert werden.
  • Die schlechte Definition der Parameter von Callback-Funktionen. Würden die Callbacks der Sortierfunktionen z.B. die Signatur (a, b, array) haben, hätte Felix das Problem nicht. Closures sind hier eine weitere Lösungsmöglichkeit.
  • Das schreckliche Erzeugen von Funktionen zur Laufzeit über Strings, nur um eine Flexibilität zu erreichen, die Closures und Funktionen als First-Class-Citizen ebenfalls mitbringen.

Solche Probleme hat man in anderen Sprachen nicht, die Lambdas oder zumindest Blöcke als integrales Sprachfeature haben.

s.a.  https://forum.selfhtml.org/?t=217315&m=1492371

Irgendwie hat Felix das "Problem" doch aber lösen können, und hat sich irgendwie damit auch keinen abgebrochen. Javascript verfügt ja in dem Sinne garnicht über assoziative Arrays, sondern über Objekte. Ich weiß nicht, wie Du da eleganter oder besser ein Objekt
{"a":[],
"c" : "",
"d" : [];
"f" : ""
}
umsortieren würdest, dass erst die Einträge mit den Arrays kommen und dann die mit den Strings ... ???

mfg

tami

0 56

Array sowohl nach Schlüssel als auch nach Wert sortieren

Felix Riesterer
  • php
  1. 0
    tami
    1. 0
      Felix Riesterer
      1. 0
        tami
  2. 0
    tami
    1. 0
      Felix Riesterer
      1. 0
        Tom
        1. 0
          Felix Riesterer
  3. 0
    Tom
    1. 0

      sowohl nach Schlüssel als auch nach Wert sortieren, Nachtrag

      Tom
      1. 0
        Felix Riesterer
        1. 0
          Tom
          1. 0
            Tom
            1. 0

              Denkfehler zurückgenommen

              Tom
  4. 0
    molily
    1. 0
      Felix Riesterer
  5. 1
    tami
    1. 0
      Tom
      1. 0

        Closures in PHP

        tami
        1. 0
          Tom
          1. 0

            Closures in PHP vs. Javascript - warum "use" ? @molily

            tami
            1. 0
              Tom
              1. 0
                tami
          2. 0
            dedlfix
          3. 2
            Sven Rautenberg
          4. 0
            molily
            1. 0

              Closures in PHP - PHP ist eine "Scheißsprache" ... ???

              tami
              1. 0
                molily
                1. 0
                  tami
            2. 0

              PHP ist eine Scheißsprache - PHP sucks - so what ...

              tami
              1. 0
                molily
                1. 0
                  tami
              2. 0
                Tom
                1. 0
                  molily
                  1. 0
                    molily
                  2. 0
                    Felix Riesterer
                    1. 0
                      Tom
                2. 0
                  Felix Riesterer
              3. 0

                PHP ... "while it's not perfect, it works..."

                tami
            3. 0
              Sven Rautenberg
              1. 0
                Felix Riesterer
                1. 0
                  Tom
                  1. 0
                    Tom
                2. 0
                  tami
                  1. 0
                    molily
                    1. 0
                      tami
                      1. 0
                        Tom
                      2. 0
                        molily
                        1. 0
                          tami
                          1. 0
                            molily
                            1. 0
                              Tom
                        2. 0
                          Tom
                          1. 0

                            Changelogs von PHP

                            dedlfix
                            1. 0
                              Tom
        2. 0
          tami
    2. 0

      Gelöst! Danke!

      Felix Riesterer