PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP für Fortgeschrittene und Experten (http://www.selfphp.de/forum/forumdisplay.php?f=13)
-   -   Class! (http://www.selfphp.de/forum/showthread.php?t=5089)

Funjoy 31.07.2003 10:07:43

Class!
 
Hi

Ich suche gute Tuts über Klassen in PHP habe schon mir ne einführung angeschaut! Bis jetzt weiss ich wie das Grundgerüst aussieht und wie einzelnes Funktioniert aber mit den Zuweisern $this un new bin ich noch nicht sehr gut vertraut kennt einer von euch gute seiten die das erklären?

Hier das Grundgerüst:

PHP-Code:

<?PHP
class auto {
    var 
$variable
 
function Variable{
...
}
}
?>

Mfg Funjoy

Ben20 31.07.2003 10:15:42

Naja, ne Seite kenne ich jetzt nicht aber ich kann Dirs vielleicht erklären!

Klassen sind ja bekanntermaßen bestandteil von Obejektorientierter Programmierung und da gibts eben wie der Name schon sagt Objekte. Eine Klasse ist dabei das Grundgerüst eines Objekts.

Bsp. wäre ein Suzuki Swift mit Klimaanlage in weiß ein Objekt der Klasse Auto! Jedes Objekt hat eigenschaften (Farbe, usw.) die von der Klasse mitgeliefert werden. Die Werte dieser Eigenschaften sind aber immer verschieden von Objekt zu objekt.


Jetzt zu new und $this

mit

$meinAuto = new Auto()

legst ein neues Objekt der Klasse Auto an (also ein konkretes Auto)

$meinAuto->farbe = "weiß";

setzt den Wert der Eigenschaft farbe für das Objekt $meinAuto auf "weiß"



Mit $this beziehst Du Dich auf das aktuelle Objekt (meinstens (immer?) in Methoden (= sowas wie Funktionen) innerhalb einer Klasse:


Bsp:

Das ist Deine Klasse:

class Auto() {

var $motorzustand =;

//Dies ist der Konstruktor - diese Funktion wird automatisch aufgerufen, wenn ein neues Autoobjekt angelegt wird!
function Auto() {

$this->motorzustand = 'aus';

}

function starte_motor() {

$this->motorzustand = 'an';

}


}


Dann kannst Du das machen:

$suzuki = new Auto();

echo $suzuki->motorzustand; // Ausgabe aus

$suzuki->starte_motor();

echo $suzuki->motorzustand // Ausgaben an



Ich hoffe es nützt Dir was!

chris17 31.07.2003 10:21:08

Klassen und Objekte

Funjoy 31.07.2003 10:47:10

Besser konnte man das Nicht erklären wie du Ben20 :-)

Bis jetzt habe ich alles geraft aber noch eine Frage kann man $this auch ausserhalb einer Funktion bzw. Klasse benutzten oder kann $this nur inerhalb einer Funktion bzw. Klasse benutzt werden?

Aber sonst DANKE für das Kleine TUT was mir erstmal vollkommen ausreicht ;-)

Ben20 31.07.2003 11:03:44

Soweit mir bekannt kannst Du $this nur innerhalb von Klassen benutzten, da es sich ja immer auf "aktuelle" Objekt bezieht.

Funjoy 31.07.2003 12:31:52

So nun habe ich meine erste klasse erstellt welche auch funktioniert bloss der text welcher in einer Tabelle soll, steht neben der Tabelle hier mal der Code:

<?php
class fehler {
var $fehler_text;

function fehler_ausgabe(){
echo "
<html>
<head>
<title>Free4Webmaster.net - All for your Website ...</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<table border="0" cellpadding="0" cellspacing="2" width="584" align="left">
<tr><td width="575" class="navi_cat"><div align="left"><font color="#FF0000" size="3"><strong>Fehler</strong></font> </div></td>
<td width="7" class="navi_cat"></td><td width="2" class="navi_cat"></td>
</tr><tr><td colspan="3" class="navi_left">".$this->getausgabe().". <a href='javascript:history.back()'>Zur&uuml;ck</a></td></tr>
</table>
</body>
</html>";
}
function getausgabe()
{
return $this->fehler_text;
}
}
?>

Um nun die Klasse auf zu rufen habe ich das so gemacht:

<?php
$f_text = new fehler;
$f_text->fehler_ausgabe();
echo $this->$fehler_text = "Dein Name oder Passwort ist Ung&uuml;ltig!";
?>

Es wird zwar alles ausgegeben aber der neue Text wird neben der Tabelle ausgegeben wie kann ich das verhindern?

Mfg Funjoy

Ben20 31.07.2003 12:36:05

<?php
$f_text = new fehler;
$f_text->fehler_ausgabe();
echo $this->$fehler_text = "Dein Name oder Passwort ist Ungültig!";
?>

So wird die Tabelle ausgeben, dann wird der fehler_text nicht gesetzt (weil $this->$fehler_text und nicht $f_text->fehler_text (ganz wichtig nach -> kein $) und ausgeben!


Versuchs mal so:

<?php
$f_text = new fehler(); // () nicht vergessen
$f_text->fehler_text = 'Dein Name oder Passwort ist falsch!';
$f_text->fehler_ausgabe();
?>

Funjoy 31.07.2003 17:08:43

Jo jetzt funzt es ;-)


Mfg Funjoy


Alle Zeitangaben in WEZ +2. Es ist jetzt 20:33:36 Uhr.

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