php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 12.11.2010, 12:41  
Neuer Benutzer
 
Registriert seit: 12.11.2010
Beiträge: 2
PHP-Kenntnisse:
Fortgeschritten
Fridoo befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] Methoden zuweisung

Hallo Forum
Ich versuche gerade eine Methode in einem attribut (es heist doch attribut, kenne es nur von c#) zu speichern.

Mit einer funktion hat dies sehr gut geklappt
PHP-Code:
function doAnything() {

}

$functions = array(
     
"doAnythingFunction " => doAnything
);

$funct $functions["doAnythingFunction"];
$funct(); 
Wenn ich es aber mit einer Mehtode versuche bekomme ich den Fehler "Function name must be a string"
PHP-Code:
class myClass {
     public function 
doAnything() {

     }
}
$class = new myClass();
$functions = array(
     
"doAnythingFunction" => $class->doAnything
);

$funct $functions["doAnythingFunction"];
$funct(); 
Ist das überhaupt möglich?
wenn ja -> Was mach ich falsch?

Gruss Fridoo
Fridoo ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 12.11.2010, 12:49  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Also das erstere sollte schon gar nicht funktionieren! Denn du kannst so keine Funktionen zuweisen! Was du machst ist im Array die Konstante "doAnything" zuzuweisen. Da die Konstante aber nicht existiert wird halt nix zugewiesen (und es sollte nen Notice kommen wenn du error_reporting aktiviert hast).

Schau dir mal folgendes an: http://php.net/manual/en/functions.anonymous.php
Flor1an ist offline   Mit Zitat antworten
Alt 12.11.2010, 12:52  
Erfahrener Benutzer
 
Registriert seit: 01.12.2009
Beiträge: 645
PHP-Kenntnisse:
Fortgeschritten
draco88 befindet sich auf einem aufstrebenden Ast
draco88 eine Nachricht über ICQ schicken
Standard

PHP-Code:
class myClass {
     public function 
doAnything() {

     }
}
$class = new myClass();
$functions = array(
     
"doAnythingFunction" => array($class'doAnything')
);

$funct $functions["doAnythingFunction"];
call_user_func($funct); 
So funktioniert es mit Funktionen und Methoden.

Edit:
@Flor1an: Das obere funktioniert ohne Probleme, allerdings wird er, wie du schon gesagt hast, ne Notice werfen, falls error_reporting hoch genug ist.
draco88 ist offline   Mit Zitat antworten
Alt 12.11.2010, 12:57  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.268
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Dein erstes Beispiel funktioniert nur, weil PHP großzügig ist und doAnything in "doAnything" umwandelt, also aus einer Konstante (!) einen String macht.

Referenzen (also Callbacks) kannst du auf verschiedene Weisen erzeugen:
PHP-Code:
<?php
// Funktionen
function myFunc() { echo "123"; }
$callback "myFunc";
call_user_func($callback); // oder $callback();

// Statische Methoden:
class MyClass {
  public static 
funtion myStaticMethod() { echo "456"; }
  public function 
myMethod() { echo "789"; }
}
$callback = array("MyClass""myStaticMethod");
call_user_func($callback);

// Methoden:
$myObject = new MyClass();
$callback = array($myObject"myMethod");
call_user_func($callback);

// Lamda-Funktionen:
$callback create_function('$x''echo $x;');
call_user_func($callback"ABC");
?>
Seit PHP 5.3 gibt es auch Closures, dazu findest du ein eigenes Kapitel im Handbuch.

Siehe auch:
is_callable
call_user_func_array
Reflection API (auch zur Nutzung des Konstruktors)
__________________
"Nuschel ich?" - "Was?"
Chriz ist offline   Mit Zitat antworten
Alt 12.11.2010, 13:37  
Neuer Benutzer
 
Registriert seit: 12.11.2010
Beiträge: 2
PHP-Kenntnisse:
Fortgeschritten
Fridoo befindet sich auf einem aufstrebenden Ast
Standard

vielen danke für die detaillierten und schnellen Antworten
Fridoo ist offline   Mit Zitat antworten
Antwort


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
[Erledigt] Methoden zu einer Klasse hinzufügen ByStones PHP Tipps 2010 3 30.08.2010 23:58
Objekte verwenden gleiche Methoden Cube PHP Tipps 2010 2 21.04.2010 09:25
Eigenschaften, Methoden und Funktionen alex9787 PHP Tipps 2009 5 30.12.2009 19:01
Statische Methoden oder Singleton Klasse ? lopelz PHP Tipps 2009 7 30.12.2009 14:46
Methoden werden nicht vererbt stayInside PHP Tipps 2009 12 15.03.2009 00:24
Kindklasse: Methoden über _call() ergänzen? ciss PHP Tipps 2008 2 29.12.2008 18:08
[Erledigt] Methoden auf Objekt aufrufen (und fangen), die nicht existieren tsisson PHP Tipps 2008 2 07.10.2008 18:19
Referenzen Private Methoden. notyyy PHP-Fortgeschrittene 5 29.05.2008 09:40
UML - Abstrakte und vererbte Methoden zwingend anzugeben? MaMo-Net Off-Topic Diskussionen 3 17.03.2008 06:04
reflection - wie führe ich alle methoden einer klasse aus... Crypi PHP Tipps 2008 2 20.02.2008 22:51
DAO - Methoden dh1sbg PHP-Fortgeschrittene 2 17.12.2006 17:52
Zugriff auf statische methoden oder konstanten nightfreak PHP-Fortgeschrittene 6 14.11.2005 16:56
get udn set Methoden seven-12 PHP Tipps 2005-2 3 23.06.2005 22:19
klassen und methoden anderer klassen in methoden.... PHP Tipps 2005 17 25.05.2005 09:46
Zuweisung in array tikal PHP Tipps 2004 5 23.09.2004 14:10

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
methoden zuweisung, zuweisung von methoden

Alle Zeitangaben in WEZ +2. Es ist jetzt 01:15 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