Ankündigung

Einklappen
Keine Ankündigung bisher.

PHP Syntax verbessern.

Einklappen

Neue Werbung 2019

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

  • PHP Syntax verbessern.

    ich habe 2 fragen, einmal ergibt es sich sehr häufig, dass ich viele bedingungen an eine variable setze, z.b.

    1. frage

    if(!isset($_GET['haendler']) or !is_numeric($_GET['haendler']) or ...)
    gibt es hier ein workaround/funktion die mir ermöglicht einmalig die variable und darauf folgend die funktionen zu diffinieren welche true sein müssen ?

    2. frage

    ich habe mich schon oft geärgert warum dieses konstrukt nicht funktioniert:

    PHP-Code:
    $is_haendler $classes['db']->getOne('SELECT count(id) as is_haendler FROM &%!* where id = '.(int)$_GET['haendler'])['is_haendler']; 
    die funktion getOne gibt einen array aus, in dem die node is_haendler == "1" ist. habe ich hier einen logik fehler ? die funktion gibt einen array wieder, die node hänge ich hinten dran. ?
    ist hier eine blockade von php aus?

    vielen dank schonmal

  • #2
    Hallo notyyy,

    auf Frage 1 antwort ich ein "it depends on the application process", für Frage 2 solltest du ein wenig mehr Info liefern.

    PS: Dein Post-Text ist IMHO nicht fortgeschritten!

    Kommentar


    • #3
      1. Was hindert dich daran dir selber eine Funktion zu schreiben?
      Für normal behandelt man Übergabewerte ja alle ähnliche so das man die meisten Fälle mit ein paar wenigen Funktionen abhandeln kann.

      Was auch recht sinvoll ist, garnicht erst mit den $_POST/$_GET inhalten lange zuarbeiten sonderen die Inhalte in eine immer gesetzt Variabel zuschreiben.
      Bsp.:
      PHP-Code:
      $int_HaendlerID = (int)(isset($_GET['int_HaendlerID']) ? $_GET['int_HaendlerID'] : ); 
      2. Nein, so geht das nicht. Macht auch wenig sinn und fände ich Perönlich nicht sonderlich schön.
      Denn wenn ich nur einen Wert haben will sollte deine Methode auch nur diesen zurück geben.

      Kommentar


      • #4
        Zitat von dr.e.
        PS: Dein Post-Text ist IMHO nicht fortgeschritten!
        frage 1 definitiv nicht, frage 2 schon, da ich ein problem mit der sprachstruktur hatte.

        ich habe lange überlegt in welches subforum ich posten soll, habe mich dann für dieses entschieden a) weil ich diverse stunden am tag mit php arbeite b) weil es ein allgemeines problem war, was unter anfängern wohl selten auftritt, da diese nicht darauf achten, code zu optimieren. c) habe ich im manual keinerlei informationen dazu gefunden. d) ich mich so mit der sprache auseinander gesetzt habe, dass ich dieses problem umgehen könnte, jedoch mehr über die hintergründe erfahren möchte.

        ich denke damit erfüllt der beitrag definitiv den rang einer fortgeschrittenen frage.

        ich werde mich nun damit abfinden, dass dieses konstrukt nicht richtig funktioniert, wobei der return wert ein array ist.

        ich bin nur davon ausgegangen, dass php so arbeitet

        $foo = (array)['node'];
        da getOne() ein array zurück gibt wäre dies dann
        $foo = $foo2['is_haendler'];

        also eigentlich völlig legitim, die frage nach dem sinn spielt hierbei keinerlei rolle, da es um den syntax geht, der meines erachtens ein wenig aus der rolle spielt. grade bei einem select befehl mit einem count, macht dieses definitiv sinn, wenn es nur eine node gibt.

        Kommentar


        • #5
          Hallo notyyy,

          so viel Rechtfertigung musst du mir nicht bringen. Ich wollte nur sehen, ob mein Einwand berechtigt war oder nicht.

          Nun zur Frage:
          1. Reicht es dir, dass du nur die Variablen in deinem lokalen Gültigkeitsbereich entsprechend vorbelegts, könnte dir die variablenHandler-Komponente des APF helfen. Diese liefert dir ein Array von Werten, die, falls nicht im REQUEST enthalten, mit Default-Werten belegt. API siehe http://www.adventure-php-framework.o...n_handler.html, ein Beispiel findest du unter http://www.adventure-php-framework.o...riablenHandler.

          2. Wie schon gesagt ist das syntaktisch bei PHP nicht möglich. Abgesehen davon finde ich es a) nicht schön, Instanzen von Klassen, die eine zentrale Rolle spielen (hier: DB-Abstraktion) in Array-Offsets zu halten und b) ist die Code-Zeile sehr schwer zu lesen, ergo unübersichtlich. Letzteres führt oft dazu, dass man beim Programmieren den Überblick verliert.

          Kommentar


          • #6
            das 2. beispiel ist blödsinn. du willst an dieser stelle kein array sondern einen scalaren oder boolchen wert. den lässt du dir zurückgeben und schon brauchst du diesen komischen syntax nicht mehr.

            falls du andere werte des arrays brauchst, mach die mit klassen vertraut.


            btw.: viel wichtiger wäre es mir, wenn ich klassenkonstanten "zusammenbauen" könnte:

            PHP-Code:
            class blaaaaaa
            {
                   const 
            DIR='test'.DIRECTORY_SEPARATOR// Parse error: syntax error, unexpected '.', expecting ',' or ';'

            wies gemacht wird, ist mir schnurzpiep egal. ob PHP das direkt beim parsen mitbekommt oder sowas implementiert wird>

            PHP-Code:
            class blaaaa
            {
                    public function 
            __callConstant($const)
                    {
                           if(
            $const==='something') return 'CONSTANT';
                    }

            oder

            PHP-Code:
            class blaaaa
            {
                    const 
            DIR;

                    
            // Wird aufgerufen, wenn Konstante keinen Wert hat
                    
            public function __constant($const)
                    {
                            
            // definiert blaaa::DIR
                            // wenn beim parsen per "const DIR" die konstante definiert
                            // aber nicht initalisiert wurde
                            
            if($const==='something') return 'value';               
                    }

            Kommentar

            Lädt...
            X