Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] parent method call mit variabler parameter liste

Einklappen

Neue Werbung 2019

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

  • [Erledigt] parent method call mit variabler parameter liste

    Servus,

    ich hab ein Problem mit einer von PDO abgeleiteten Klasse.
    Wenn ich eine feste Parameterliste kann ich ja per parent::Methode einfach direkt ansprechen aber was ist wenn ich nicht weis wieviele Parameter ich habe muss ich dann extra den Weg über eine If oder Case machen und dementprechenden direkt callen oder kann ich auch die internen Funktionen nehmen die PHP für variable Parameterlisten angedacht hat?

    PHP-Code:
    <?php
    class PDO2 extends PDO
    {    
        
    /**
         *
         * @link http://www.php.net/manual/en/pdo.query.php
         */
        
    public function query()
        {
            
    $func_args func_get_args();
            
    $func_args[0] = $this->replacePlaceholder($func_args[0]);
            
            return 
    call_user_func_array("parent::query"$func_args);
        }
            
        
    /**
         *
         * @param $sql
         * @return string
         */
        
    protected function replacePlaceholder($sql)
        {
            if (
    strlen(trim($this->_table_prefix))>0)
            {
                return 
    preg_replace("/{#(.*?)}/"$this->_table_prefix "_$1"$sql);
            } else
            {
                return 
    preg_replace("/{#(.*?)}/""$1"$sql);
            }
        }
    }
    ?>
    ps: in 5.3.0 Alpha scheint das bereits möglich zu sein aber in 5.2.6 noch nicht gibt es da vielleicht ne Alternative?

  • #2
    ok lösung gefunden statt jede Funktion einzeln zu schreiben

    PHP-Code:
    public function __call($func$args)
        {
            
    $wichfunctions = array("query""prepare""execute");
            
            if (
    method_exists($this->_dbh$func))
            {
                if (
    in_array($func$wichfunctions)) $args[0] = $this->replacePlaceholder($args[0]);
                return 
    call_user_method_array($func$this->_dbh$args);
            }
        } 

    Kommentar


    • #3
      na da sind wir doch froh, das wir dir so schnell helfen konnten

      Kommentar


      • #4
        Dann den Thread bitte noch als [Erledigt] markieren. Danke!

        Kommentar

        Lädt...
        X