php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 24.05.2005, 11:51  
Gast
 
Beiträge: n/a
Standard klassen und methoden anderer klassen in methoden....

also...ich beschäftige mich nun damit, die von mir "produzierte" Website nun in Klassen abzufassen....(hui...reimt sich )
Ich hab als ich mein PHP Buch "durchgemacht" hab auch schon übungen mit klassen gemacht.....
nur gings da zb um ein auto und die funktion war beschleunigen und farbe.....
kennt wahrscheinlich jeder, ist ja ein gängiges beispiel....
nun wirds bei mir ein bischen umfangreicher.....

ich will nun eine klasse -> class Reservierung machen.
ein teil meines scripts fragt ab ob in dem gewählten Zeitraum ein Parkplatz frei ist......

so war die funktion bis jetzt aufgebaut....(statische Programierung)

PHP-Code:
<?php
<?
$gesamtbetrag "Gesamtbetrag:";
$euro "Euro";
$time__an $_POST['ankunfth'] . "." $_POST['ankunftm'];
$time__ab $_POST['abflugh'] . "." $_POST['abflugm'];
$time 12.00;
if(
$time__an $time)
{
    
$time_an 0.5;
}
else
{
    
$time_an 1;
}
if(
$time__ab $time)
{
    
$time_ab 1;
}
else
{
    
$time_ab 0.5;
}
/* bis hier werden der 1. und der letzte Tag berechnet. wegen halb und ganztagsauslastung */
$ankunft mktime(0,0,0,$_POST['ankunftmonat'],$_POST['ankunfttag'],$_POST['ankunftjahr']);
$abflug mktime(0,0,0,$_POST['abflugmonat'],$_POST['abflugtag'],$_POST['abflugjahr']);
$abflugreal=$abflug;
$i=0;
do
{
    
$datum_array[$i]=$abflug;
    
$abflug+=86400;
    
$i=$i+1;
} while(
$abflug <= $ankunft);
$tage count($datum_array);
$ende=$datum_array[count($datum_array)-1];
$database="berlin";
@include (
'modules/dbs.name');
foreach(
$datum_array as $key => $datumsangaben)                                /* < */
{
    
$date date("Y-m-d"$datumsangaben);
    
$res=@mysql_query("SELECT * FROM datum WHERE datum = '$date'") OR die('Datenbank Offline');
    
$num=@mysql_num_rows($res);
    if(
$num!=1)
    {
        
$auslesefehler_datum "<span>Ihre Datumsangaben waren nicht korrekt oder nach dem 31.12.2005</span>";
        
$_GET['reca'] = 1;
    }
    
$dsatz mysql_fetch_assoc($res);
    if(
$datumsangaben==$abflugreal)
    {
        
$dsatz['current_plaetze'] = $dsatz['current_plaetze'] + $time_an;
    }
    if(
$datumsangaben==$ende)
    {
        
$dsatz['current_plaetze'] = $dsatz['current_plaetze'] + $time_ab;
    }
    if(
$datumsangaben!=$abflugreal AND $datumsangaben!=$ende)
    {
        
$dsatz['current_plaetze'] = $dsatz['current_plaetze'] + 1;
    }
    if(
$dsatz['current_plaetze']<=$dsatz['max_plaetze'])                /* < */
    
{
        
$curent $dsatz['current_plaetze'];
        if(
$datumsangaben==$abflugreal)
        {
            
$currentp $curent $time_an;
        }
        if(
$datumsangaben==$ende)
        {
            
$currentp $curent $time_ab;
        }
        if(
$datumsangaben!=$abflugreal AND $datumsangaben!=$ende)
        {
            
$currentp $curent 1;
        }
        
$current[] = $currentp;
        
$place[] = $date;
        
$did[$key] = $dsatz['id'];
    }
    else
    {
        
$datum_no_place=$dsatz['datum'];
        
$no_place[$key] = $datum_no_place;
        
$_GET['reca'] = 1;
    }
}
include (
"modules/kosten.name");
?>
?>
fasse ich das nun alles in eine funktion in einer klasse, oder sollte ich dies in mehrere functionen aufteilen....
die wird wie gesagt meine erste Klasse und ich denke, wenn ich diese schaffe bekomm ich auch andere hin....
es is halt einfach das "erste mal"



Mfg

Julied


PS: Ihr müsst mir etz nicht das ganze in eine "vorgekaute" klasse packen..will ich auch ned....wär ja der lerneffekt weg...
am besten währen anregungen und beispiele.....
ich denke das ein robo oder meikel wissen was sie sagen bzw. schreiben müssen.
 
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 24.05.2005, 11:53  
Gast
 
Beiträge: n/a
Standard

zusätzlich währe noch zu erwähnen.....

die mysql anweisung sollte ich ja auch in eine eigene query klasse abfassen.....
aber in nem tut is gesagt worden man soll nicht von anderen klassen auf klassen zugreifen...
oder seh ich das etz falsch?
 
Alt 24.05.2005, 12:17  
Gast
 
Beiträge: n/a
Standard

kann mir da keiner helfen? bzw. tipps geben?

bin doch noch so ein n00b in klassen...
 
Alt 24.05.2005, 12:21  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.798
PHP-Kenntnisse:
Fortgeschritten
robo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblick
Standard

öhm naja um dir da ne saubere lösung zu nennen bin ich in OOP ned fit genug :P
robo47 ist offline  
Alt 24.05.2005, 12:25  
Gast
 
Beiträge: n/a
Standard

