Ankündigung

Einklappen
Keine Ankündigung bisher.

PHP 5.3 Datenstrukturen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • PHP 5.3 Datenstrukturen

    @mod: Nach Bedarf in Offtopic verschieben, dachte mir könnte auch hier passen

    PHP: Datastructures - Manual

    Ich hab mir grad ein wenig die Neuerungen von PHP5.3 angesehn und bin auf diese Listen gestoßen. Ich fragte mich auch, ob es nicht eine OOP-Version von Arrays gibt. Gibt es: PHP: ArrayObject - Manual
    Diese Klassen würden sich ja auch als Eltern für eigene Grupperiungen von Objekten eigenen, was haltet ihr davon? Gibt es irgendwelche Erfahrungen? Wie ist die Performance?

  • #2
    Ich fragte mich auch, ob es nicht eine OOP-Version von Arrays gibt.
    Ähm selbe Seite?! PHP: SplFixedArray - Manual

    ArrayObject und Iterator sind schon was älter.

    ArrayIterator::current

    (PHP 5 >= 5.1.0)
    ArrayObject::__construct

    (PHP 5 >= 5.1.0)
    ArrayAccess:ffsetExists

    (PHP 5 >= 5.1.0)
    [COLOR="#F5F5FF"]--[/COLOR]
    [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
    [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
    [COLOR="#F5F5FF"]
    --[/COLOR]

    Kommentar


    • #3
      Beim SplFixedArray behauptet einer in den Kommentaren, die seien schneller als normale PHP-Arrays. Ich weiß von den Iteratoren noch, dass sie extrem langsam sind (waren?), weil sie in PHP implementiert sind (again: waren?). Aber meine Informationen scheinen da auch nicht mehr so neu zu sein und die gerade verlinkte SPL-Doku wird im PHP-Handbuch als "legacy" angegeben.

      Was mich gerade in seinen Bann zieht, ist das hier: PHP: SPL Types - Manual. "Objekt-Wrapper" für primitive Datentypen? Die Richtung gefällt mir.

      Kommentar


      • #4
        "Objekt-Wrapper" für primitive Datentypen? Die Richtung gefällt mir.
        Wobei Wrapper hier auch wie ein Synonym für Langsamkeit klingt.
        [COLOR="#F5F5FF"]--[/COLOR]
        [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
        „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
        [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
        [COLOR="#F5F5FF"]
        --[/COLOR]

        Kommentar


        • #5
          Zitat von nikosch Beitrag anzeigen
          Ähm selbe Seite?! PHP: SplFixedArray - Manual

          ArrayObject und Iterator sind schon was älter.
          Danke!

          Beim SplFixedArray behauptet einer in den Kommentaren, die seien schneller als normale PHP-Arrays. Ich weiß von den Iteratoren noch, dass sie extrem langsam sind (waren?), weil sie in PHP implementiert sind (again: waren?). Aber meine Informationen scheinen da auch nicht mehr so neu zu sein und die gerade verlinkte SPL-Doku wird im PHP-Handbuch als "legacy" angegeben.
          Ah. Gut zu wissen.

          Letztlich entscheide ich mich dann dafür. Muss mal sehen wie ich das genau angehe.
          Gibt es für die StrongTypes da noch irgendwas, das man wissen könnte? Operatoroverloading gibt es ja noch nicht in PHP, daher seh ich da keinen Sinn, das zu verwenden.. ich mag eigentlich die dynamischen Typen von PHP...

          Kommentar


          • #6
            Hatte vor kurzem Array mit SplFixedArray verglichen. SplFixedArray ist nicht nur schneller, es braucht auch deutlich weniger Speicher!

            5000000 Schleife erstellen und dann mit isset() auf den letzten Eintrag prüfen

            SplFixedArray in ca. 5 Sekunden mit 180 MB
            Array in ca 14 Sekunden mit 400MB
            DevBlog|3D Online-Shopping|Xatrium

            Kommentar


            • #7
              Naja gut, ein nicht-dynamischer Index ist aber auch ein echter Nachteil
              [COLOR="#F5F5FF"]--[/COLOR]
              [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
              „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
              [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
              [COLOR="#F5F5FF"]
              --[/COLOR]

              Kommentar


              • #8
                Mh.. also nach oben könnte man ihn ja recht leicht öffnen.
                PHP-Code:
                class DynamicSplArray extends SplFixedArray
                {
                    public function 
                offsetSet  $index$newval )
                    {
                        if (
                $index $this->getSize()) {
                             
                $this->setSize($index);
                        }
                        return 
                parent::offsetSet($index$newval);
                    }
                    
                // evtl. weitere Anpassungen

                Damit könnte man das Array beliebig verlängern, wenn auch recht umständlich und ineffizient, trotzdem wäre es ein dynamisches Array
                Die meisten Exceptions würden so übrigens immer noch gewollt auftreten (bei invalidem $index).

                Bekommen wir eig. mit PHP bald ein zweites Java? Ich hab gehört mit PHP6 könnte return-Typehinting kommen. Interfaces und Klasses haben wir ja schon..

                Kommentar


                • #9
                  Die dynamische Erweiterung eines SplFixedArrays hatte ich auch getestet, lag bei doppelter Zeit eines normalen Arrays.

                  Es gibt immer mal Stellen an denen ich ein Array mit nicht-dynamischem Index gebrauchen kann, daher wollte ich wissen ob sich ein FixedArray auszahlt und machte den Vergleichstest. Ich finde es lohnt sich genauer abzuwägen ob man ein simples Array einsetzt oder es für den Zweck nicht auch einfach nur ein FixedArray tut
                  DevBlog|3D Online-Shopping|Xatrium

                  Kommentar


                  • #10
                    Würdet ihr dann für den Fall eines dynamischen Arrays ArrayObject verwenden? Ich finde das besser die Funktionen direkt auf das Array anwenden zu können. Ich meine ich mag die objektorientierte Schreibweise...

                    Kommentar


                    • #11
                      Zitat von mermshaus Beitrag anzeigen
                      weil sie in PHP implementiert sind (again: waren?).
                      ich war der meinung aufgeschnappt zu haben das im neuem php
                      die meisten php implementierten teile, durch c teile ersetzt wurden

                      bin mir dabei aber nicht ganz sicher
                      signatur was ist das denn,
                      davon hab ich noch nie gehört

                      Kommentar


                      • #12
                        Wenn da jetzt mal nicht was mit Python verwechselt wurde. Kann aber sein, dass die PHP-Macher die selbe Erfahrung teilen mussten.
                        [COLOR="#F5F5FF"]--[/COLOR]
                        [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                        „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                        [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                        [COLOR="#F5F5FF"]
                        --[/COLOR]

                        Kommentar


                        • #13
                          Nur weil es auf der helly-seite ein paar Ansätze für ein paar Klassen in PHP gibt, bedeutet das nicht dass die in PHP implementiert sind. Das sind Beispiele um auch z.b. zu sehen wie man selbst eine Auf eine der vorhandenen Klassen und Interfaces aufsetzende Implementierung basteln kann.

                          Dinge wie Interfaces, Iteratoren und soweiter liesen sich in PHP wohl auch kaum selbst schreiben wenn der Core es nicht kennt/kann.

                          Die SPL ist in C geschrieben wie der Rest von PHP.

                          PHP Object-Oriented Solutions - Google Bücher
                          What sets SPL apart from other framewors ist tat it's written in C. SPL classes are part of the PHP core engine, so they run much faster than frameworks written in PHP code.
                          [URL="http://www.robo47.net"]robo47.net[/URL] - Blog, Codeschnipsel und mehr
                          | :arrow: [URL="http://www.robo47.net/blog/192-Caching-Libraries-and-Opcode-Caches-in-php-An-Overview"]Caching-Klassen und Opcode Caches in php[/URL] | :arrow: [URL="http://www.robo47.net/components"]Robo47 Components - PHP Library extending Zend Framework[/URL]

                          Kommentar

                          Lädt...
                          X