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 > SELFPHP > PHP Entwicklung und Softwaredesign

PHP Entwicklung und Softwaredesign Hier können strukturelle (Programmier-) Konzepte diskutiert und Projekte vorgestellt werden

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 05.03.2010, 16:15:46
ghost120 ghost120 ist offline
Anfänger
 
Registriert seit: Mar 2010
Alter: 29
Beiträge: 4
In einer Klasse auf andere Klassen zugreifen

Hallo,

ich beschäftige mich gerade ein bisschen mit OOP.
Jetzt hab ich mal auf die schnelle ein Beispiel geschrieben, weil ich mir einfach nicht sicher bin ob das so richtig ist, bzw. ob man es besser machen könnte....
Und zwar, in der test.php will ich auf alle Funktionen Zugriff haben und in den einzelnen Klassen auch.

test.php
PHP-Code:
<?php

include("testCore.php");

testCore::getTest()->getParamFromTestCore();

?>
testCore.php
PHP-Code:
<?php

require("testClass.php");

class 
testCore {
    
    private static 
$test;
    
    function 
initTest() {
        
self::$test = new testClass;    
    }
    
    public function 
getTest() {
        if(
self::$test === nullself::initTest();
        return 
self::$test;    
    }
    
    function 
showSomething() {
        return 
'Ausgabe...';    
    }
    
}

?>
testClass.php
PHP-Code:
<?php

class testClass {
    
    function 
getParamFromTestCore() {
        return 
testCore::showSomething;    
    }
    
}

?>
Die Funktionen und Namen sind jetzt nicht wirklich sinnvoll, aber wie gesagt, es soll auch nur ein Beispiel sein.
Also ich will im Core alle Klassen laden und dann in den einzelnen Klassen Zugriff auf die anderen haben.
Also wenn ich jetzt im Core noch die DB und TPL Klasse laden würde, hätte ich in der TestClass.php Zugriff auf diese Klassen.
Und ich dachte mir, aufrufen tu ich das ganze dann über den Core.
Aber ich denke mir halt, die beste Lösung ist es sicher auch nicht, also falls jemand Vorschläge hat, wäre ich sehr dankbar.

Eine andere Möglichkeit wäre auch noch, die ganzen Klassen in der test.php zu laden und dann wie folgt aufzurufen:

$db->getRow('query...');
$tpl->assign('...');

Allerdings habe ich ja dann in den Klassen wieder keinen Zugriff darauf.

Danke

lg Alex

Geändert von ghost120 (05.03.2010 um 16:26:26 Uhr)
Mit Zitat antworten
  #2  
Alt 05.03.2010, 18:07:22
Benutzerbild von urvater
urvater urvater ist offline
Senior Member
 
Registriert seit: Feb 2006
Ort: Wallrabenstein
Alter: 52
Beiträge: 1.044
AW: In einer Klasse auf andere Klassen zugreifen

Hier erst einmal der Link zur Sichtbarkeit in OOP.
Allerdings ist es sinnlos Klassen zu schreiben und dann auf deren Methoden innerhalb einer einzigen anderen Klasse zuzugreifen. Umsetzen könntest du es per extends aber wie schon geschrieben ist es nicht gerade sinnvoll.

Nimm das EVA Prinzip: Hier hast du Klassen, die für die Eingabe, Verarbeitung und die Ausgabe zuständig sind. Eingabe und Ausgabe benötigen keinen Zugriff auf die DB, da dafür die Verarbeitung zuständig ist.

Dein Problem kannst du leicht per Model View Controller erledigen lassen. Im Controller wird festgelegt, welches Model die Verarbeitung mit welchen Daten übernimmt und diese wiederum im View ausgegeben oder halt an den Controller zurück, damit dieser anhand des Ergbnisses den richtigen View setzen kann.

Eine Klasse, die auf alle Funktionen aller anderen Klassen zugreifen kann ist zum Beispiel aus folgendem Grund sinnlos:
Du hast eine Klasse, die sich um die Prüfung der Formulardaten kümmert.
Eine weitere kümmert sich um die Anfragen an die DB.
Eine dritte besitzt alle Funktionen um ein PDF nach deinen Wünschen erstellen zu können.
Deine 4. Klasse kann nun auf seine eigenen und auf die aller anderen zugreifen. Allerdings soll sie gerade nur "Hallo Welt" als P-TAG ausgeben. Wozu benötigt sie den nun die anderen Funktionen?
Mit Zitat antworten
  #3  
Alt 05.03.2010, 19:00:48
ghost120 ghost120 ist offline
Anfänger
 
Registriert seit: Mar 2010
Alter: 29
Beiträge: 4
AW: In einer Klasse auf andere Klassen zugreifen

Hallo,

danke erstmal für deine Antwort.
Eigentlich stimmt es schon, dass ich in einer Klasse nicht auf alle Funktionen und andere Klassen zugreifen brauche, dass Problem ist nur, dass es in bestimmten Klassen doch nötig ist, z.B. in der Login Klasse, hier brauch ich doch Zugriff auf die DB Klasse und evtl. auf weitere Klassen, wie würde man das hier lösen?

Außerdem wollte ich meine Klassen nun so schreiben, dass ich sie in Zukunft auch weiterverwenden kann, natürlich wäre da meine Lösung eine äußerst Dumme, da ich ohne den Core umzubauen alle anderen Klassen benötigen würde.

MVC habe ich mir schon angeschaut, ich wollte auch versuchen ein bisschen was in diese Richtung zu machen, aber das geht eben leider nicht so schnell.
Ich hab mir auch schon diverse PHP-Frameworks angesehen (CodeIgniter, CakePHP, Zend),
Zend gefiel mir von der Funktionen her zwar am besten,
aber da brauch ich noch mehr Zeit um mich einzuarbeiten, bei CakePHP waren die Möglichkeiten meiner Meinung nach nur begrenzt, daher wollte ich erstmal mein aktuelles Projekt ohne ein Framework coden,
da ich hierbei auch sicher mehr lerne.

Daher würde ich mich sehr freuen, wenn mir jemand ein paar Vorschläge gibt, wie ich das am besten löse.

Danke

lg Alex
Mit Zitat antworten
  #4  
Alt 05.03.2010, 22:34:01
Benutzerbild von urvater
urvater urvater ist offline
Senior Member
 
Registriert seit: Feb 2006
Ort: Wallrabenstein
Alter: 52
Beiträge: 1.044
AW: In einer Klasse auf andere Klassen zugreifen

Schau dir mal das Tutorial an: Peter Kropff
Es wird dir sicher weiter helfen.
Mit Zitat antworten
  #5  
Alt 06.03.2010, 14:56:51
ghost120 ghost120 ist offline
Anfänger
 
Registriert seit: Mar 2010
Alter: 29
Beiträge: 4
AW: In einer Klasse auf andere Klassen zugreifen

Hallo,

danke ich habe mir das nun durchgelsen, also wenn ich das richtig verstehe, meinst du ich sollte meine Klassen, die z.B. DB Zugriff brauchen mit extends von der DB Klasse erben lassen, oder?
Ist das denn die beste Möglichkeit, oder gibts noch eine andere?
Außerdem ist dann immer die Frage, was mache ich wenn ich später noch Zugriff auf weitere Funktionen aus anderen Klassen brauche, soll ich die dann alle Erben lassen?

Danke
Mit Zitat antworten
  #6  
Alt 06.03.2010, 16:08:14
Benutzerbild von urvater
urvater urvater ist offline
Senior Member
 
Registriert seit: Feb 2006
Ort: Wallrabenstein
Alter: 52
Beiträge: 1.044
AW: In einer Klasse auf andere Klassen zugreifen

Nein ich würde nicht alle benötigten Klassen einbinden. Im Tutoriel schreibt der Autor auch gleich am Anfang, daß er es selbst nicht so machen würde. Es ist halt nur zum Verstehen als Beispiel geschrieben worden.

Die Frage ist doch eigentlich, wie und wann willst/musst du welche Klasse nutzen. Nehmen wir als Beispiel ein Login nach Absenden der Userdaten(User,Pass).
Als erstes müssen die Formulardaten geprüft werden. Hierfür hast du eine Klasse FormCheck.
Dann müssen diese Daten mit der DB abgeglichen werden. Dafür hast du eine Klasse SQLQuery erstellt.
Als letztes erfolgt die Ausgabe ob der Login erfolgreich war oder nicht.

Wenn du das ganze als CMV umsetzen willst benötigst du noch eine Klasse Cotroller und eine Klasse Model. Der Cotroller muss die Klassen FormCheck und SQLQuery und deren Methoden nicht kennen. Die Klasse Model benötigt wiederum beides um die Daten überhaupt und sicher verarbeiten zu können. Da Model auf die DB vermutlich jedes mal zurück greifen muss wäre extends SQLQuery sicher nicht verkehrt. Da dieses Model vermutlich aber nicht nur Formulardaten verarbeiten muß würde hier ein new FormCheck reichen um diese beiden Felder zu prüfen, da wir ja nur das Ergebnis der Prüfung für die weitere Verarbeitung benötigen.

Du brauchst also nicht eine Klasse, die alles kann sondern je nach Bedarf verschiedene Klassen, die je nach Aufgabe, daß gewünschte Ergebnis liefern. Ich hoffe mal, daß ich das halbwegs verständlich rüber gebracht habe.
Mit Zitat antworten
  #7  
Alt 06.03.2010, 16:41:18
ghost120 ghost120 ist offline
Anfänger
 
Registriert seit: Mar 2010
Alter: 29
Beiträge: 4
AW: In einer Klasse auf andere Klassen zugreifen

Hallo,

danke für deine Antwort, ich hab das ungefähr verstanden, also wenn ich das jetzt als MVC umsetzen würde, dann würde ich die benötigten Klassen im Model einbinden, der Controller würde dann die ganzen Usereingaben an das Model weitergeben, welches die Daten verarbeiten würde und die Ausgabe zurück geben würde, damit der Controller die Daten ausgeben kann.
Allerdings weiß ich nicht genau, wie ich die Klassen in den Controller einbinden würde, kannst du mir da bitte noch ein Beispiel geben?

Danke
Mit Zitat antworten
  #8  
Alt 06.03.2010, 23:06:27
Benutzerbild von urvater
urvater urvater ist offline
Senior Member
 
Registriert seit: Feb 2006
Ort: Wallrabenstein
Alter: 52
Beiträge: 1.044
AW: In einer Klasse auf andere Klassen zugreifen

In diesem Tread wurde ein Tutoriel zu einem Framework verlinkt.
Ich rate dir diese/ Beispiel/e nur zum üben zu benutzen. Einige Funktionen sind dort veraltet und generell wird kaum auf Sicherheit und Fehlerbehandlungen eingegangen.
Um sich aber einen Überblick zu verschaffen bzw. für das Verständnis ist es recht gut geeignet.
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Mit ajax auf Klassen zugreifen Valentin PHP für Fortgeschrittene und Experten 0 27.04.2006 16:14:47
Klasse in Klasse aufrufen wollenschlaeger PHP für Fortgeschrittene und Experten 4 14.07.2005 14:05:32
Andere Klasse aus Klasse aufrufen NanoCyte PHP für Fortgeschrittene und Experten 22 28.06.2004 22:24:53
Blätterfunktion als Klasse! Funjoy PHP Entwicklung und Softwaredesign 0 25.06.2004 00:45:04
Methoden in Klassen includen bzw. ausserhalb der Klasse definieren darius PHP für Fortgeschrittene und Experten 6 31.12.2003 11:32:42


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


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


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