Funktionen und Rückgabe von Variablen
Jens
- php
0 Marko
hallo!
nachdem sich in letzter zeit viele dinge ständig wiederholen, fange ich derzeit an mir eine funktionsbibliothek aufzubauen. bisher hatte ich das alles während des seitenaufbaus gemacht und habe keine funktionen verwendet, weshalb mir da vielleicht etwas das verständnis für fehlt.
beispiel:
a) ich habe eine funktion, die das us-datum in das deutsche datum umwandelt:
<?php
function date2datum($date)
{
$tag = substr($date,8,2);
$mon = substr($date,5,2);
$jahr = substr($date,0,4);
$datum = $tag.'.'.$mon.'.'.$jahr;
return $datum;
}
?>
b) ich habe eine seite die diese funktion aufruft:
<?php
include ("mcu_functions.inc");
$aktdatum = date("Y-m-d", mktime());
echo 'Heute ist der '.date2datum($aktdatum).'.';
?>
Soweit so gut... alles funzt bestens. da ich aber in der funktion auch schon alle "datumsbestandteile" (tag, monat, jahr) einzeln vorliegen habe (substrings), würde ich gern auch auf die zugreifen können. um also auf das beispiel zurückzukommen:
echo 'Heute ist der '.date2datum($aktdatum).'. Das ist Tag '.$tag.' im Monat '.$mon.' des jahres '.$jahr.'.';
kann ich das irgendwie mit dieser _einen_ funktion machen? also mehrere variablen erzeugen, die ich irgendwann in der seite aufrufen kann? oder ist das gar nicht der sinn einer funktion?
gruß
jens
Hallo Jens,
es geht wenn Du die Variablen mit global deklarierst, Du musst in PHP dann allerdings in jeder Funktion am Anfang wieder global + variablennamen deklarieren.
Allerdings, wie Du schon gesagt hast ist der Sinn einer Funktion genau einen Wert zurückzugeben, und es ist sehr, sehr schlechter Stil mit globalen Variablen zu arbeiten (nicht weitersagen, ich mach das auch manchmal, gibt aber auf Dauer Chaos).
Bedeutend Sauberer wäre es, wenn Du eine Klasse Date erzeugst:
class Date
{
Var $tag; /* Attribute (Variablen) dieser Klasse */
Var $mon;
Var $jahr;
Var $datum;
Date($date) /* Konstruktor der Klasse */
{
$tag = substr($date,8,2);
$mon = substr($date,5,2);
$jahr = substr($date,0,4);
$datum = $tag.'.'.$mon.'.'.$jahr;
}
function NextDay() /* Beispiel für eine weitere Methode (Funktion) dieser Klasse */
{
return $tag + 1; /* Berechnung ist falsch, ist nur ein Beispiel */
}
}
Du legst Dann irgendwo ein Instanz (ein Objekt) von der Klasse an:
aktuell = new Date("04.08.2000");
Und kannst nun auf die einzelnen Attribute (Variablen) der Klasse zugreifen mit:
$heute = $aktuell->tag;
Ich hab den Code nicht getestet, und bin mir über die Syntax nicht ganz sicher, aber Du kannst ja noch mal RTFM (read the fucking manual) machen. Mit dem Hintergrund müsste es verständlich sein.
Gruss
Marko