instanznummer eines objekts herausfinden

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

  • #16
    so richtig verstehe ich das aber immer noch nicht... was soll ich mit dieser zahl?

    Kommentar


    • #17
      Hi

      es gäbe noch eine möglichkeit aber die macht im
      endeffekt auch nur veränderungen an deinen klassen nur
      eben globaler. Das stichwort ist AOP.
      Es gibt für php verschiedene ansätze.
      aspectPHP
      aoPHP

      greets
      (((call/cc call/cc) (lambda (x) x)) "Scheme just rocks! and Ruby is magic!")

      Kommentar


      • #18
        hab nen weg gefunden

        PHP-Code:
        function get_instance_no(&$obj) {
            if (
        is_object($obj)) {
                
        ob_start();
                echo 
        $obj;
                
        $s ob_get_contents();
                
        $i substr($sstrpos($s'#') + 1);
                
        ob_end_clean();
                return 
        intval($i);
            }
            else {
                return 
        false;
            }


        is nur spaß!!!
        edit: aber eigendlich... funktionieren tuts...
        Zuletzt geändert von MarkusW; 23.04.2006, 15:15.

        Kommentar


        • #19
          Alrik:
          <<Diese Counter funktionalität direkt in die Klasse einzubauen hat eben den Nachteil, dass es nicht wiederverwertbar ist und ich jeder Klasse diesen Teil einbauen müsste.>>

          nicht Unbedingt!
          Dafür ist auch Vererbung da, aber in manchen Fällen (wegen ein-facher Vererbung) muss man eben ein anderen Weg gehen
          Slava
          bituniverse.com

          Kommentar


          • #20
            Original geschrieben von MarkusW
            hab nen weg gefunden

            PHP-Code:
            function get_instance_no(&$obj) {
                .....} 

            Das sieht doch zimmlich ähnlich meinem Spass aus
            Zuletzt geändert von Slava; 23.04.2006, 15:26.
            Slava
            bituniverse.com

            Kommentar


            • #21
              tatsache! das hab ich wohl ignoriert

              Kommentar


              • #22
                Original geschrieben von Slava
                nicht Unbedingt!
                Dafür ist auch Vererbung da, aber in manchen Fällen (wegen ein-facher Vererbung) muss man eben ein anderen Weg gehen [/B]
                Für sowas ist Vererbung nicht gedacht! Außerdem würde es keinen Sinn machen, von einer Mysql Klasse zu erben, um diese Funktionalität des Counters dann für ein Kundendatenobjekt zu haben.
                Schließlich ging es bei deiner Version um eine konkrete Implementierung in den zu benutzenden Klassen.
                Und diese Massenvererbung die dann gemacht werden müsste, spricht wieder gegen deine Lösung und für meine.

                Kommentar


                • #23
                  Original geschrieben von Alrik
                  Für sowas ist Vererbung nicht gedacht!
                  kommt drauf an, wobei ich in diesem Falle wohl erstmal zustimme ...



                  btw. hier noch Spielerei mit der ReflectionAPI, erlaubt dann auch das instantiieren eines Objektes wo der Konstruktor Parameter erwartet
                  PHP-Code:
                  <?php

                  class test {
                      public 
                  $test;
                      
                      public function 
                  __construct($par) {
                          
                  $this->test $par;
                      }
                      public function 
                  gib() {
                          return 
                  $this->test;
                      }
                  }


                  class 
                  class_container {
                      static 
                  $nummer;
                      
                      static function 
                  get_obj($name$pars = array()) {
                          if (!isset(
                  self::$nummer[$name])) {
                              
                  self::$nummer[$name] = 0;
                          }
                          
                  $objekt call_user_func_array(
                              array(new 
                  ReflectionClass($name), 'newInstance'), $pars);
                          
                  $objekt->instanznummer = ++self::$nummer[$name];
                          return 
                  $objekt;
                      }
                  }

                  $objekt class_container::get_obj('test', array('1'));
                  echo 
                  $objekt->gib() . '<br />';

                  $objekt2 class_container::get_obj('test', array('2'));
                  echo 
                  $objekt2->gib() . '<br />';

                  ?>

                  Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                  bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                  Wie man Fragen richtig stellt

                  Kommentar


                  • #24
                    ich möchte bitte, dass ein Meister dem Newbie erklehrt, warum in diesem Fall eine Vererbung nichts taugt!

                    wenn bei der Vererbter klasse kein constructor defeniert ist, dann wird es sofort und problemlos funktionieren.
                    Wenn du aber construktor in vererbter klasse defenierst, dann ist es auch nicht schwer einmal
                    parent::__construct();
                    zu schreiben.

                    aber factory mit Reflections-api finde ich cool, der arbeitsgeber wird einfach Angst haben mich zu feuern, weil ohne mich wird ein andere 2 Monaten versuchen meine code zu verstehen
                    Slava
                    bituniverse.com

                    Kommentar


                    • #25
                      Du redest irgendwie bezuglosen Müll Slava!?!
                      Ich bin nicht derjenige, der Vererbung in Erwägung gezogen hat, sondern du.
                      Auf meine Argumente gehst du dann auch nicht ein und schreibst einfach irgendwelche Begriffe und Sätze, die du irgendwo mal gelesen hast, hin.
                      Warum du dazu noch zum Thema Konstuktor bei Vererbung kommst, wo du noch selber sagst, das Vererbung nicht angebracht ist...

                      Kommentar


                      • #26
                        hi Alrik!
                        bist du ein Master?
                        Ich wollte die Erklärung von Master hören.
                        Und warum du dich so angegriffen fühlst weis ich recht nicht?
                        Die Lösung von Fragesteller haben wir schon gesehen, und jetzt führen wir einfach allgemeine Gespreche zu Objectorientierung.
                        Wenn ich mich irgendwie falsch ausgedrückt habe, was auch vorkommen kann (deutsch ist nicht meine Mutersprache), dann bitte ich um Entschuldigung.
                        grüße Slava.
                        Slava
                        bituniverse.com

                        Kommentar


                        • #27
                          Ich dachte das "Newbie" wäre auf mich bezogen. Trotzdem hast du zu meinen Aussagen nie wirklich bezug genommen. Aber ist auch nicht so wichtig...

                          Kommentar


                          • #28
                            Original geschrieben von Slava
                            ich möchte bitte, dass ein Meister dem Newbie erklehrt, warum in diesem Fall eine Vererbung nichts taugt!
                            Dann zitiert der "Meister" ( ) sich mal selber:
                            Original geschrieben von ghostgambler
                            kommt drauf an, wobei ich in diesem Falle wohl erstmal zustimme ...
                            Ich finde es persönlich einfach häßlich alle Klassen von einer Basis-Klasse abzuleiten und vom Gefühl her wird da der bytecode und somit auch der runtime Source größer ... müsste man mal ausprobieren, hab ich aber gerade keine Lust und keine Zeit zu

                            aber factory mit Reflections-api finde ich cool, der arbeitsgeber wird einfach Angst haben mich zu feuern, weil ohne mich wird ein andere 2 Monaten versuchen meine code zu verstehen
                            so ein SCHWACHSINN, den Codefitzel habe ich bei Google auf der ersten Seite zum dynamischen Erstellen von Objekten eine Hand voll Male gefunden, weil dieser von Zend kommt und somit schneller durch die Hände von Programmierern gereicht wird als die Tageszeitung...
                            Abgesehen davon reicht ein Blick in die Manual zum Thema ReflectionAPI um rauszufinden, dass das Ding eine Instanz zurückliefert ~_~

                            Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                            bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                            Wie man Fragen richtig stellt

                            Kommentar


                            • #29
                              Original geschrieben von ghostgambler
                              Ich finde es persönlich einfach häßlich alle Klassen von einer Basis-Klasse abzuleiten und vom Gefühl her wird da der bytecode und somit auch der runtime Source größer ... müsste man mal ausprobieren, hab ich aber gerade keine Lust und keine Zeit zu
                              Das glaube ich erhlich gesagt nicht. Ich vermute dass der php-parser intern
                              auch eine art vtable hat mit der er entscheiden kann welche methode denn
                              jetzt gemeint ist. Ist aber wie gesagt nur eine vermutung.
                              Btw. kann es ein ziemlicher vorteil sein wenn alle klassen von einer basis
                              erben. Viele gui frameworks gehen diesen weg und nicht nur die.

                              greets
                              (((call/cc call/cc) (lambda (x) x)) "Scheme just rocks! and Ruby is magic!")

                              Kommentar


                              • #30
                                Original geschrieben von closure
                                Btw. kann es ein ziemlicher vorteil sein wenn alle klassen von einer basis
                                erben. Viele gui frameworks gehen diesen weg und nicht nur die.
                                Die GUIs sind dann aber auch nicht in php programmiert, d.h. ob da die eine oder andere Basisklasse mehr ist macht nicht so den Performanceunterschied...
                                ich bin ehrlich, ich würde meine Lösung so auch nicht verwenden, aber die mit den Ableitungen auch nicht. Ich würde nach einer Lösung suchen, die es mir ermöglich alles was unnötig ist in der Produktion rauszuwerfen und zu den unnötigen Sachen gehört z.B. die Instanznummer-Klasse

                                Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                                bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                                Wie man Fragen richtig stellt

                                Kommentar

                                Lädt...
                                X