och robo...ne lösung brauch ich ned...will nix fertiges...
mir langt ja jeder tipp....egal wie unwichtig es erscheint...
das wird die erste klasse die ch schreib, wenn man mal von den beispielklassen aus dem buch absieht...
ich fang grad bei 0 an in bezug auf klassen...
also bist du garantiert besser in oop als ich
 
Alt 24.05.2005, 12:38  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.798
PHP-Kenntnisse:
Fortgeschritten
robo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblick
Standard

naja auf die wahrscheinlcihe chance hier dann zerissen zu werden :P

also da ich noch am aufbau meines arbeitsumfelds bin siehst bei mir so aus:

eigene mysql-klasse
eigene settings-klasse
eigene errorhandlerklasse

am anfang meiens scripts wird ne instanz von jeder erzeugt und wenn ich in ner weiteren klasse was davon brauche, wird über nen pointer im konstruktor der neuen klasse, auf meine mysql-klasse ein pointer erstellt mal kurzes schema:

PHP-Code:
<?php
include('mysql.class.php')
include(
'settings.class.php')
include(
'errorhandler.class.php')
// kurzform vereinfacht
class my_blubclass()
{
    private 
$_mysqlclasspointer;
    private 
$_settingsclasspointer;
    public function 
__construct($mysqlclasspointer,$settingsclasspointer)
    {
        
$this->_mysqlclasspointer = &$mysqlclasspointer;
        
$this->_settingsclasspointer= &$settingsclasspointer;

    }
.....
}


$error = new my_errorhandlerclass();
$mysql = new my_mysqlclass(parameter);
$settings = new my_settingsclass();

$blub = new my_blubclass(&$mysql,&$settings);
das ist momentan mein schema, aber ich hoff bald wieder etwas flüssiger zu sein und sobald ich mir nen UV-Filter und nen IR-Filter für mein teleobjektiv gekauft hab, werd ich mir wohl das hier mal anschaffen:
http://www.amazon.de/exec/obidos/ISB...696948-8122168

mfg
robo47
robo47 ist offline  
Alt 24.05.2005, 13:00  
axo
Erfahrener Benutzer
 
Registriert seit: 24.12.2004
Beiträge: 1.818
axo ist zur Zeit noch ein unbeschriebenes Blatt
Standard

naja @robo - das ganze ist ja schonmal nicht schlecht. die meisten OOP-fortgeschrittenen kommen erstmal gar nicht drauf, wie praktisch objektkomposition ist. /me persönlich hält das beispiel für optimal.
nur statt include() würde ich require_once() machen, damit das einbinden der jeweiligen klassen nicht permanent in warnings endet.

@julied:
lass die klassen erstmal sein und arbeite erstmal einige zeit mit functions . es ist noch ein großer schritt von deinem spaghetticode hin zur objektorientierung. so wie du das ganze hingeschrieben hast, lässt sich der code erstmal auch gar nicht so einfach zusammenfassen oder objektorientiert schreiben - du hast nämlich so gut wie jeden fehler gemacht, der code OOP-feindlich macht. kannst ja nichts dafür, es ist aber halt so. deswegen: erstmal mit functions üben und weiterprogrammieren. irgendwann wird's schon.
axo ist offline  
Alt 24.05.2005, 13:04  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.798
PHP-Kenntnisse:
Fortgeschritten
robo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von axo
naja @robo - das ganze ist ja schonmal nicht schlecht. die meisten OOP-fortgeschrittenen kommen erstmal gar nicht drauf, wie praktisch objektkomposition ist. /me persönlich hält das beispiel für optimal.
nur statt include() würde ich require_once() machen, damit das einbinden der jeweiligen klassen nicht permanent in warnings endet.
da bin ich ja schonmal zufrieden, require_once verwende ich in meinen scripten auch, das oben war eh nur ein zusammengetiptes beispiel :P

mfg
robo47
robo47 ist offline  
Alt 24.05.2005, 13:25  
Gast
 
Beiträge: n/a
Standard

naja...ich arbeite schon seit längerem mit functions....ich habe sie hier blos noch nicht angewendet, da dieses script schon 4 monate alt ist....
d.h damals lernte ich funktionen erstmal kennen...
heute schreibe ich das meiste in functionen....
ich hab dieses beispiel eben grad deswegen gewählt, weil es wohl eher schwieriger ist einen spaghetticode in eine Klasse zu verwandeln als 15 functions
 
Alt 24.05.2005, 13:36  
axo
Erfahrener Benutzer
 
Registriert seit: 24.12.2004
Beiträge: 1.818
axo ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Zitat von Julied64
weil es wohl eher schwieriger ist einen spaghetticode in eine Klasse zu verwandeln als 15 functions
eben. aus diesem grund wandelt man auch nicht in eine klasse direkt um, sondern macht aus dem spaghetticode erstmal einzelne functions, die man dann zusammenfasst, z.b. indem man sich einen if-else-block nach dem anderen und von innen nach außen krallt und jeweils in eine eigene funktion packt.
erst dann wird klar, welche funktionen in eine klasse gehören, welche funktion durch eine kleine änderung an einer anderen funktion obsolet wird, etc. ... und viel später kann man dann funktionen, die ähnliches tun, zu klassen zusammenbauen.
axo ist offline  
 


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
Zugriff auf Objekte anderer Klassen nieselfriem PHP Tipps 2007 7 14.05.2007 12:48
Klassen Fatal Error PHP Tipps 2005-2 3 19.10.2005 15:31

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
klasse optimal php

Alle Zeitangaben in WEZ +1. Es ist jetzt 18:32 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.