Klassen sind eine Einheit zur Organisation von Code in PHP.
Code, der das Verhalten eines Gegenstands oder das Verhalten eines Prozesses beschreibt, kann in einer Klasse zusammengefasst werden.
Funktionen, die einer Klasse zugeordnet sind, nennt man üblicherweise methods.
<?php
class Door
{
function lock()
{
// ...
}
function unlock()
{
// ...
}
}
Klassen werden mit dem Schlüsselwort new instanziiert. Das weist Speicher für die Klasseninstanz zu und ruft die Konstruktormethode der Klasse auf.
Instanziierte Klassen können einer Variable zugewiesen werden.
Um die Methoden einer Klasseninstanz aufzurufen, verwenden wir den Zugriffsoperator ->.
<?php
$a_door = new Door();
$a_door->lock();
$a_door->unlock();
Eine instanziierte Klasse kann über die spezielle Variable $this auf ihre eigene Instanz verweisen.
Klassen können außerdem Eigenschaften haben. Sie wirken wie Variablen, die an die Instanz des Klassenobjekts gebunden sind.
Auf diese Eigenschaften kann intern oder extern zugegriffen werden.
<?php
class Car
{
public $color;
function __construct($color)
{
$this->color = $color;
}
function getColor()
{
return $this->color;
}
}
$a_car = new Car("red");
$a_car->color; // => "red" by accessing the property
$a_car->getColor(); // => "red" by invoking the instance method
In dieser Übung simulierst du ein fensterbasiertes Computersystem. Du erstellst einige Fenster, die verschoben und in ihrer Größe geändert werden können. Das folgende Bild veranschaulicht die Werte, mit denen du unten arbeiten wirst.
╔════════════════════════════════════════════════════════════╗
║ ║
║ position::$y,_ ║
║ position::$x \ ║
║ \<---- size::$width ----> ║
║ ^ *──────────────────────┐ ║
║ | │ title │ ║
║ | ├──────────────────────┤ ║
║ | │ │ ║
║ size::$height │ │ ║
║ | │ contents │ ║
║ | │ │ ║
║ | │ │ ║
║ v └──────────────────────┘ ║
║ ║
║ ║
╚════════════════════════════════════════════════════════════╝
Definiere mit dem vorgegebenen Klassengerüst die Eigenschaften für die Werte y, x, height und width.
<?php
$window = new ProgramWindow();
$window->y; // => null
$window->x; // => null
$window->height; // => null
$window->width; // => null
Definiere eine Konstruktorfunktion für ProgramWindow.
Sie sollte keine Argumente entgegennehmen, aber während der Ausführung des Konstruktors die Standardwerte für ihre Eigenschaften setzen.
Sie sollte die anfänglichen Werte für y und x auf 0 setzen.
Sie sollte die anfängliche height und width auf eine Bildschirmgröße von 600x800 setzen.
<?php
$window = new ProgramWindow();
$window->y; // => 0
$window->x; // => 0
$window->height; // => 600
$window->width; // => 800
Definiere in Size.php eine neue Klasse für eine Size-Klasse.
Ihre Konstruktorargumente sollten die Eigenschaften height und width setzen.
Außerdem braucht ProgramWindow eine resize-Funktion, die die Instanz des Size-Objekts entgegennimmt und die eigenen Eigenschaften aktualisiert.
<?php
$window = new ProgramWindow();
$size = new Size(764, 1080);
$window->resize($size)
$window->height;
// => 764
$window->width;
// => 1080
Definiere in Position.php eine neue Klasse für eine Position-Klasse.
Ihre Konstruktorargumente sollten die Eigenschaften y und x setzen.
Außerdem braucht ProgramWindow eine move-Funktion, die die Instanz des Position-Objekts entgegennimmt und die eigenen Eigenschaften aktualisiert.
<?php
$window = new ProgramWindow();
$position = new Position(80, 313);
$window->move($position)
$window->y;
// => 80
$window->x;
// => 313
Melde dich bei Exercism an, um PHP mit 11 Konzepte122 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.