Hi leute,
such mich seit Stunden im Netz tot und hab nichts passendes gefunden. Daher stell ich meine Fragen mal direkt Euch.
Was möchte ich machen?
Ich habe eine Klasse mit einem Konstruktor und mehreren Methoden. Die Klasse und vorallem einzelne Methoden sollen nur genutzt werden können wenn bestimmte Parameter erfüllt sind.
Möglichkeit 1:
Der Klassen-Trigger "__call" hilft mir nicht weiter da dieser aufgerufen wird wenn eine Methode nicht vorhanden ist. Ich benötige das exakte Gegenteil dieses Triggers.
Frage: Ist jemandem eine solche Funktion oder ein Workaround bekannt?
Möglichkeit 2
Im Konstruktor hab ich direkt meine Prüfung drin, sollte diese nicht stimmen so wird die Klasse direkt im Konstruktor wieder zerstört. Problem hierbei ist das meine Klasse trotzdem bestehen bleibt und meine Methode aufgerufen werden kann.
Frage: Wie kann man eine Klasse komplett im Konstrukor bereits wieder zerstören?
Möglichkeit 3
Ich baue einen "Tunnel" aus einer PHP Klasse und missbrauche die Funktion "__call". Ich besitze eine Dummyklasse in der lediglich der Konstruktor und die Call Methode deklariert sind. Alle Methodenaufrufe führe ich nun über diese Klasse aus, welche die Methoden ja nicht besitzt und somit die __call Funktion startet. Diese macht dann meine Prüfung der Parameter und lädt bei Erfolg die jeweilige Methode der jeweiligen Klasse. Die Tunnelklasse reicht sozusagen die Anfragen bei erfolgreicher Prüfung direkt zur Zielklasse durch.
Frage: Macht diese Version sinn oder könnte das Missbrauchen des Errorhandlers eventuell bei sehr vielen Useranfragen das System beeinflussen?
Danke im vorraus!
such mich seit Stunden im Netz tot und hab nichts passendes gefunden. Daher stell ich meine Fragen mal direkt Euch.
Was möchte ich machen?
Ich habe eine Klasse mit einem Konstruktor und mehreren Methoden. Die Klasse und vorallem einzelne Methoden sollen nur genutzt werden können wenn bestimmte Parameter erfüllt sind.
Möglichkeit 1:
Der Klassen-Trigger "__call" hilft mir nicht weiter da dieser aufgerufen wird wenn eine Methode nicht vorhanden ist. Ich benötige das exakte Gegenteil dieses Triggers.
Frage: Ist jemandem eine solche Funktion oder ein Workaround bekannt?
Möglichkeit 2
Im Konstruktor hab ich direkt meine Prüfung drin, sollte diese nicht stimmen so wird die Klasse direkt im Konstruktor wieder zerstört. Problem hierbei ist das meine Klasse trotzdem bestehen bleibt und meine Methode aufgerufen werden kann.
Frage: Wie kann man eine Klasse komplett im Konstrukor bereits wieder zerstören?
PHP-Code:
$MYCHECK = true;
$TEST = new test();
echo $TEST->display(); // Wenn $MYCHECK==true dann sollte kein Inhalt zu sehen sein
class test{
public function __construct(){
GLOBAL $MYCHECK;
if($MYCHECK){
settype(&$this,'null');
unset($this);
}//end of if
}//end of method
public function __destruct(){
echo "TEST DESTROYED";
}//end of method
public function display(){
return "Hallo Welt!";
}//end of method
}//end of class
Ich baue einen "Tunnel" aus einer PHP Klasse und missbrauche die Funktion "__call". Ich besitze eine Dummyklasse in der lediglich der Konstruktor und die Call Methode deklariert sind. Alle Methodenaufrufe führe ich nun über diese Klasse aus, welche die Methoden ja nicht besitzt und somit die __call Funktion startet. Diese macht dann meine Prüfung der Parameter und lädt bei Erfolg die jeweilige Methode der jeweiligen Klasse. Die Tunnelklasse reicht sozusagen die Anfragen bei erfolgreicher Prüfung direkt zur Zielklasse durch.
Frage: Macht diese Version sinn oder könnte das Missbrauchen des Errorhandlers eventuell bei sehr vielen Useranfragen das System beeinflussen?
Danke im vorraus!
Kommentar