Object ohne Klasse

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

  • Object ohne Klasse

    Hallo Leute,

    Ist es möglich ein Object ohne ein Klasse zu erstellen?

    zb.:

    PHP-Code:
    $test = {'test1''test2'}

    echo 
    $test->test1 'hallo'
    wäre sowas irgendwie möglich?

    danke, mfg tom

  • #2
    PHP-Code:
    <?php
        $object
    ;
        
    $object->hello 'world';
        
        
    var_dump($object);

    ?>
    Ist in Wirklichkeit aber, wie man sehen kann, eine Objektinstanz der PHP internen Klasse "stdClass".
    [FONT="Helvetica"]twitter.com/unset[/FONT]

    Shitstorm Podcast – Wöchentliches Auskotzen

    Kommentar


    • #3
      Re: Object ohne Klasse

      Original geschrieben von rundmc
      Hallo Leute,

      Ist es möglich ein Object ohne ein Klasse zu erstellen?
      Was willst du damit erreichen?

      Eine Klasse ist quasi die Bauanleitung für Objekte. Wie soll dir PHP ein Objekt "bauen", wenn es keine Anleitung dafür besitzt?
      Klingon function calls do not have “parameters”‒they have “arguments”‒and they always win them!

      Kommentar


      • #4
        Es gibt halt auch anonyme Objekte ... Ohne "Bauanleitung", weil nichts gebaut werden muss. Diese Objekte haben dann natürlich weder irgendwelche Methoden noch private oder protected Properties.
        [FONT="Helvetica"]twitter.com/unset[/FONT]

        Shitstorm Podcast – Wöchentliches Auskotzen

        Kommentar


        • #5
          Original geschrieben von unset
          Es gibt halt auch anonyme Objekte ... Ohne "Bauanleitung", weil nichts gebaut werden muss. Diese Objekte haben dann natürlich weder irgendwelche Methoden noch private oder protected Properties.
          Und natürlich auch keinen Nutzen: Ein Objekt ohne Methoden und ohne Eigenschaften -- welchen konkreten Zweck könnte das schon erfüllen?

          Auch "public properties" müssen (oder sollten) definiert werden.
          Klingon function calls do not have “parameters”‒they have “arguments”‒and they always win them!

          Kommentar


          • #6
            In JavaScript oder ActionScript kann ich sowas ja noch nachvollziehen, aber für sowas gibt es in PHP assoziative Arrays.

            Kommentar


            • #7
              Naja, json_decode gibt per default auch ein anonymes Objekt zurück. Halte ich weder für unsauber noch für schlimm.
              [FONT="Helvetica"]twitter.com/unset[/FONT]

              Shitstorm Podcast – Wöchentliches Auskotzen

              Kommentar


              • #8
                Schlimm finde ich das auch nicht. Aber warum sollte man sowas per Hand erzeugen? Halte ich für weniger sinnvoll, wie in Sprachen, die nativ über keine Hashmap verfügen.

                Kommentar


                • #9
                  PHP-Code:
                  $test = (object) array('test1'=>'bli''test2'=>'bla');
                  $test->test1 'hallo';
                  echo 
                  $test->test1 '<br>';
                  echo 
                  $test->test2 '<br>'
                  mysql_fetch_object() macht auch nix anderes....
                  Zuletzt geändert von combie; 07.04.2009, 17:59.
                  Wir werden alle sterben

                  Kommentar


                  • #10
                    So langsam wissen wir, dass es geht ^^ Aber wieso sollte man das so wollen? Nur weil der Pfeil viel hübscher ist wie der Index-Zugriff? Ist der Zugriff schneller? Gib mir einen Grund...

                    Kommentar


                    • #11
                      Wenn man schon objektorientiert Programmiert, kann man halt eben auch Objekte verwenden statt Arrays. Asoziatve Arrays sind sowieso so ein PHP-Luxus der in vielen anderen Sprachen gar nicht gegeben ist.
                      [FONT="Helvetica"]twitter.com/unset[/FONT]

                      Shitstorm Podcast – Wöchentliches Auskotzen

                      Kommentar


                      • #12
                        Original geschrieben von unset
                        [B]Wenn man schon objektorientiert Programmiert, kann man halt eben auch Objekte verwenden statt Arrays.
                        Eine sauber implementierte Array-Klasse wäre schon nicht schlecht. Aber das gilt ja auch für Strings in PHP -- und da kommt auch fast niemand auf die Idee, die eingebauten Strings durch eine objektorientierte Lösung zu ersetzen.

                        PHP-Code:
                        // Was sieht cooler aus?
                        strlen($string);
                        $string->size();
                        // letzteres würde auch die Unicode-Verrenkungen in PHP6 unnötig machen ... 
                        Asoziatve Arrays sind sowieso so ein PHP-Luxus der in vielen anderen Sprachen gar nicht gegeben ist.
                        Ja, und Objekte sind auch ein Luxus, der in vielen anderen Sprachen nicht gegeben ist -- man denke nur an C, Pascal, die meisten Assembler ...

                        Ernsthaft: Die meisten Scriptsprachen[1] kennen einen zusammengesetzen Datentyp, der mit PHP's Arrays (auch den assoziativen) konkurrieren kann.

                        Und im Gegensatz zu Objekt-Properties ist die Zeichenmenge in Array-Keys nicht auf "/[a-z][a-z0-9_]*/i" beschränkt.

                        --
                        [1] VBScript könnte da eine Ausnahme sein. Da gibts assoziative Arrays (glaube ich) nur über ein extra einzubindendes Objekt.
                        Klingon function calls do not have “parameters”‒they have “arguments”‒and they always win them!

                        Kommentar


                        • #13
                          Wenn man schon Objektorientiert programmiert, sollten solche Parameteranhäufungen auch korrekt in einer Klasse beschrieben werden. Oder wenigstens eine eigene Collection-Klasse, a la ArrayObject oder was eigenes. Aber ein anonymes Objekt zu verwenden, weil das ganze objektorientierte und nicht arrayorientierte Programmierung heißt, ist kein Argument.

                          Kommentar


                          • #14
                            Original geschrieben von fireweasel
                            Eine sauber implementierte Array-Klasse wäre schon nicht schlecht. Aber das gilt ja auch für Strings in PHP -- und da kommt auch fast niemand auf die Idee, die eingebauten Strings durch eine objektorientierte Lösung zu ersetzen.
                            Mit ArrayObject innerhalb der SPL gibt es eine sauber implementierte Array-Klasse in PHP.

                            Meinetwegen können wir das Pferd auch gerne von hinten aufsatteln: Was spricht gegen die Verwendung von anonymen Objekten? "Sollte man nicht weil [sonst geschieht das Ungeheure]" zählt hier doch genau so wenig als Argument.

                            Bei einem endlichen Haufen von (assoziativen) Daten, der ansonsten weder näher beschrieben werden muss und auch keine auf ihn anzuwendenen Operationen nötig macht, ist ein solches anonymes Objekt eben die Wahl, IMHO

                            Im Grunde habe ich meine abschließende Meinung dazu aber auch schon gebloggt: Da gibt es kein richtig oder falsch.
                            [FONT="Helvetica"]twitter.com/unset[/FONT]

                            Shitstorm Podcast – Wöchentliches Auskotzen

                            Kommentar

                            Lädt...
                            X