Hallo Bastian,
bitte pass mit den Begrifflichkeiten auf. Was Du außerhalb der OOP "Variable" und "Funktion" nennst, wird in einer Klasse zu "Eigenschaft" und "Methode". Man nennt das anders, weil Eigenschaften und Methoden an ein Objekt gebunden sind, und Variablen nicht. Eine Variable in PHP kann sein:
- Superglobal (z.B. $_GET) - die Variable ist überall sichtbar
- Global - die Variable existiet so lange wie das Script läuft, ist aber innerhalb von Funktionen oder Methoden nur sichtbar, wenn Du das mit dem
global
Befehl anforderst
- Lokal - die Variable existiert im Ausführungskontext einer Funktion oder Methode und ist auch nur dort sichtbar. Endet die Funktion/Methode, verschwindet die Variable.
Eigenschaften und Methoden kannst Du nur ansprechen, wenn Du das Objekt davor schreibst. Entweder in Form der Variablen, in der Du das Objekt gespeichert hast ($pdf->Cell(...)
) oder, wenn Du innerhalb einer Methode des gleichen Objekts bist, mit $this
. In $this
steht immer das Objekt, in dessen Kontext Du gerade unterwegs bist (oder null, wenn dein Code nicht Teil einer Methode ist)
Das ist in einem Forenbeitrag ziemlich aufwändig zu beschreiben. Eigentlich erklärt das PHP Handbuch eine ganze Menge dazu. Man braucht nur etwas Geduld beim Lesen 😉.
Eine Objekteigenschaft bekommt ihren Inhalt durch eine Wertzuweisung.
Ohne Konstruktor:
class PDF_Table_Header extends PDF_MC_Table_WA
{
public $id;
public $dings;
public $bums;
function Header()
{
$blub = $this->dings . $this->bums;
$this->Cell(12,34, $this->id, $blub);
}
}
$pdf = new PDF_Table_Header('P','mm',$seitenformat);
$pdf->id = 42;
$pdf->dings = "Hallo";
$pdf->bums = "Welt";
Mit Konstruktor - ich weiß nicht genau, was das für Parameter sind, denen Du "P" und "mm" übergibst, darum hab ich sie einfach mal $p und $mm genannt. Da Du jetzt deinen eigenen Konstruktor hast, musst Du den Konstruktor der Superklasse selbst aufrufen, damit "P", "mm" und $seitenformat dorthin gelangen.
class PDF_Table_Header extends PDF_MC_Table_WA
{
public $id;
public $dings;
public $bums;
function __construct($p, $mm, $seitenformat, $id, $dings, $bums)
{
parent::__construct($p, $mm, $seitenformat);
$this->id = $id;
$this->dings = $dings;
$this->bums = $bums;
}
function Header()
{
do_something($this->id, $this->dings . $this->bums);
}
}
$pdf = new Foo('P','mm',$seitenformat, 42, "Hallo", "Welt");
Wenn Du 17 Werte setzen musst, sind das eine Menge Parameter. Da kann es dann lesbarer werden, sie nicht über den Konstruktor zu setzen.
Rolf
--
sumpsi - posui - obstruxi