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/objektorientie…ng-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.