php.de

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

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 25.08.2009, 11:28  
Neuer Benutzer
 
Registriert seit: 25.08.2009
Beiträge: 3
PHP-Kenntnisse:
Fortgeschritten
exminsta befindet sich auf einem aufstrebenden Ast
Standard Operatoren einer Funktion übergeben

Hi Leute,

ich habe hier eine kleine Herausforderung und ich hoffe, Ihr könnt mir den einen oder anderen Denkanstoß geben.

Mein Ziel ist es, eine Funktion zu basteln, der ein Array mit Parametern übergeben wird. Diese Parameter sollen dann der Reihe nach überprüft werden und als Resultat soll dann true oder false zurückgegeben werden.

Meine ersten Gedanken sehen wie folgt aus:

- der Funktion (z.B. has_access()) wird ein array übergeben, das z.B. folgenden Aufbau hat
PHP-Code:
array(
    
'user'  => 'testuser',
    
'level' => 2,
    
'lnr'   => array(1,2,3,4)
); 
- nun soll über eine foreach-Schleife jeder Key/Value überprüft werden. Voraussetzung ist natürlich, dass das User-Objekt global ist und alle Keys in diesem Objekt vorhanden sind. Angenommen, dies ist alles erfüllt, habe ich das Problem, dass ich noch Operatoren benötige, die ich ebenfalls über das Array übergeben will. In dem obigen Fall würde dies dann z.B. so aussehen:

