Willkommen in der Webstatt
User-1 am 09.07.06 17:47

Hallo,
also ich habe eine Klasse in der alles abläuft und eine riesen funktion so um die 2000 Zeilen. Nun will ich aber nicht diese riesen Funktion in meiner Klasse haben, wegen der übersichtlichkeit. Diese Funktion braucht aber auch variablen aus der Klasse.

Includen kann man die Funktion ja nicht so einfach in die Klasse. Kann man da irgendwie was vererben oder wie läuft das ab. Hab in meinen Büchern und im Internet nichts gefunden. Hoffe ihr versteht mein Problem.

netcup.de Warum gibt es hier Werbung?
User-2 am 09.07.06 17:55

Die Methode an sich kannst du nicht einbinden, sehr wohl aber den Funktionskörper :)
<?php
class A {
function A() {
require 'A_A.php';
}
}
?>

User-1 am 09.07.06 18:01

Quote
Original von xyz-145
Die Methode an sich kannst du nicht einbinden, sehr wohl aber den Funktionskörper :)
<?php
class A {
function A() {
require 'A_A.php';
}
}
?>


jo ok wird auch gehen, aber ne funktion in ner funktion geht nicht oder?

User-2 am 09.07.06 18:17

> ne funktion in ner funktion geht nicht oder?

Geht schon, ist aber nicht besonder schön. xyz-48n doch lieber OOP ;)

User-3 am 09.07.06 18:18

rafft PHP, dass die Funktion jedes mal neu definiert wird? Ich dachte immer wenn man die Funktion dann zweimail aufrufen würde, gäbe es einen Error (function already exists)

User-2 am 09.07.06 18:24

Quote
Fatal error: Cannot redeclare asdf() ...

Böser Garbage Collector..!

Naja, musst wohl oder übel eine eigene Klasse aus deiner Funktion machen.

User-1 am 09.07.06 19:32

Quote
Original von xyz-145
[quote]Fatal error: Cannot redeclare asdf() ...

Böser Garbage Collector..!

Naja, musst wohl oder übel eine eigene Klasse aus deiner Funktion machen.[/quote]

jo, das problem ist, dass man die datei nur 1mal includen kann, nicht mehrfach, dann kommt der Fehler.

Aber wie mach ich das mit einer neuen klasse, dass war ja meine Frage

User-2 am 09.07.06 19:37

> jo, das problem ist, dass man die datei nur 1mal includen kann, nicht mehrfach, dann kommt der Fehler.

xyz-48n wäre require_once() angesagt.

> Aber wie mach ich das mit einer neuen klasse, dass war ja meine Frage

So:
<?php
class A {
function fkt() {
// hier die ominöse megafunktion.
$this->helfer();
}
function helfer() {
// hier die hilfsfunktion
}
}

class B {
var $A;
function B {
// klasse A "laden"
$this->A = new A();
$this->A->fkt();
}
}

new B();
?>

User-1 am 09.07.06 20:15

aja, so hab ich mir das schon fast gedacht, dass probier ich mal so morgen aus.
xyz-48ke

User-1 am 10.07.06 16:07

xyz-48ke, es geht und sieht so schöner aus.

User-4 am 10.07.06 16:18

2000 Zeilen? Darf ich mal fragen, was das für ne Funktion ist? Kann mir gar nicht vorstellen, dass sowas noch vernünftig auf nem Webserver läuft. :D

User-3 am 10.07.06 16:26

So riesig sollte eine Funktion auch einfach nicht werden. Selbst 200 Zeilen sind schon sehr sehr viel...

User-1 am 10.07.06 16:41

Quote
Original von xyz-141el
So riesig sollte eine Funktion auch einfach nicht werden. Selbst 200 Zeilen sind schon sehr sehr viel...


Jo, ist von einem Poker spiel, geht alle möglichen Kartenblätter mit einer if abfrage durch um zu gucken, was man für Karten hat.
Anders kann man das glaub ich nicht lösen.

User-3 am 10.07.06 17:04

Ich denke es gibt immer andere Möglichkeiten. Genauso weiß ich aber, dass man sich programmiertechnisch weiterentwickelt und nie zum Ende kommt wenn man alte Sachen immer anpassen will.

Du könntest beispielsweise jede Karte als ein Objekt machen - was sich in einem OOP Ansatz eh anbietet - und ihm eine Methode getType oder Ähnliches geben. xyz-48n einfach mit foreach über die Karten iterieren und Zähler aktualisieren.

User-4 am 10.07.06 17:09

Jo, dann legst du quasi ein Array mit den Karten (Objekte) an. Die einzelnen Objekte kriegen dann entsprechend Eigenschaften und Funktionen.
xyz-48n noch nen paar Funktionen für das komplette Kartenspiel.

User-1 am 10.07.06 17:37

Quote
Original von xyz-58
Jo, dann legst du quasi ein Array mit den Karten (Objekte) an. Die einzelnen Objekte kriegen dann entsprechend Eigenschaften und Funktionen.
xyz-48n noch nen paar Funktionen für das komplette Kartenspiel.


Jo, also die Karten sind ja schon in einem array. Die Funktion hat als parameter die Karten der Spieler und die in der Mitte (community Cards) und gibt dann z.B. Königs Paar oder Herz Flush zurück.

Ob so oder so, man muss per if/switch jede Menge prüfen.

Creative Commons Lizenzvertrag
Alle Inhalte des Webstatt-Archivs stehen unter einer Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Unported Lizenz.

Impressum & Kontakt