Le classi sono un'unità di organizzazione del codice in PHP.
Il codice che rappresenta il comportamento di un elemento, o il comportamento di un processo, può essere raggruppato in una classe.
Le funzioni assegnate a una classe vengono chiamate methods per convenzione.
<?php
class Door
{
function lock()
{
// ...
}
function unlock()
{
// ...
}
}
Le classi si istanziano con la parola chiave new: questo alloca la memoria per l'istanza della classe e chiama il metodo costruttore della classe.
Le classi istanziate possono essere assegnate a una variabile.
Per invocare i metodi di un'istanza di una classe, possiamo usare l'operatore di accesso ->.
<?php
$a_door = new Door();
$a_door->lock();
$a_door->unlock();
Una classe istanziata può riferirsi alla propria istanza usando la variabile speciale $this.
Le classi possono anche avere proprietà: queste si comportano come variabili legate all'istanza dell'oggetto classe.
A queste proprietà si può fare riferimento dall'interno o dall'esterno.
<?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 questo esercizio simulerai un sistema informatico basato su finestre. Creerai alcune finestre che possono essere spostate e ridimensionate. L'immagine che segue è rappresentativa dei valori con cui lavorerai qui sotto.
╔════════════════════════════════════════════════════════════╗
║ ║
║ position::$y,_ ║
║ position::$x \ ║
║ \<---- size::$width ----> ║
║ ^ *──────────────────────┐ ║
║ | │ title │ ║
║ | ├──────────────────────┤ ║
║ | │ │ ║
║ size::$height │ │ ║
║ | │ contents │ ║
║ | │ │ ║
║ | │ │ ║
║ v └──────────────────────┘ ║
║ ║
║ ║
╚════════════════════════════════════════════════════════════╝
Usando lo scaffold di classe fornito, fornisci le proprietà per i valori y, x, height e width.
<?php
$window = new ProgramWindow();
$window->y; // => null
$window->x; // => null
$window->height; // => null
$window->width; // => null
Definisci un costruttore per ProgramWindow.
Non deve accettare argomenti, ma durante l'esecuzione del costruttore imposta i valori predefiniti delle sue proprietà.
Deve impostare i valori iniziali di y e x a 0.
Deve impostare height e width iniziali a una dimensione dello schermo di 600x800.
<?php
$window = new ProgramWindow();
$window->y; // => 0
$window->x; // => 0
$window->height; // => 600
$window->width; // => 800
Definisci una nuova classe in Size.php per una classe Size.
Deve accettare argomenti del costruttore per impostare le proprietà height e width.
Inoltre ProgramWindow richiede una funzione di ridimensionamento, che riceve l'istanza dell'oggetto Size e aggiorna le proprie proprietà.
<?php
$window = new ProgramWindow();
$size = new Size(764, 1080);
$window->resize($size)
$window->height;
// => 764
$window->width;
// => 1080
Definisci una nuova classe in Position.php per una classe Position.
Deve accettare argomenti del costruttore per impostare le proprietà y e x.
Inoltre ProgramWindow richiede una funzione di spostamento, che riceve l'istanza dell'oggetto Position e aggiorna le proprie proprietà.
<?php
$window = new ProgramWindow();
$position = new Position(80, 313);
$window->move($position)
$window->y;
// => 80
$window->x;
// => 313
Iscriviti a Exercism per imparare e padroneggiare PHP con 11 concetti122 esercizi e il mentoring di persone reali, tutto gratis.