klassenaufruf

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

  • klassenaufruf

    gibt es eine möglichkeit in php, wo ich einen klassenaufruf zurückverfolgen kann? ($variable = new klassenname(); )

    also, dass ich dateiname sowie zeilennummer dieser datei bei einem fehler ausgegeben bekomme?


    die funktion debug_backtrace hat nicht wirklich weitergeholfen.

  • #2
    Re: klassenaufruf

    Original geschrieben von iamhermes
    gibt es eine möglichkeit in php, wo ich einen klassenaufruf zurückverfolgen kann? ($variable = new klassenname(); )

    also, dass ich dateiname sowie zeilennummer dieser datei bei einem fehler ausgegeben bekomme?


    die funktion debug_backtrace hat nicht wirklich weitergeholfen.
    eigentlich ist die Funktion gut (und eigentlich auch das einzige um die gewünschten Angaben zu bekommen...)
    wenn dir die Ausgabe nicht gefällt (oder sie dir zu kompliziert ist) UND du php in der Version 5 hast, kannst du ja debug_print_backtrace() benutzen

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

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

    Kommentar


    • #3
      naja, dann werd ich mal meinen apache auf php5 umstellen.

      Kommentar


      • #4
        Wie wäre es mit dem durchreichen von __FILE__ und __LINE__ ?
        SQL Injection kitteh is...

        Kommentar


        • #5
          Original geschrieben von Seikilos
          Wie wäre es mit dem durchreichen von __FILE__ und __LINE__ ?
          da ist debug_backtrace besser >.>

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

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

          Kommentar


          • #6
            ne frage, wie geht das mit dem ____file und ____line?


            also, das debug_print_backtrace ist wie ich festgestellt hab, ne etwas einfacher zu lesende ausgabe mit etwas weniger infos
            Zuletzt geändert von iamhermes; 28.01.2006, 18:02.

            Kommentar


            • #7
              Original geschrieben von iamhermes
              ne frage, wie geht das mit dem ____file und ____line?
              Wo habe ich das geschrieben?


              Einfach mal __FILE__ oder __LINE__ in echo packen und gucken.

              Nicht als String!
              SQL Injection kitteh is...

              Kommentar


              • #8
                __file__ gibt mir nur meine klassen php zurück. und __line__ nur die zeile, in der __line__ aufgerufen wird

                Kommentar


                • #9
                  Weiß ich, sagte ja auch nicht, dass es Gold wert wäre.
                  Du kannst dir allerdings auch selber einen Controller für dein Debugging basteln, musst dann immer schöm protokolieren, wer was wie aufruft.
                  Also, es lebe PHP 5
                  SQL Injection kitteh is...

                  Kommentar


                  • #10
                    ich habe eine mysql klasse. diese ist nur dafür da, einen querystring aufzunehmen.

                    wenn die klasse geöffnet wird, wird auch der query string übergeben.
                    mit dem querystring wird auch gleich nen query gemacht. sollte hier ein fehler seien, wird bei mir das script komplett angehalten, und der fehlerhafte mysql befehl wird ausgegeben.


                    dadurch dass ich nicht weiß, von wo dieser fehlerhafte query kommt, will ich unbedingt die zeile für den aufruf der klasse wissen sowie die datei von der der query kam.

                    naja, das einzigste was ich da könnte, wäre das durchreichen beim klassenaufruf von line und file


                    aber falls jemand noch ne andere idee hat, immer her damit

                    Kommentar


                    • #11
                      query or die(__LINE__)
                      oder query or meineFehlerBehandlungsFunktion
                      SQL Injection kitteh is...

                      Kommentar


                      • #12
                        Original geschrieben von Seikilos
                        query or die(__LINE__)
                        geht nicht, da bei line die aktuelle zeile komt.

                        oder query or meineFehlerBehandlungsFunktion
                        ist schon drinnen. das ist die fehlerausgabe

                        Kommentar


                        • #13
                          Also du hast das "or" bereits drinne und hast immernoch Probleme mit dem backtracking?
                          SQL Injection kitteh is...

                          Kommentar


                          • #14
                            Original geschrieben von iamhermes
                            also, das debug_print_backtrace ist wie ich festgestellt hab, ne etwas einfacher zu lesende ausgabe mit etwas weniger infos
                            das Ding beinhaltet alle Infos nach denen du hier fragst, und damit ist der Thread für mich beendet *verzieht sich weil keine Lust mehr hat einen billigen workaround für eine existente Funktion zu schreiben*

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

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

                            Kommentar


                            • #15
                              folgendes. die klassen die ich hab sind in inc.class.php gespeichert.

                              die klasse locator wird in der index.php geöffnet.
                              die klasse loc_sql jedesmal vor dem mysql query. die klassenvariable wird danach wieder per unset entfernt.
                              die index.php enthält keinen einzigsten mysql aufruf, lediglich den klassenaufruf für die klasse locator
                              je nach dem welche seite verlang wird, wird die entsprechende datei included. in diesen werden dann die html teilstückchen generiert


                              das andere print-backtrace liefert etwas weniger infos.

                              #0 loc_sql->loc_sql(SELECT
                              db1.ort as 'Ort',
                              db1.plz as 'PLZ',
                              db2.member_id as 'ID',
                              db1.horizontal as 'horizontal',
                              db1.vertikal as 'vertikal'
                              FROM
                              orte db1,
                              orte_user db2
                              WHERE
                              db1.ort_id = db2.location AND
                              db2.member_id = 1 called at [F:\serverroot\locator\inc.class.php:234]
                              #1 locator->member() called at [F:\serverroot\locator\inc.class.php:115]
                              #2 locator->locator() called at [F:\serverroot\locator\index.php:8]



                              das debug_backtrace bringt folgendes:


                              Array
                              (
                              [0] => Array
                              (
                              [file] => F:\serverroot\locator\inc.class.php
                              [line] => 234
                              [function] => loc_sql
                              [class] => loc_sql
                              [type] => ->
                              [args] => Array
                              (
                              [0] => SELECT
                              db1.ort as 'Ort',
                              db1.plz as 'PLZ',
                              db2.member_id as 'ID',
                              db1.horizontal as 'horizontal',
                              db1.vertikal as 'vertikal'
                              FROM
                              orte db1,
                              orte_user db2
                              WHERE
                              db1.ort_id = db2.location AND
                              db2.member_id = 1;
                              )

                              )

                              [1] => Array
                              (
                              [file] => F:\serverroot\locator\inc.class.php
                              [line] => 115
                              [function] => member
                              [class] => locator
                              [type] => ->
                              [args] => Array
                              (
                              )

                              )

                              [2] => Array
                              (
                              [file] => F:\serverroot\locator\index.php
                              [line] => 8
                              [function] => locator
                              [class] => locator
                              [type] => ->
                              [args] => Array
                              (
                              )

                              )

                              )


                              dieses bringt mich nun nicht wirklich weiter bzw enthält nicht die infos die ich will.
                              wo der fehler liegt weiß ich, aber nirgends in den infos ist der ursprung dieses fehlers zu sehen.
                              Zuletzt geändert von iamhermes; 28.01.2006, 19:03.

                              Kommentar

                              Lädt...
                              X