Hallo
Wo kann ich einfache -kurze OOP Class finden?
Es sollte nur zum lernen sein, deswegen auch möglichst mit wenig Code?
ich habe schon auf phpclasses gesucht ..aber dort verliert man überblick
Hallo
Wo kann ich einfache -kurze OOP Class finden?
Es sollte nur zum lernen sein, deswegen auch möglichst mit wenig Code?
ich habe schon auf phpclasses gesucht ..aber dort verliert man überblick
Bekommst du.. - bin da selbst noch nicht soo fit aber egal
Es wäre nicht schlecht ein paar versch. classes
da auf phpclasses (wie geschrieben) verliert man überblick
Also hier mal ein bisschen der versuch es zu zeigen...
<?php
//Eine neue Klasse definieren
class auto{
//Eine Variable definieren (von überall erreichbar wegen public)
public $AUTO;
//function die beim Öffnen der kLasse ausgeführt wird ( new auto; ) mit paramerter der übergeben wird (in diesem Fall/kein zwang! )
function __construct($name){
//Der variable AUTO['name'] ihren wert geben, genausogut könnte hier auch $this->auto_name stehen, wenn wir eine Variable $auto_name hätten.
$this->AUTO['name'] = $name;
}
//Eine neue funct definieren die beim Aufruf Eine Überschrift und die Informationen zu AUTO ausgibt
//public ist optional und standartmäßig definiert (auch wenn mans weglässt) - die funktion von public habe ich oben schonmal beschrieben
public function auto_infos(){
//echo "<h2>Infos zu ".$this->AUTO['name']."</h2>";
echo "<h2>Infos zu ".self::auto_name()."</h2>";
echo "<pre>";
print_r($this->AUTO);
echo "</pre>";
}
//Eine neue function definieren die in anderen klassen unter auto::functName() erreichbar ist und hier unter self::functName()
//Diese funct ist übrigens auch public
function auto_name(){
//Beim Aufruf der funct den Name des Autos zurückgeben
return $this->AUTO['name'];
}
}
//Die Klasse aufrufen (ein auto erzeugen) mit dem namen 'hannes'
$hannes_auto = new auto('hannes');
//Dem AUTO hannes sagen welche Marke
$hannes_auto->AUTO['marke'] = 'Audi';
//und welches Modell es ist
$hannes_auto->AUTO['modell'] = 'A1';
//Und jetzt wird es Spannend... wir erstellen noch ein auto aber diesmal heist es 'peter'
$peters_auto = new auto('peter');
//Auch marke und Modell zuordnen
$peters_auto->AUTO['marke'] = 'BMW';
$peters_auto->AUTO['modell'] = 'i8';
//Und jetzzt wollen wir mal sehen .... ;)
$hannes_auto->auto_infos();
$peters_auto->auto_infos();
//Jeah wir haben die richtigen Daten bekommen c:
?>
Alles anzeigen
Output
/**
*
*/
Infos zu hannes
Array
(
[name] => hannes
[marke] => Audi
[modell] => A1
)
Infos zu peter
Array
(
[name] => peter
[marke] => BMW
[modell] => i8
)
Alles anzeigen
Hoffe du kannst was damit anfangen
Du hast hier nen komischen Fall.
Wenn Du per self:: ansprichst, muss auch der "Rest" der Klasse damit klar kommen.
Bsp:
class auto{
public $AUTO;
function __construct($name){
$this->AUTO['name'] = $name;
}
public function auto_infos(){
echo "<h2>self:: Infos zu ".self::auto_name()."</h2>";
echo "<h2>\$this-> Infos zu ".$this->auto_name()."</h2>";
echo "<pre>";
print_r($this->AUTO);
echo "</pre>";
}
function auto_name(){
return $this->AUTO['name'];
}
function change_name($val){
$this->AUTO['name'] = $val; // Fatal error: Using $this when not in object context in ...
self::$AUTO['name'] = $val; // Fatal error: Access to undeclared static property: auto::$AUTO in ...
}
}
$auto = new auto('volvo');
echo $auto->auto_infos();
auto::change_name('trabbi');
Alles anzeigen
Das self mach also keinen Sinn, da Du nichts anderes in der Klasse als static definiert hast.
Ich empfehle auch immer die Typen/Sichtbarkeit zu definieren.
Hier auch mal ein Bsp fürs Verhalten von static vars und nicht-static vars:
class Auto
{
// static vars müssen immer deklariert werden
public static $name = 'undefined';
function __construct()
{
// nicht-static vars können "zwischendurch" erstellt werden
$this->name = 'volvo';
return;
}
public function changeName($val)
{
$this->name = $val;
self::$name = $val;
return;
}
}
$auto = new Auto();
echo 'Auto::$name: '.Auto::$name.'<br>'; // undefined
echo '$auto->name: '.$auto->name.'<br>'; // volvo
echo '<hr>';
// wir ändern jetzt die vars der instanz $auto, die von der klasse Auto erstellt wurde:
$auto->changeName('neues auto');
echo 'Auto::$name: '.Auto::$name.'<br>'; // neues auto
echo '$auto->name: '.$auto->name.'<br>'; // neues auto
echo '<hr>';
// wir erzeugen jetzt einen neue instanz der klasse Auto:
$auto_2 = new Auto();
echo 'Auto::$name: '.Auto::$name.'<br>'; // neues auto
echo '$auto_2->name: '.$auto_2->name.'<br>'; // volvo
echo '<hr>';
Alles anzeigen
Static vars sind also nicht immer ganz einfach nachzuvollziehen, wenn man nicht-static und static mischt.
Man kann aber (glaub ich) sagen, dass alle erzeugten Instanzen einer Klasse auf den gleichen Inhalt zeigen.
Und da kommt der Pro
Hör auf bin lange nicht pro =)
Ich sehe mich selbst eher als fortgeschritten. Ich muss immer noch nachlesen wenns kompliziert wird
Was macht die class eigentlich genau ?
Steht doch alles in den Kommentaren oO?
OOP Class
Evtl hast Du die falsche Frage gestellt
EDIT: hier gibts auch ein Bsp: http://www.php-kurs.com/objekt…ogrammierung-beispiel.htm
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!
HTML-Seminar.de - mit Videos zum schnellen Lernen, wie man eine Website selbst erstellt.