php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2009

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 29.04.2009, 15:48  
Neuer Benutzer
 
Registriert seit: 29.04.2009
Beiträge: 18
Lockhead befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] Auf erst zur laufzeit bekannte statische Methode zugreifen?

Gibt es eine Möglichkeit folgendes mit PHP umzusetzten:

PHP-Code:
$methode 'testMethode(15)';
echo 
testKlasse::$methode
Netürlich unter der Verraussetzung das es die Methode "testMethode" in der Test Klasse gibt und diese dort public static deklariert ist. Wenn nein wie kann man soetwas anders lösen?
Lockhead ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 29.04.2009, 16:04  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.989
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Zitat:
$methode = 'testMethode(15)'
Na so schon mal gar nicht. Parameter musst DU auf jeden Fall extra angeben. Es sei, denn eval.
Schon call_user_func probiert?
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist gerade online  
Alt 29.04.2009, 16:13  
Neuer Benutzer
 
Registriert seit: 29.04.2009
Beiträge: 18
Lockhead befindet sich auf einem aufstrebenden Ast
Standard

call_user_func fehlert aus da er die php datei mit der klasse nicht laden kann komischerweise heißt die datei aber anders hier mal bissle mehr beispiel code hab mir schon fast gedacht das der schnippsel nicht reicht.

index.php
PHP-Code:
error_reporting(E_ERROR E_WARNING E_PARSE E_NOTICE);
require_once ( 
"lib/fobiaConfig.php" );
function 
__autoload($class_name)
{
    require_once 
'lib/' $class_name '.php';
}
fobia::start(); 
lib/fobia.php
PHP-Code:
    class fobia
    
{
        public static function 
start()
        {
            
ini_set'arg_separator.output' '&' );
            
session_name"session" );
            
session_start();

            
fobiaDatabase::connect();

            if ( !
DB_CONN or FOBIA_WARTUNG )
            {
                
$stream "blub db fehler oder wartung";
            }
            else
            {    
                
$request "blub(15)";
                
#$stream = fobiaContent::$request;
                
$stream call_user_func( array( 'fobiaContent'$request ) );
            }
            
header "Content-type: text/html; charset=utf-8" );
            echo 
$stream;
            
flush();
            exit();
        }
    } 
Die Datei lib/fobiaContent.php existiert, enthält eine gültige Klassendefinition und die Methode blub() gibts da auch!

Folgender Fehler wird ausgegeben:
Code:
Warning: require_once(lib/zpoyv3jbowyr.php) [function.require-once]: failed to open stream: Datei oder Verzeichnis nicht gefunden in /index.php on line 5
Lockhead ist offline  
Alt 29.04.2009, 16:17  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.989
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Zitat:
Die Datei lib/fobiaContent.php existiert
Was sagt das aus über:
Zitat:
lib/zpoyv3jbowyr.php
?!
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist gerade online  
Alt 29.04.2009, 16:27  
Neuer Benutzer
 
Registriert seit: 29.04.2009
Beiträge: 18
Lockhead befindet sich auf einem aufstrebenden Ast
Standard

Die Datei existiert nicht und hat nie existiert, das ist ja das Problem, woher hat der Parser diesen Dateinamen?

Mit "fobiaContent" ist doch der Klassenname bekannt und die Datei fobiaContent.php ist im lib Ordner auch zu finden. Vondaher sollte autoload das packen. Desweiteren tritt dieser fehler nur bei Verwendung von "call_user_func" auf bei einem regulärem Mathoden Aufruf ala "fobiaContent::blub(15);" hat er ja nix zu meckern!
Lockhead ist offline  
Alt 29.04.2009, 16:31  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.989
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Ich weiss nicht, ob autoload für statische Aufrufe funktioniert.

[edit]
Zitat:
Desweiteren tritt dieser fehler nur bei Verwendung von "call_user_func" auf bei einem regulärem Mathoden Aufruf ala "fobiaContent::blub(15);" hat er ja nix zu meckern!
Ach so, übersehen. Ich habe doch oben schon gesagt, dass das so nicht geht. Parameter gehören nicht mit ein den Methodenstring. Sorry aber, RTFM!
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist gerade online  
Alt 29.04.2009, 16:35  
Neuer Benutzer
 
Registriert seit: 29.04.2009
Beiträge: 18
Lockhead befindet sich auf einem aufstrebenden Ast
Standard

es funktioniert ja wenn ich den statischen aufruf direkt durchführe, das problem ist nur das ich gern abhängig vom URL_Request eine statische methode aufrufen möchte.

ich habe keine lust riesige switch/case oder if blöcke zu basteln und bei einer rekursiven funktion komme ich zum gleichen problem, das ich auf die statischen methoden in der klasse fobiaContent nicht dynamisch zugreifen kann.
Lockhead ist offline  
Alt 29.04.2009, 16:36  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.989
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

siehe edit.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist gerade online  
Alt 29.04.2009, 16:47  
Neuer Benutzer
 
Registriert seit: 29.04.2009
Beiträge: 18
Lockhead befindet sich auf einem aufstrebenden Ast
Standard

okey, hab ich nicht angepasst, habs jetzt entsprechend umgesetzt und erhalte
Code:
First argument is expected to be a valid callback
scheint wohl wirklich nicht mit statischen methoden zu klappen.
Lockhead ist offline  
Alt 29.04.2009, 16:57  
Neuer Benutzer
 
Registriert seit: 29.04.2009
Beiträge: 18
Lockhead befindet sich auf einem aufstrebenden Ast
Standard

Ich bin ein Idiot, hab vergessen die neue fobiaContent.php zu deployen und auf dem staging system gabs die funktion nicht, heißt also:
PHP-Code:
call_user_func'class::' $method $parameter 
Funktioniert einwandfrei!

Trotzdem Danke für deine Hilfe nikosch...
Lockhead ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine 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 an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
statische Variable in Methode tinchen PHP Tipps 2008 5 21.12.2007 20:54
Auf static Methode von variabler Klasse zugreifen Riks PHP Tipps 2007 11 16.03.2007 15:08
PHP5: Klassenattribut für statische Methode, mit Vererbung PHP-Fortgeschrittene 9 24.05.2005 09:35

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php methode zur laufzeit, call_user_func autoload first argument is expected to be a valid callback in, php statische methoden zu laufzeit erstellen, call_user_func statische, php methode call_user_func, zugriff statische methode variable php, php methoden zur laufzeit hinzufügen, php statische methoden dynamisch aufrufen, php zugriff auf statische methode über variable, php methode hinzufügen, php methode zur laufzeit ändern, call_user_func vererbung, php dynamisch auf statische variable zugreifen, php static variable laufzeit, php methodenlaufzeit ausgeben, variablen werden erst zur laufzeit in php, php statische methoden variable, php auf static mit this zugreifen, static methode laufzeit änderung, php mit static methoden auf variablen zugreifen

Alle Zeitangaben in WEZ +2. Es ist jetzt 19:40 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum