php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Scripts > BRAINSTORMING PHP/SQL/HTML/JS/CSS
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


BRAINSTORMING PHP/SQL/HTML/JS/CSS Ihr habt eine Idee, aber keinen genauen Ansatz? Diskutiert mit anderen Usern des Forums über eure Gedankengänge um evtl. hilfreiche Ideen zu bekommen!
Normale Fragen bitte weiterhin in die entsprechenden Foren!

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 11-09-2007, 20:55
martinm79
 Registrierter Benutzer
Links : Onlinestatus : martinm79 ist offline
Registriert seit: Jan 2004
Ort: Deutschland
Beiträge: 744
martinm79 ist zur Zeit noch ein unbeschriebenes Blatt
Standard Interface einer abstracten Klasse speichern?

Abend.

Ich habe mir gerade die Benutzung zu den abstrakten Klassen und Interfaces durchgelesen.

Soweit ist mir alles klar.
Nur wo speicher/schreibe ich das Interface?
In einer extra Datei oder in der Datei wo ich die abstrakte Klasse definiert/geschrieben habe?
__________________
Gut geraten ist halb gewußt.
Mit Zitat antworten
  #2 (permalink)  
Alt 11-09-2007, 21:42
highrise
 Member
Links : Onlinestatus : highrise ist offline
Registriert seit: Apr 2006
Ort: zu Hause *g*
Beiträge: 257
highrise ist zur Zeit noch ein unbeschriebenes Blatt
Standard

technisch gesehen spielt es keine rolle, so lange php das interface bekannt gemacht wird.

logisch gesehen gehört das interface in eine eigene datei, denn es kann ja auch noch andere Klassen geben, die das selbe interface implementieren...

wenn du sicher gehen willst, dass du das bekanntmachen nicht aus versehen vergisst, kannst du die interface-datei mit require_once von der klassendatei einbinden lassen...

greetz, high
__________________
Good programming is 40% experience, 20% skill, 20% RTFM, 15% caffeine, and 5% attention to detail.
When everything else fails, manipulate the data...
Beschriftungen / Großformatdruck / Werbemittel
Mit Zitat antworten
  #3 (permalink)  
Alt 11-09-2007, 21:51
martinm79
 Registrierter Benutzer
Links : Onlinestatus : martinm79 ist offline
Registriert seit: Jan 2004
Ort: Deutschland
Beiträge: 744
martinm79 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Aha. Ja also ich hätte ja auch auf das abspeichern in einer einzelnen Datei getippt. Den Aspekt, das das Interface auch von anderen Klassen genutzt werden kann habe ich noch garnicht bedacht und spricht ja auch noch dafür.

Hatte mir diese Frage aber erst überhaupt gestellt, weil ja das Interface nicht immer sehr umfangreich sein muß. Und wenn das extra in einer Datei gespeichert ist und mit require_once eingebunden wird, kostet es ja Zeit.
Also Zeit die wenigen Zeilen des Interfaces in dieser Datei zu laden, aber man ist ebend flexibler.
__________________
Gut geraten ist halb gewußt.
Mit Zitat antworten
  #4 (permalink)  
Alt 11-09-2007, 22:52
tontechniker
 PHP Senior
Links : Onlinestatus : tontechniker ist offline
Registriert seit: Jul 2005
Beiträge: 1.972
tontechniker ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
das das Interface auch von anderen Klassen genutzt werden kann habe ich noch garnicht bedacht
Wofür auch immer man sonst ein Interface braucht ... (nicht umbedingt in mehreren Klassen aber zumindest nicht fest).
__________________
Die Regeln | rtfm | register_globals | strings | SQL-Injections | []
Mit Zitat antworten
  #5 (permalink)  
Alt 12-09-2007, 18:20
martinm79
 Registrierter Benutzer
Links : Onlinestatus : martinm79 ist offline
Registriert seit: Jan 2004
Ort: Deutschland
Beiträge: 744
martinm79 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ok.
Da mich das alles interessiert, ich aber nicht immer alles laden möchte, was ich vielleicht nicht immer benötige, mal eine Fragen zu einem kleinen Beispiel:

Hier ist ein kleines Command Muster als Beispiel.

Also wenn ich sowas schreibe, denn speicher ich die Interfaces und Klassen in jeweils einzelnen Dateien in dem gemeinsamen "libs" Ordner.
Würdet ihr das soweit auch machen?
Wenn nicht, wie würdet ihr das machen?

Dann würde ich in der Datei "Batch.inc.php" wo ich die Klasse "Batch" drinne gespeichert habe genau über der Zeile wo die Klasse anfängt:
PHP-Code:
require_once('libs/interface_Invoker.inc.php');
require_once(
'libs/interface_Command.inc.php');
class 
Batch implements Invoker 
die benötigten Interfaces per require laden.




Und wenn ich ein Befehl aufrufen möchte wie zum Beispiel:
PHP-Code:
$Batch->add ( new Install 'Pear::MDB2' ) ); 
dann würde ich davor immer die nötige Datei laden in der ich den Befehl deklariert habe:
PHP-Code:
require_once('libs/install.inc.php');
$Batch->add ( new Install 'Pear::MDB2' ) ); 
Mal abgesehen von dem require sind die Muster eine feine Sache.
__________________
Gut geraten ist halb gewußt.
Mit Zitat antworten
  #6 (permalink)  
Alt 12-09-2007, 18:36
highrise
 Member
Links : Onlinestatus : highrise ist offline
Registriert seit: Apr 2006
Ort: zu Hause *g*
Beiträge: 257
highrise ist zur Zeit noch ein unbeschriebenes Blatt
Standard

zum ersten teil würde ich spontan mal sagen, das kann man durchaus so machen...

Klassen solltest du nicht unmittelbar vor ihrer verwendung laden, sondern einmal zu beginn des scripts.

seit php5 kannst du auf den ganzen require geschnick für klassen verzichten, sofern du deine dateien sauber benennst und eine __autoload() funktion schreibst (siehe handbuch)

greetz, high
__________________
Good programming is 40% experience, 20% skill, 20% RTFM, 15% caffeine, and 5% attention to detail.
When everything else fails, manipulate the data...
Beschriftungen / Großformatdruck / Werbemittel
Mit Zitat antworten
  #7 (permalink)  
Alt 12-09-2007, 18:54
martinm79
 Registrierter Benutzer
Links : Onlinestatus : martinm79 ist offline
Registriert seit: Jan 2004
Ort: Deutschland
Beiträge: 744
martinm79 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Aha danke, diese Funktion hatte ich ingoriert.
__autoload() werde ich dann so wie in diesem Beispiel einsetzten und in der Globalen conf.inc.php die Namen definieren und in der Globalen function.inc.php die Funktion speichern.

Habt ihr schon in PHP Muster eingesetzt? Wo habt ihr die Dateien sonst immer gespeichert?

Alternativ hatte ich mir überlegt, den Globalen Ordner "libs" zu unterglieder, in z.B
"libs/diexyanwendung/" und "libs/diexyzanwendung/" das es alles bisschen übersichtlicher wird.

Ansonsten habe ich irgendwann 100 Dateien im "libs" Ordner und das wäre unübersichtlich.

Falls ich ein spezielles Modul wie ein Forum habe, denn habe ich in diesem Forum ja auch ein "libs" Ordner wo ich denn auch diese Untergliederung machen würde.

Wie würdet ihr das machen, bzw.wie macht ihr es?
__________________
Gut geraten ist halb gewußt.
Mit Zitat antworten
  #8 (permalink)  
Alt 12-09-2007, 22:31
tontechniker
 PHP Senior
Links : Onlinestatus : tontechniker ist offline
Registriert seit: Jul 2005
Beiträge: 1.972
tontechniker ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Je nach dem wie deine Klassennamen aussehen kannst du für jeden _ einen / setzen und bekommst so automatisch eine gute Struktur in der du auch Interfaces unterbringen kannst. Das hat denn Vorteil das du bei den Klassen nicht mit eine extra Konfiguration arbeiten musst. Wenn du Klassen oder mehrere Funktionen als __autoload-Handler definieren willst hilft auch spl_autoload_register.
__________________
Die Regeln | rtfm | register_globals | strings | SQL-Injections | []
Mit Zitat antworten
  #9 (permalink)  
Alt 12-09-2007, 23:12
martinm79
 Registrierter Benutzer
Links : Onlinestatus : martinm79 ist offline
Registriert seit: Jan 2004
Ort: Deutschland
Beiträge: 744
martinm79 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Guter Tipp, danke. Werde es denn nach Packages bennen.
Soweit ist mir alles klar.

Nur Interfaces kann ich ja nicht automatisch laden, weil es ja keine Klasse ist oder hab ich nur die Funktion spl_autoload_register nicht kapiert?
__________________
Gut geraten ist halb gewußt.
Mit Zitat antworten
  #10 (permalink)  
Alt 13-09-2007, 09:01
PHP-Desaster
 PHP Expert
Links : Onlinestatus : PHP-Desaster ist offline
Registriert seit: Mar 2006
Beiträge: 3.105
PHP-Desaster befindet sich auf einem aufstrebenden Ast
Standard

Doch, auch bei nicht geladenen Interfaces wird die __autoload()-Funktion aufgerufen. Da musst du dann halt nur entsprechend anders drauf reagieren. Du könntest beispielsweise wie in .NET alle Interfaces mit I im Namen beginnen. Bsp: IDisposable
Mit Zitat antworten
  #11 (permalink)  
Alt 13-09-2007, 13:06
martinm79
 Registrierter Benutzer
Links : Onlinestatus : martinm79 ist offline
Registriert seit: Jan 2004
Ort: Deutschland
Beiträge: 744
martinm79 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Achso, danke für den Hinweis.
Hatte mal ein Beispiel gesehen, wo es mit I begann. Jetzt weiß ich auch warum.
__________________
Gut geraten ist halb gewußt.
Mit Zitat antworten
  #12 (permalink)  
Alt 13-09-2007, 13:24
ministry
 PHP Junior
Links : Onlinestatus : ministry ist offline
Registriert seit: Jun 2006
Ort: KI / KA
Beiträge: 965
ministry ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ich hab direkt noch ne Frage zur __autoload - Funktion. Das funktioniert ja nur, wenn eine Instanz per new erzeugt wird. Wenn die Instanz aber durch eine statische Methode erzeugt wird (z.b. Singleton-Pattern), geht es nicht. Kann man das lösen oder muss man diese Klassen immer vorher mit require einbinden?
__________________
ich glaube
Mit Zitat antworten
  #13 (permalink)  
Alt 13-09-2007, 15:59
PHP-Desaster
 PHP Expert
Links : Onlinestatus : PHP-Desaster ist offline
Registriert seit: Mar 2006
Beiträge: 3.105
PHP-Desaster befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Wenn die Instanz aber durch eine statische Methode erzeugt wird (z.b. Singleton-Pattern), geht es nicht.
Wie erzeugst du eine Klasse ohne new??
Mit Zitat antworten
  #14 (permalink)  
Alt 13-09-2007, 16:04
ghostgambler
 Master
Links : Onlinestatus : ghostgambler ist offline
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
ghostgambler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von PHP-Desaster
Wie erzeugst du eine Klasse ohne new??
Bei Singleton ist der Konstruktur privat und wird durch eine statische Methode aufgerufen ... recht hat er, da wird das ganze Komplizierter, aber auch nicht unmöglich. Factory-Pattern kann helfen, __autoload kann man dann vergessen~
Mit Zitat antworten
  #15 (permalink)  
Alt 13-09-2007, 16:20
ministry
 PHP Junior
Links : Onlinestatus : ministry ist offline
Registriert seit: Jun 2006
Ort: KI / KA
Beiträge: 965
ministry ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Wie erzeugst du eine Klasse ohne new??
PHP-Code:
$db =& db::get_instance(); 
z.b.

Zitat:
__autoload kann man dann vergessen
ok, dann brauche ich danach nicht weiter suchen. Factory würde gehen, stimmt.

Zitat:
recht hat er
Falls du mich meinst, ist er immer noch ne sie, sei dir aber verziehen
__________________
ich glaube
Mit Zitat antworten
Antwort

Lesezeichen


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

Themen-Optionen
Thema bewerten
Thema bewerten:

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 an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 13:28 Uhr.