Modulshop - Eine große Auswahl an neuen und hilfreichen Modulen für die modified eCommerce Shopsoftware
Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: OT von hpzeller aus Thema "MODUL: Artikel Anfrage" ausgegliedert

    hpzeller

    • Experte
    • Beiträge: 4.129
    • Geschlecht:
    Hallo Community

    Bei diesem Thread handelt es sich um eine Ausgliederung des off-topic Beitrags hier von hpzeller  aus dem Thread "MODUL: Artikel Anfrage".

    Gruss
    Hanspeter

    Linkback: https://www.modified-shop.org/forum/index.php?topic=42767.0

    hpzeller

    • Experte
    • Beiträge: 4.129
    • Geschlecht:
    Folgende Antwort bezieht sich auf diese Antwort hier.

    Ich denke isset($articelId) in if (isset($articelId) && $articelId != '') wurde genau deswegen eingefügt, um eine etwaige Fehlermeldung bei Nichtvorhandensein von Variablen zu verhindern.

    Begründung:
    In der Datei modified-shop_1.06-r4642_SP3_install\modified-shop_1.06-r4642_SP3_install\shoproot\account_edit.php Zeile 88 steht noch dieser Code,

    Code: PHP  [Auswählen]
    if($vatID->vat_info['error']==1){

    aber in der Datei modified-shop_2.0.7.2-r14622_install\shoproot\account_edit.php Zeile 111 dann dieser.

    Code: PHP  [Auswählen]
    if (isset($vatID->vat_info['error']) && $vatID->vat_info['error']==1){

    Gruss
    Hanspeter

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.988
    • Geschlecht:
    Da du auf einen Post meiner Wenigkeit verlinkst, auf welchen du sagst geantwortet zu haben, hier noch eine kurze Stellungnahme:
    Mir ist das klar was du schreibst. Ich habe auf RobinTheHoods  Einlassungen reagiert, welcher in Artikel Anfrage | Antwort #491 Folgendes empfahl:
    Hallo und guten Abend,

    da ich das hier gesehen habe und gern etwas dazu sage würde, weil mir das öfters mal auffällt. Ich persönlich würde auch

    Code: PHP  [Auswählen]
    if (!empty($article_id)) {
        ...
    }

    nicht empfehlen. Natürlich erfüllt es hier seine Aufgabe, aber ich würde gerne einmal folgendes zeigen, um es als Anregung zu verwenden:

    Code: PHP  [Auswählen]
    <?php

    $articleId = 42;

    ...
    // do a lot of things
    ...


    if (!empty($articelId)) {
        echo 'Ein rotes Fahrrad';
    }

    Der Text "Ein rotes Fahrrad" wird uns NIE angezeigt egal welche $articleId wir wählen und wir haben mit der Funktion empty() sogar noch zusätzlich dafür gesorgt, dass uns PHP jetzt nicht einmal mehr mitteilt, was wir falsch gemacht haben.

    Mit besten Grüßen und einen schönen Abend
    Robin

    Ich habe versucht ihm nachträglich in dem von dir zitierten Post zu widersprechen.

    Gruß,
    noRiddle

    hpzeller

    • Experte
    • Beiträge: 4.129
    • Geschlecht:
    Hallo noRiddle,

    dann habe ich deine Antwort wohl falsch verstanden.

    Inzwischen habe ich die Antwort #491 von RobinTheHood noch mal genau durchgelesen und dabei festgestellt, dass er ja beide Varianten, also sowohl diese,

    Code: PHP  [Auswählen]
    if (isset($article_id) && $article_id != '') {

    als auch diese,

    Code: PHP  [Auswählen]
    if (!empty($article_id)) {

    nicht empfiehlt.

    Gruss
    Hanspeter

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.988
    • Geschlecht:
    Schließt du das aus dem "auch" bei "würde auch .... nicht empfehlen" ?
    Ich sehe so recht nichts worauf sich "auch" bezieht.
    Wenn es so gemeint war wie du sagst, was soll denn dann eine Lösung sein ?

    Gruß,
    noRiddle

    RobinTheHood

    • Experte
    • Beiträge: 210
    • Geschlecht:
    Guten Abend,

    ich selbst verwende isset() und empty() auch viel. In Programmiersprachen wie C, C++ und Java kann ich keine Variable verwenden, die nicht vorher deklariert wurde. Hier lassen sich Fehler bereits statisch vor der Ausführung des Codes finden. Deswegen finde ich es spannend drüber nachzudenken, wie man eine ähnliche formale Korrektheit mit PHP erreichen könnte.

    Ich kann das selbst gar nicht so gut beschreiben. Die folgenden Links zeigen vielleicht, was ich über die Funktion empty() als Anregung geben wollte.


    Wie bereits erwähnt, bin ich nicht gegen die Verwendung. Ich finde es nur nicht schlecht, wenn man mögliche Fallstricke kennt.

    Mit besten Grüßen und einen schönen Sonntag
    Robin

    hpzeller

    • Experte
    • Beiträge: 4.129
    • Geschlecht:
    Hallo noRiddle,

    ja genau, aus dem Wort "auch" schliesse ich, dass er beide Varianten nicht empfiehlt.

    Gruss
    Hanspeter

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.988
    • Geschlecht:
    @hpzeller
    Verstehe.

    @RobinTheHood
    Bzgl. deiner geposteten Links:
    Interessante Ideen und Diskussionen.

    Es düfte keine allgemeingültige Lösung geben, man sollte schlicht wissen was man tut bei Verwendung irgendeiner der Varianten.
    Expliziterer Code
    !== NULL
    !== 0
    !== ''
    !== false
    ist aussagekräftiger und weniger fehleranfällig.

    In der Tat habe ich mich oft bei der Verwendung von !empty()  unwohl gefühlt weil es so viel bedeuten kann.

    Vielen Dank jedenfalls für das Aufbringen des Themas und für das Bewußtmachen, das ist immer mal wieder erhellend.

    Das Thema erinnert mich übrigens an dieses Problem:
    >> Seltsames PHP-Problem bzgl. typen-sicherem Vergleich
    Seit dem achte ich mehr und mehr darauf ganz genau zu sein und wo möglich Operatoren zu verwenden die auch auf Typengleichheit gehen. Deshalb erinnert es mich an das was ich oben bei "Expliziter Code..." geschrieben habe.

    Gruß,
    noRiddle
    13 Antworten
    11791 Aufrufe
    10. Juni 2015, 17:31:01 von fishnet
    1 Antworten
    1921 Aufrufe
    29. Dezember 2012, 15:21:00 von noRiddle (revilonetz)
    0 Antworten
    3699 Aufrufe
    01. August 2012, 18:09:11 von olly_49