zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Serveradministration und serverseitige Scripte
Seite neu laden Anonyme Funktion durch call_user_func_array() aufrufen

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 10.03.2011, 18:34
Benutzerbild von David
auch, ja!
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 08.11.2007
Beiträge: 2.626
David ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer Anblick
Standard Anonyme Funktion durch call_user_func_array() aufrufen

Ich sitz echt schon zu lange... :/

Folgenden schnippsel hab ich zum Test geschrieben:
PHP-Code:
class dummy {

    public 
$func null;
    public 
$geheim = array();

    public function 
__construct$array ) {

        
$this->func $array['type'];

        
$this->geheim[1] = 'FooBar';
        
$this->geheim[2] = 'Hallo Welt';
    }

    public function 
call$index ) {
        
var_dump$this->func );
        
call_user_func_array$this->func , array( $this$index ) );

    }

    public function 
get$prop ) {

        return 
$this->geheim[$prop];
    }
}
//Los gehts
$o = new dummy( array(
                    
'type' =>
                    
create_function(
                                
'$that, $index',
                                
' $self = $that; echo  $self->geheim[$index]; '
                
)
        )
    );
$o->call(1); 
Die Vardumps sind absichtlich drin, die Ausgabe is wie zu erwarten:
Code:
string(11) "�lambda_127" FooBar
In der eigentlichen Klasse, in der das zum Einsatz kommen soll, geht das nicht:
PHP-Code:
//Callback wird im Construktor angelegt:
'callback' => create_function'',
                    
'echo "Hallo Welt!" ;'
                    
)

//und später aufgerufen
    
var_dump$action['callback'] );
    
call_user_func_array$action['callback'] , $tmp_args ); 
Ausgabe:
Code:
string(10) "�lambda_76"

Warning:  call_user_func_array() [function.call-user-func-array]: First argument is expected to be a valid callback, '' was given in D:/...
(Das 'Hallo Welt!' ist erstmal zum Testen drin!);
Der Var_dump zeigt also an, dass es sich hierbei um eine anonyme Funktion handelt, warum aber moniert der dann einen leeren String, anstatt eines Callbacks?
Zwar wird das eigentliche Objekt serialisiert und wieder zurück, aber das hat das Testobjekt auch nicht gestört.
Ich verzweifel hier gleich...
__________________
github | http://dnaber.de

Geändert von David (10.03.2011 um 18:37 Uhr)
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 10.03.2011, 19:04
Benutzerbild von Scheppertreiber
Chaot und Nonkonformist.
XHTMLforum-Kenner
 
Registriert seit: 13.03.2007
Ort: Steinmark im Spessart
Beiträge: 7.458
Scheppertreiber ist ein LichtblickScheppertreiber ist ein LichtblickScheppertreiber ist ein LichtblickScheppertreiber ist ein LichtblickScheppertreiber ist ein Lichtblick
Standard

Code:
public $geheim
__________________
Grüße aus dem Spessart, Joe

{ table-layout: biertischistbesser; }
Der Mausinator
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 10.03.2011, 19:10
Benutzerbild von David
auch, ja!
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 08.11.2007
Beiträge: 2.626
David ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer AnblickDavid ist ein wunderbarer Anblick
Standard

Cool, oder?

Okay, einmal serialisieren und wieder zurück scheint der anonymen Funktion nix anzuhaben. Wenn ich aber das serializierte Objekt in der Session parke und es dann wieder deserialisiere haut es mir diesen Fehler raus.

PHP-Code:
//das geht
$object = new dummycreate_function ()... );
$ser serialize$object );
$object unserialize$ser );
$object->call()

//das geht nicht
$object = new dummycreate_function ()... );
$_SESSION['obj'] = serialize$object );
$object unserialize$_SESSION['obj'] );
$object->call() 
:/
__________________
github | http://dnaber.de
Mit Zitat antworten
Antwort

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
JQUERY - Nach Formular senden weitere Funktion aufrufen sturmi2 Javascript & Ajax 1 28.10.2009 16:32
JQuery Funktion aufrufen wenn Bedingung erfüllt muella Javascript & Ajax 5 10.07.2009 16:55
Code einer bestehenden Funktion hinzufügen cybertron Javascript & Ajax 13 01.01.2009 15:53
Mit setTimeout funktion im eigenen Objekt aufrufen PoWl Javascript & Ajax 5 11.05.2008 10:35
[PHP] Funktion zum Optimieren von CSS Floele Serveradministration und serverseitige Scripte 2 13.08.2005 10:31


Alle Zeitangaben in WEZ +2. Es ist jetzt 12:20 Uhr.