Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] function.call-user-func-array: First argument is expected to be a valid ca

Einklappen

Neue Werbung 2019

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

  • [Erledigt] function.call-user-func-array: First argument is expected to be a valid ca

    Moinsen,

    habe seit geraumer Zeit ein Fehler den ich einfach nicht gefixt bekomme.

    Fehler: call_user_func_array() [function.call-user-func-array]: First argument is expected to be a valid callback, ...

    Ich rufe Funktion mit Hilfe von einem Objekt auf. Hier der Code der Klasse.

    PHP-Code:
    final class Functions
    {
        private static 
    $objInstance;
        
        private 
    $strFolder;

        public function 
    __get($strKey)
        {
            
    $this->strFolder ucfirst(mb_strtolower($strKey));

            return (
    $this);
        }

        public function 
    __call($strName, array $arrParam)
        {
            if (!
    function_exists($strName) &&
                
    file_exists(Registry :: get('SysFunctionsPath') . $this->strFolder '/' $strName '.func.php'))
            {
                require_once (
    Registry :: get('SysFunctionsPath') . $this->strFolder '/' $strName '.func.php');
            }

            
    $strFunction $this->strFolder '_' $strName;

            
    $this->strFolder null;

            return (
    call_user_func_array($strFunction$arrParam));
        }

        public static function 
    getInstance()
        {
            if (!
    is_object(self :: $objInstance))
            {
                
    self :: $objInstance = new Functions();
            }

            return (
    self :: $objInstance);
        }

    Aufgerufen wird eine Funktion z.B. so:

    PHP-Code:
    $this->objFunctions->Input->setCookie(); 
    Was mich verblüfft ist, das der Fehler nur bei der setCookie Funktion auftritt. Auch wenn ich diese umbenenne.

    Die setCookie Funktion sieht bei mir dann so aus.

    PHP-Code:
    function Input_setCookie($strName$mixValue$intExpire 31536000$strPath '/'$strDomain null$blnSecure false$blnHTTPOnly false)
    {
        if (
    headers_sent())
        {
            throw new 
    Exception('Headers already sent! [' __FUNCTION__ ']');
        }

        
    $objFunctions Functions :: getInstance();

        if (
    $strDomain === null)
        {
            
    $strDomain str_replace('www'''parse_url($objFunctions->Environment->domain(), PHP_URL_HOST));
        }

        
    $intExpire $objFunctions->Environment->time() + $intExpire;

        
    setcookie($strName$mixValue$intExpire$strPath$strDomain$blnSecure$blnHTTPOnly);

    Jemand eine Idee wie ich den Fehler fixen kann?

  • #2
    Mach mal

    PHP-Code:
    <?php
    var_dump
    ($strFunctionis_callable($strFunction), function_exists($strFunction))
    Die Funktion muss natürlich eingebunden sein, Autoloading funktioniert bei Funktionen nicht.
    "[URL="http://www.youtube.com/watch?v=yMAa_t9k2VA&feature=youtu.be&t=25s"]Mein Name ist Lohse, ich kaufe hier ein.[/URL]"

    Kommentar


    • #3
      Wow, super! Fehler wurde nun gefunden.

      Alter Code:

      PHP-Code:
      if (!function_exists($strName) &&
                  
      file_exists(Registry :: get('SysFunctionsPath') . $this->strFolder '/' $strName '.func.php'))
              {
                  require_once (
      Registry :: get('SysFunctionsPath') . $this->strFolder '/' $strName '.func.php');
              }

              
      $strFunction ucfirst($this->strFolder) . '_' $strName
      Neuer Code:

      PHP-Code:
      $strFunction ucfirst($this->strFolder) . '_' $strName;
              
              if (!
      function_exists($strFunction) &&
                  
      file_exists(Registry :: get('SysFunctionsPath') . $this->strFolder '/' $strName '.func.php'))
              {
                  require_once (
      Registry :: get('SysFunctionsPath') . $this->strFolder '/' $strName '.func.php');
              } 

      Besten Dank.

      Kommentar

      Lädt...
      X