PHP-Code:
function has_access($params) {
  global 
$userobject;

  
// hier soll nun die foreach Schleife die Überprüfungen durchführen
  
foreach ($params as $key => $value) {
    if (!
is_array($value)) {
      if (
$userobject->get($key) [OPERATOR$value) {
        
$return[] = "true";
      } else {
        
$return[] = "false";
      }
    } else {
      if (
in_array($userobject->get($key), $value)) {
        
$return[] = "true";
      } else {
        
$return[] = "false";
      }
    }
  }

  
// wenn im $return-array irgendwo ein "false" vorkommt, soll has_access 
  // "false" zurückliefern, andernfalls true
  
if (in_array("false"$return)) {
    return 
false;
  } else {
    return 
true;
  }

Meine Frage ist nun: wie bekomme ich die Operatoren (>, >=, <, <=) mit in die Funktion, sodass sie beim if benutzt werden können? Oder hat jemand noch eine andere Idee für den Funktionsaufbau?

Vielen Dank für Eure Hilfe!
exminsta ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 25.08.2009, 11:58  
Erfahrener Benutzer
 
Registriert seit: 05.04.2005
Beiträge: 1.333
Freeaak ist zur Zeit noch ein unbeschriebenes Blatt
Standard

entweder die operatoren als strings mitgeben und mit switch die fälle unterscheiden oder eine callbackfunktion?
__________________
"Wenn du nicht weißt, was du tust: Machs mit Eleganz!"

(Murphy's Gesetze)
Freeaak ist offline   Mit Zitat antworten
Alt 25.08.2009, 14:21  
Neuer Benutzer
 
Registriert seit: 25.08.2009
Beiträge: 3
PHP-Kenntnisse:
Fortgeschritten
exminsta befindet sich auf einem aufstrebenden Ast
Standard

Hi Freeaak,

danke für Deine Antwort. Ich denke, ich muss die via String übergebenen Operatoren dann doch noch über eval ausführen.... also quasi so:

PHP-Code:
$code '$check = (1 '.$operator.' 2)?true:false;';
eval(
$code); 
Oder ich identifiziere die übergebenen Parameter (int, float, array, string) und switche das dann - wie Du schon vorgeschlagen hast.

Aber hilf mir doch bitte mal mit Deinem Vorschlag der Callback-Funktion auf die Sprünge. Was soll die hier machen?

Danke schonmal
exminsta ist offline   Mit Zitat antworten
Alt 25.08.2009, 15:41  
Erfahrener Benutzer
 
Registriert seit: 05.04.2005
Beiträge: 1.333
Freeaak ist zur Zeit noch ein unbeschriebenes Blatt
Standard

du kannnst ja mehrere funktionen definieren (equals, lessThan, ...) und die mit übergeben als parameter. dann führt die funktion diese parameterfunktion einfach aus
__________________
"Wenn du nicht weißt, was du tust: Machs mit Eleganz!"

(Murphy's Gesetze)
Freeaak ist offline   Mit Zitat antworten
Alt 25.08.2009, 15:58  
Erfahrener Benutzer
 
Registriert seit: 17.07.2009
Beiträge: 223
PHP-Kenntnisse:
Fortgeschritten
Tiberius zeigte ein beschämendes Verhalten in der Vergangenheit
Tiberius eine Nachricht über ICQ schicken
Standard

Das ganze Konzept erscheint mir nunja .... naja ....

Warum packst du die has_access Funktion nicht als Methode in dein User-Objekt? Wäre viel einfacher und dann mit einzelnen Methoden explizit das prüfen was zu tun ist.

Auch möglich:

PHP-Code:
...
foreach (
$params as $key => $value)
{
    switch(
$key)
    {
        case 
'user' :
        {
            if (
$userobject->get($key) == $value) ....
        }; break;

        ....
     }
}
... 
Es gibt keine eierlegende Wollmilchsau und jeder Versuch in die Richtung bringt später mehr Probleme als dass es hilft
Tiberius ist offline   Mit Zitat antworten
Alt 25.08.2009, 16:13  
Neuer Benutzer
 
Registriert seit: 25.08.2009
Beiträge: 3
PHP-Kenntnisse:
Fortgeschritten
exminsta befindet sich auf einem aufstrebenden Ast
Standard

Hi Tiberius,

dieses Konzept erscheint mir mittlerweile ebenfalls nicht mehr so bombensicher und bringt im Endeffekt auch mehr Probleme, als ich dachte. Darum überdenke ich es auch gerade nochmal.

Im Grunde genommen ist meine Anforderung komplexer, als zunächst vermutet. Ich benötige Quasi zu den relativ einfachen Überprüfungen auf z.B. Level oder z.B. PartnerCode, Abhängigkeiten untereinander.

Heißt konkret: ein User mit Level 3 darf auf einen Datensatz nur Zugreifen, wenn er diesen Datensatz auch verfasst hat, ergo sein Username darin auftaucht.
So ein Datensatz enthält neben einem Usernamen auch noch den PartnerCode des Users, der diesen Datensatz erzeugt hat und das ist wichtig für die folgende Überprüfung.

Ein User mit Level 2 ist nämlich in der Realität meistens ein Chef mehrerer User mit Level 3 und besitzt ihre PartnerCodes. Heißt: ein User mit Level 2 darf alle Datensätze sehen, die mit einem der für ihn eingetragenen PartnerCodes matchen. Alle anderen Datensätze darf er nicht sehen. Hier darf aber keine Überprüfung mehr auf den Usernamen stattfinden.

Und genau dies versuche ich möglichst generisch zu lösen...; für Ansätze wäre ich sehr dankbar

Grüße
exminsta ist offline   Mit Zitat antworten
Alt 26.08.2009, 09:52  
Erfahrener Benutzer
 
Registriert seit: 16.07.2005
Beiträge: 1.007
PHP-Kenntnisse:
Fortgeschritten
brian johnson befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von exminsta Beitrag anzeigen
Hi Tiberius,

dieses Konzept erscheint mir mittlerweile ebenfalls nicht mehr so bombensicher und bringt im Endeffekt auch mehr Probleme, als ich dachte. Darum überdenke ich es auch gerade nochmal.

Im Grunde genommen ist meine Anforderung komplexer, als zunächst vermutet. Ich benötige Quasi zu den relativ einfachen Überprüfungen auf z.B. Level oder z.B. PartnerCode, Abhängigkeiten untereinander.

Heißt konkret: ein User mit Level 3 darf auf einen Datensatz nur Zugreifen, wenn er diesen Datensatz auch verfasst hat, ergo sein Username darin auftaucht.
So ein Datensatz enthält neben einem Usernamen auch noch den PartnerCode des Users, der diesen Datensatz erzeugt hat und das ist wichtig für die folgende Überprüfung.

Ein User mit Level 2 ist nämlich in der Realität meistens ein Chef mehrerer User mit Level 3 und besitzt ihre PartnerCodes. Heißt: ein User mit Level 2 darf alle Datensätze sehen, die mit einem der für ihn eingetragenen PartnerCodes matchen. Alle anderen Datensätze darf er nicht sehen. Hier darf aber keine Überprüfung mehr auf den Usernamen stattfinden.

Und genau dies versuche ich möglichst generisch zu lösen...; für Ansätze wäre ich sehr dankbar

Grüße
hi,

am besten siehst du dir mal Zend_Acl an, das sollte dir weiter helfen. am besten würdest du sowieso das Zend Framework dahinterschalten

gruß
__________________
PHP4?!?>>>Aktuelle PHP Version: 5.2.11 || 5.3.0
Suse 11.2 *vorfreude*
brian johnson 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
JS: Einführung - Javascript im Schichtenmodell nikosch Tutorials 4 11.04.2009 17:06
Array an Funktion übergeben Reen_Sc PHP Tipps 2008 1 05.09.2008 12:20
Funktionswert an andere Funktion übergeben Lightware PHP Tipps 2008 7 03.09.2008 13:46
Wert einer Funktion an andere Funktion übergeben Secondary PHP Tipps 2008 14 27.08.2008 10:36
Rekursive Funktion bricht ab... duras666 PHP Tipps 2008 9 28.04.2008 11:36
gpc_quotes funktion: verbesserungsvorschläge? Promaetheus PHP Tipps 2007 10 12.08.2007 19:29
Parameter an eine bestehende Funktion übergeben. Daskaras HTML, Usability und Barrierefreiheit 6 29.11.2005 10:14
PHP-GTK Tutorial Beitragsarchiv 9 02.11.2005 21:07
Alle Variablen einer Funktion in andere übergeben MaMo-Net PHP-Fortgeschrittene 9 22.10.2005 19:22
Rückgabewert einer rekrusiven Funktion PHP-Fortgeschrittene 7 06.10.2005 18:44
[Erledigt] Wie kann ich beliebig viele Werte an eine Funktion übergeben PHP Tipps 2005 11 25.01.2005 10:44
[Erledigt] array an eine funktion übergeben PHP Tipps 2004 9 19.08.2004 19:28
[Erledigt] Parameter an eine funktion übergeben PHP Tipps 2004 9 18.08.2004 14:14
Formular Daten an Funktion in selber Datei übergeben PHP Tipps 2004 5 21.07.2004 13:42
[Erledigt] Referenz auf Funktion übergeben PHP-Fortgeschrittene 7 20.07.2004 09:51

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
operatoren übergeben, operator übergeben, vergleichsoperator in variable festlegen php ohne eval, php operator übergeben, php object operator, php variable foreach funktion übergeben, php funktion operator, php operatoren übergeben, http://www.php.de/php-fortgeschrittene/58408-operatoren-einer-funktion-uebergeben.html, php funktion übergabe array, php übergabe operator als string, php true übergeben, operator als variable übergeben, php callback funktion übergeben, php function operator, operatoren variabel übergaben, soll es im userobjekt eine methode gebe php, php variablen functionen operatoren, operatoren und funktionen in phph, php function parameter operator

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