Michael: Fehler unterdrücken mit @, oder die richtige Art dies zu tun

Ich lese über SELECt meine MYsql Datenbnak aus und habe die Inhalte in einenen Objekt.

$treffer->name
$treffer->computer

diese gebe ich dann aus...

echo 'Die Fee hat heisst '.$treffer->name.' und arbeitet mit einem '.$treffer->computer;

Soweit Ok.

Jetzt möchte ich meine Ausgabetexte in eine Language Datei schreiben, so das ich praktisch den Text und den Code trenne.

$lang-satz ='Die Fee hat heisst '.$treffer->name.' und arbeitet mit einem '.$treffer->computer;

Da ich die Language Variablen am Anfang der Seite per Include lade, habe ich die Daten noch nicht aus der Datenbank gelesen. So das ich eine Warnung bekomme.

Notice: Undefined variable:

Notice: Trying to get property of non-object in

Diese möchte ich aber nicht, kann ich so den Fehle runterdrücken?

$lang-satz ='Die Fee hat heisst '.@$treffer->name.' und arbeitet mit einem '.@$treffer->computer;

Oder gibt es eine andere Möglichkeit, am Seitenanfang die Language Dateien einlesen, ohne Fehlerausgabe?

Michael

  1. Hallo

    Ich lese über SELECt meine MYsql Datenbnak aus und habe die Inhalte in einenen Objekt.

    $treffer->name
    $treffer->computer

    diese gebe ich dann aus...

    echo 'Die Fee hat heisst '.$treffer->name.' und arbeitet mit einem '.$treffer->computer;

    Soweit Ok.

    Jetzt möchte ich meine Ausgabetexte in eine Language Datei schreiben, so das ich praktisch den Text und den Code trenne.

    $lang-satz ='Die Fee hat heisst '.$treffer->name.' und arbeitet mit einem '.$treffer->computer;

    Da ich die Language Variablen am Anfang der Seite per Include lade, habe ich die Daten noch nicht aus der Datenbank gelesen. So das ich eine Warnung bekomme.

    Notice: Undefined variable:

    Notice: Trying to get property of non-object in

    Klar, du versuchst, Daten in den Text einzufügen, die du zu diesem Zeitpunkt noch garnicht aus der DB gelesen hast.

    Diese möchte ich aber nicht, kann ich so den Fehle runterdrücken?

    $lang-satz ='Die Fee hat heisst '.@$treffer->name.' und arbeitet mit einem '.@$treffer->computer;

    Oder gibt es eine andere Möglichkeit, am Seitenanfang die Language Dateien einlesen, ohne Fehlerausgabe?

    Das kannst du mit Templates erreichen. In der Sprachdatei sollte in etwa folgendes stehen:

    $lang-satz ='Die Fee hat heisst {Name} und arbeitet mit einem {Computer}';

    Das Format '{Schluesselname}' ist hier nur ein Vorschlag. Es gibt auch andere Formate (z.B. '<%Schluesselname%>', '[Schluesselname]', etc. pp.). Wenn du nun die Daten aus der DB gelesen hast, fügst du die Fundstellen mit einer Stringersetzung z.B. mit str_replace in das Template ein.

    Tschö, Auge

    --
    Verschiedene Glocken läuteten in der Stadt, und jede von ihnen vertrat eine ganz persönliche Meinung darüber, wann es Mitternacht war.
    Terry Pratchett, "Wachen! Wachen!"
    ie:{ fl:| br:> va:) ls:[ fo:) rl:( ss:| de:> js:| zu:}
    Veranstaltungsdatenbank Vdb 0.3
  2. Mahlzeit,

    Da ich die Language Variablen am Anfang der Seite per Include lade, habe ich die Daten noch nicht aus der Datenbank gelesen. So das ich eine Warnung bekomme.

    Kannst du die Sprachdatei nicht erst später laden, wenn das Objekt existiert?

    Auch kannst du dir mal Gettext ansehen, dazu gibts auch nen Fallback, falls gettext nicht auf dem Server installiert ist.

    --
    42
  3. Wuah... wenn ich schon lese Fehler unterdrücken.
    Wozu werden Fehler geworfen? Garantiert nicht um diese zu unterdrücken! Gut okay im Produktivumfeld sollten Fehler geloggt aber nicht geworfen werden. In deinem Testumfeld solltest du jedoch darauf achten, dass keine Fehler geworfen werden. Das erreichst du mit dem richtigen Konzept und den passenden Prüfungen isset( $variable ).

    Am Ende passiert ein gravierender Fehler. Doch keiner weiß wieso, da einfach alles unterdrückt wird.

    Notice: missing signature