kostenloser Webspace werbefrei: lima-city


Meine erste eigene Klasse - Fragen

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    meron

    meron hat kostenlosen Webspace.

    Hi zusammen

    Ich erstelle derzeit meiner erste eigene Klasse :-)
    In der Klasse soll man direkt Termine an Outlook oder Thunderbird senden können, wie es die ICAL-Spezifikation von RFC vorsieht.

    Die Klasse befindet sich (als txt-Datei) unter meron.lima-city.de/class_vical.txt

    Dabei habe ich eine Frage:
    In der bound()-Funktion (oder jetzt heisst das glaube ich Methode & ich weiss, bound ist eigentlich ein falscher Name, aber das tönt so gut ;-) ) soll der ganze Termin aufgebaut und gesendet werden. Soll/Muss ich nun dort nochmals die ganzen Prüfungen machen (wie es z.B. mit Location gemacht wird) oder sollte dort nur noch mittels einer Foreach-Schleife alles durchlaufen und dardurch der Aufbau automatisch korrekt kommen?

    Zudem:
    In den Tutorials die ich dazu gelesen habe, stand man solle unbedingt error_reporting einschalten, damit auch alles ausgegeben wird, weil man ansonsten Fehler sehr lange suchen könne, insbesondere wenn Variablen nicht richtig initialisiert sind. Das habe ich nun auch gemacht und konnte so auch schon einige Fehler beheben. Die beiden "NOTICE Undefined offset: 0" bringe ich aber nicht weg, kann mir da jemand einen Tipp geben?

    Und generell (nebst dem das mir exceptions fehlen und die Klasse auch erst einigermassen saubere Termine (VEVENT's) hinkriegt):
    Wie findet ihr es, bin ich da auf einem kompletten Holzweg oder sieht das soweit schon mal in Ordnung aus?

    Danke für eure Rückmeldungen :-)

    Gruess
    Meron

    PS (falls hier Neulinge mitlesen): Ich rate dringend davon ab diese Klasse irgendwo produktiv einzusetzen!
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Undefined Offset ist ja auch kein Fehler sondern nur eine Notiz. Die kannst du getrost ignorieren, wenn du die Klasse fertig hast machst du Error Reporting sowieso wieder auf E_ERROR, damit die Benutzer nicht mit Fehlermeldungen attackiert werden
  4. jantede12 schrieb:
    Undefined Offset ist ja auch kein Fehler sondern nur eine Notiz. Die kannst du getrost ignorieren, wenn du die Klasse fertig hast machst du Error Reporting sowieso wieder auf E_ERROR, damit die Benutzer nicht mit Fehlermeldungen attackiert werden

    Unsauberer Code ist und bleibt schlampige Arbeit.

    "NOTICE Undefined offset: 0"
    Diese Notiz erscheint, wenn ein nicht existierender Arrayindex mit einem Wert belegt werden soll.
    In deinem Fall existiert kein key=0 für dein Array.
    Der Fehler (die Notiz) lieg sicherlich in einer Schleife begündet, deren Startwert mit 0 beginnt.


  5. Hallo,

    mir fallen bei deinem Code 2 Sachen auf.

    Zum einen sind deine Einrückungen nicht sehr konsistent, dadurch fällt es schwer den Code zu lesen und zum Anderen sind einige Strings schlicht falsch, oder weshalb sind die Header ab Zeile 333 jeweils durch 2 Zeilen voneinander getrennt und mit einem Haufen sinnloser, teilweise problematischer Leerzeichen versehen? Soweit ich mich erinnere müssten die Header in etwa so aufgebaut sein:
    $headers = "Content-Type: text/calendar; method=REQUEST; charset=utf-8\r\n";
    $headers .= "Content-Language: de-ch\r\n";
    $headers .= "\r\n";

    Ich mag mich zwar irren und gerade bei einer falschen Spec sein, aber ich meine Header werden hier wie auch bei HTTP durch "\r\n" getrennt und zwischen Header und Nutzdaten ist eine leere Zeile, welche ebenfalls so getrennt wird.
    Oder wenn du die sinnvollere, weil einfachere Variante nehmen willst, dann schickst du jeden Header einzeln an den PHPMailer:
    $this->phpmail->AddCustomHeader("Content-Type: text/calendar; method=REQUEST; charset=utf-8");
    $this->phpmail->AddCustomHeader("Content-Language: de-ch");

    Wenn ich die API richtig im Kopf habe ist das möglich und wie gesagt wesentlich sinnvoller, da man sich dann z.B. auch nicht um die Leerzeile kümmern muss.

    Zu guter Letzt noch die Info wie du die Meldung
    NOTICE Undefined offset: 0
    die du z.B. in Zeile 121 bekommst, mit einer einfachen Abfrage nach der Existenz des Schlüssels abfangen kannst:
    // Alte Zeile 121
    if($this->allowedSubType[$subtype])
    // neue Zeile 121
    if(isset($this->allowedSubType[$subtype]) && $this->allowedSubType[$subtype])
    Dann hast du das Problem abgefangen.

    Mit freundlichen Grüßen
  6. Autor dieses Themas

    meron

    meron hat kostenlosen Webspace.

    Danke vielmals für eure Antworten.

    nemoinho schrieb:

    Zum einen sind deine Einrückungen nicht sehr konsistent, dadurch fällt es schwer den Code zu lesen

    Ja, daran muss ich noch arbeiten, mein prodezurales sieht noch schlimmer aus ...

    nemoinho schrieb:
    und zum Anderen sind einige Strings schlicht falsch, oder weshalb sind die Header ab Zeile 333 jeweils durch 2 Zeilen voneinander getrennt und mit einem Haufen sinnloser, teilweise problematischer Leerzeichen versehen?

    Ja, das war wirklich ziemlicher Müll. Tatsache ist, dass ich auch etwas in der phpmailer class herum gefaustet habe, dass die Emails auch direkt als Kalenderelement kommen und nicht als Mail mit Anhang Kalenderelement. Und einfach diese Zeilen konnte ich dort irgendwie nicht unterbringen. Interessanterweise verwarf es mir jeweils das ganze Mail, wenn ich die schön zusammenzog (also die Leerzeichen entfernte) oder separat an phpmailer sandte.
    Ich habe nun aber die Lösung gefunden: Die dort gemacht Definitionen werden schon von phpmailer übernommen. Ich habe einfach meine Erweiterung ISical um den Punkt method=Request ergänzt (das ist der einzige Teil der wohl benötigt wird, damit Outlook daraus auch wirklich einen Termin erstellt ;-)
    nemoinho schrieb:
    Zu guter Letzt noch die Info wie du die Meldung
    NOTICE Undefined offset: 0
    die du z.B. in Zeile 121 bekommst, mit einer einfachen Abfrage nach der Existenz des Schlüssels abfangen kannst:


    Das habe ich nun hinbekommen, besten Dank dafür.

    Ich lade das ganze jetzt nicht nochmals hoch, werde zuerst noch die Spezifikationen besser umsetzen ;-)

    Gruess
    Meron
  7. meron schrieb:
    ... oder sieht das soweit schon mal in Ordnung aus? ...
    yo mey! nicht einmal das kann man mit sicherheit sagen. das problem ist, dass du eine aggregirte klasse drinnen hast, aber leider ohne quellcode! da bräuchte man wirklich hellseherische kräfte.

    und zwar, in zeile 34 steht
    require_once('phpmailer_orig/class.phpmailer.php');
    und genau daran liegt es, dass man hir nicht wirklich ernsthaft helfen kann ;)

    ==== EDIT ====
    also zeile 34 stimmt leider nicht genau, aber es ist ganz in der nähe.

    Beitrag zuletzt geändert: 31.3.2013 0:38:19 von czibere
  8. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!