php.de

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

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 05.09.2006, 16:53  
Erfahrener Benutzer
 
Benutzerbild von Lumio
 
Registriert seit: 12.10.2007
Beiträge: 149
PHP-Kenntnisse:
Fortgeschritten
Lumio ist zur Zeit noch ein unbeschriebenes Blatt
Standard Zugriffsrechte fuer externe Module

Hi!
Ich programmiere grad ein hauseigenes CMS und benoetige gerade Hilfe.
Vorweg: Ich programmiere dieses CMS in erster Linie nicht fuer andere sondern fuer mich, es sollte jedoch trotzdem jeder verwenden koennen.

Also zu meiner Frage:
Ich habe eine kleine Klasse, die mir verschiedene Module bzw Plugins ausfuehrt. Nun gibt es da ein Problem: Wie kann ich verhindern, dass diese Module auf einige Funktionen, die ich in meinem Projekt irgendwo anders definiert habe, nicht zugreifen koennen.

Ich programmiere das ganze in PHP 4 und es sollte auch fuer diese Version kompatibel sein.

Schonmal vielen dank
Lumio ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 05.09.2006, 18:10  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Wie meinst du das - dass zB die News-Klasse auf nur bestimmte Funktionen der Foren-Klasse zugreifen kann? Also die Anzahl der Threads ermitteln darf, aber nichts neues Eintragen kann? Ohne PHP5 auch noch..

Ich weiß nicht ob es dafür bereits Design-Pattern gibt (wahrscheinlich schon, möglicherweise Zustands/State-Pattern).

Die Klasse X die auf Klasse Y zugreifen möchte identifiziert sich bei dieser. Diese ändert daraufhin ihren Zustand und gibt entweder das angeforderte Ergebnis oder einen FALSE oder NULL Wert.

PHP-Code:
<?php
class X
{
  function 
X()
  {
    
$y = new Y();
    
$y->setState(__CLASS__); // __CLASS__ ab 4.3.0 verfügbar
    
echo $y->getInfoA();
  }
}

class 
Y
{
  var 
$state;

  function 
Y()
  {
    
$this->state 0;
  }

  function 
setState($ident)
  {
    switch (
strtoupper($ident)) {
    case 
'KLASSE_A':
    case 
'KLASSE_B':
      
$this->state 0// keine Rechte
      
break;
    case 
'X':
    case 
'KLASSE_Z':
      
$this->state 1// mehr Rechte
      
break;
    }
  }
  
  function 
getInfo()
  {
    if (
$this->state 0) {
      return 
'eigentliche Funktionsantwort';
    } else {
      return 
FALSE;
    }
  }
}
?>
Bin allerdings nicht sicher ob das Zustands-Pattern wirklich das richtige ist. Dass dadurch dein kompletter Code, jede einzelne Methode aufgebläht wird durch die Zustands-Abfrage muss dir klar sein.
Meine Meinung: Das ist die Mühe, erst Recht mit PHP4 nicht wert. Lieber PHP5 benutzen, Ableiten und protected/private Funktionen benutzen.
Zergling-new ist offline   Mit Zitat antworten
Alt 05.09.2006, 19:26  
Erfahrener Benutzer
 
Benutzerbild von Lumio
 
Registriert seit: 12.10.2007
Beiträge: 149
PHP-Kenntnisse:
Fortgeschritten
Lumio ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Naja, deine Methode kann man leider umgehen. Aber danke fuer deine Antwort.
Naja, es sollte noch fuer PHP4 gehen.
Natuerlich koennte ich das alles fuer PHP 5 machen, aber da warte ich erst, bis PHP 6 draussen ist.

Vielen Dank
Lumio ist offline   Mit Zitat antworten
Alt 05.09.2006, 19:52  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Das war ein Beispiel. Von mir aus kannst du zum Zustand-Setzen auch noch ein Passwort übermitteln. Selbstverständlich muss deine Y-Klasse dann zur Ansicht und Bearbeitung unzugänglich sein, das muss sie aber immer, sonst kannst du sie natürlich immer umgehen.
Zergling-new ist offline   Mit Zitat antworten
Alt 05.09.2006, 22:32  
Erfahrener Benutzer
 
Registriert seit: 18.07.2004
Beiträge: 2.162
PHP-Kenntnisse:
Fortgeschritten
Basti
Standard

Hi "Butterbrei", willkommen.

Mit debug_backtrace() kanns du die aufrufende Klasse ermitteln und mit Konstanten mehrfache Instanzierung von Klassen verhindern. Denkbar wäre auch, den Modulen verschiedene Schlüssel mitzugeben (vielleicht das, was "Zergling" mit Passwort meinte), also wiederum Objekte, die die Client-Klasse übergibt und sih damit als berechtigt ausweist.

Letztlich ist das aber alles nur tierisch aufwändigund extrem fragwürdig. Sieht ja so aus, als wenn du anbieten möchtest, dass sich die Benutzer deines CMS Module von Drittanbietern aus dem Netz installieren können und diese eben keinen Mist machen sollen. Nur, Mist machen können sie ja eh - ob mit der Datenbankverbindung, die sie ja wohl haben, mit Mail- oder Socket-Funktionen, Dateioperationen (Session-Files manipulieren sollte ja immer drinnen sein) oder was auch immer.

In dem Fall wirklich besser, die API gut zu dokumentieren und Module von Drittanbietern ggf. zu zertfizieren.

PHP 5 bietet da natürlich viel mehr Komfort, aber auch da kannst du dein Modul nicht in einen Sandkasten setzen.

Basti
Basti 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
Module in PHP Anwendung optional anbieten goofreezer PHP Tipps 2008 8 08.07.2008 19:41
externe Variable im Skript ausgeben kampfnickel PHP Tipps 2007 17 29.01.2007 18:05
[Erledigt] daten aus string entfernen über externe datei PHP Tipps 2006 4 22.05.2006 20:34
html2pdf: externe css einbinden webazubi PHP-Fortgeschrittene 8 21.03.2006 01:04
Zip-Funktionen per Module in PHP4.4.0 einbinden PHP Tipps 2006 3 23.01.2006 11:11
Externe HTML oder PHP Datei auslesen (von XAMPP ins WWW) PHP Tipps 2005-2 4 09.09.2005 08:12
Module im Eigenbau (Problem mit includes) ChewyF5 PHP-Fortgeschrittene 3 27.07.2005 09:35
wer kann Zugriffsrechte für [url]http://xy.de/[/url] vergeben. ggfan Off-Topic Diskussionen 1 22.07.2005 16:15
[Erledigt] phpMyAdmin Fehler Datenbanken 1 24.04.2005 11:33
Externe Datei auslesen und auf Webspace speichern Beitragsarchiv 9 19.04.2005 16:44
zugriffsrechte beim phpbb Off-Topic Diskussionen 4 12.03.2005 17:52
PHP findet keine Module PHP Tipps 2005 6 02.02.2005 10:01
Zugriffsrechte bei Testserver unter XP PHP Tipps 2005 3 06.01.2005 11:17
Brauch MySQL Zugriffsrechte auf einem STRATO Server??? PHP Tipps 2004 12 21.09.2004 15:04
Externe Seiten einlesen... PHP Tipps 2004 3 12.07.2004 17:58

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
mit getinfo() auf externe variable zugreifen, auf externe class zugreifen php, php klasse auf externe klasse zugreifen, php klassen extern

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

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.