SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

PHP 5.3 & MySQL 5.1

PHP 5.3 & MySQL 5.1 zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > PHP für Fortgeschrittene und Experten
Hilfe Community Kalender Heutige Beiträge Suchen

PHP für Fortgeschrittene und Experten Fortgeschrittene und Experten können hier über ihre Probleme und Bedenken talken

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 18.07.2004, 22:01:31
mad-boy mad-boy ist offline
Junior Member
 
Registriert seit: Aug 2002
Beiträge: 395
mad-boy eine Nachricht über ICQ schicken
PHP Klasse: Module hinzuladen => Realisation

Hi,
ich bastel gerade an einer Communityklasse, nun überlege ich wie ein Interface zu realisieren ist, welches das hinzuladen von Modulen unterstützt. Klar, man könnte bestimmte funktionen nur Laden wenn irgendeine Variable auf true steht, das hiesse aber, dass alle Funktionen fest in der Klasse eingebaut sind. Finde ich persönlich etwas blöd, da ich unnötigen Code ungern irgendwo mitschleppe. Daher die Frage, wie löst ihr das wenn ihr Klassen erstellt die mit Modulen arbeiten? Gibts vielleicht ein Gegenstück zu extends? Also nicht eine Klasse die auf einer anderen aufbaut, sondern eine Klasse die in eine andere hereingeladen wird?

Gruss, Michael
Mit Zitat antworten
  #2  
Alt 02.08.2004, 01:22:28
Caddata Caddata ist offline
Anfänger
 
Registriert seit: Apr 2004
Beiträge: 13
Ich glaube, was du suchst nennt man "Abstrakte Klasse".

Eine Abstrakte Klasse stellt eine sog. Factory-Methode zur Verfügung, mit der man Module der Klasse hinzuladen kann.
Ein weiterer Vorteil ist, das man bei der Instanzierung einer Klasse über die Factory-Methode bei einem Fehler diesen auch zurückgeben kann (was ein normaler Konstruktor ja nicht drauf hat). Die Klasse ist abstrakt, weil sie keinen eigenen Konstruktor hat und damit nicht direkt instanziert werden kann.

Da die Factory-Methode ein neues Objekt zurückliefert (im Erfolgsfall), sollte man die Rückgabe referenzieren! In PHP5 ist dies (glaub ich) nicht mehr nötig...

Ein Beispiel: (PHP4!!!)
PHP-Code:

// Abstrakte Klasse
// $type = Name des Moduls
// Datei foo.php

class foo
{
  
// Factory-Methode
  
function &factory($type,$params) {
    if(
is_string($type)) {
      @include_once(
$type.".php");
      
$bar=&new $type($params);
      if(
is_object($bar)) {
        return 
$bar;
      } else {
        return 
"Klasse konnte nicht instanziert werden!";
      }
    } else {
      return 
"$type muss ein String und ein gültiger Klassenname sein!";
    }
  }

}

// Modul muss als eigene Datei abgelegt werden
// Datei bar.php

class bar
{
  var 
$_params=array();
   
  
// Konstruktor
  
function bar($params) {
    
$this->_params=$params;
  }
  
  
// ne Methode
  
function getParams() {
    return 
$this->_params;
  }
}



// Verwendung
// Datei use_foobar.php

require_once("foo.php");
$params=array('hallo'=>'welt');

$foobar=&foo::factory('bar',$params);
if(
is_object($foobar)) {  
  
// Klasse geladen
  
print_r($foobar->getParams());
} else {
  
// Fehler
  
echo $foobar;

Dabei kann die Klasse bar auf foo aufbauen (class bar extends foo), muss sie aber nicht!

Ich hoffe, ich hab dich richtig verstanden und konnte dir helfen.

Grüße,
Marco
__________________
If you want to learn it, teach it!
http://www.pear-forum.de

Geändert von Caddata (02.08.2004 um 01:44:00 Uhr)
Mit Zitat antworten
  #3  
Alt 02.08.2004, 10:39:48
mad-boy mad-boy ist offline
Junior Member
 
Registriert seit: Aug 2002
Beiträge: 395
mad-boy eine Nachricht über ICQ schicken
Hi,
ja danke, das war das was ich suchte! :)

So ähnlich hatte ich es auch, nur waren bei mir ein paar Fehler in den Referenzen enthalten! Aber damit wirds wohl gehen, leuchtet ein! :)
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 01:45:47 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt