Las clases son una unidad de organización del código en PHP.
El código que representa el comportamiento de un elemento o el comportamiento de un proceso se puede agrupar en una clase.
Las funciones que se asignan a una clase se llaman methods por convención.
<?php
class Door
{
function lock()
{
// ...
}
function unlock()
{
// ...
}
}
Las clases se instancian con la palabra clave new; esto asigna memoria para la instancia de la clase y llama al método constructor de la clase.
Las clases instanciadas se pueden asignar a una variable.
Para invocar los métodos de una instancia de clase, podemos usar el operador de acceso ->.
<?php
$a_door = new Door();
$a_door->lock();
$a_door->unlock();
Una clase instanciada puede hacer referencia a su propia instancia mediante la variable especial $this.
Las clases también pueden tener propiedades; estas actúan como variables que están vinculadas a la instancia del objeto de la clase.
Se puede hacer referencia a estas propiedades de forma interna o externa.
<?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
En este ejercicio, vas a simular un sistema informático basado en ventanas. Vas a crear algunas ventanas que se pueden mover y cambiar de tamaño. La siguiente imagen es representativa de los valores con los que vas a trabajar a continuación.
╔════════════════════════════════════════════════════════════╗
║ ║
║ position::$y,_ ║
║ position::$x \ ║
║ \<---- size::$width ----> ║
║ ^ *──────────────────────┐ ║
║ | │ title │ ║
║ | ├──────────────────────┤ ║
║ | │ │ ║
║ size::$height │ │ ║
║ | │ contents │ ║
║ | │ │ ║
║ | │ │ ║
║ v └──────────────────────┘ ║
║ ║
║ ║
╚════════════════════════════════════════════════════════════╝
Usando el esqueleto de clase proporcionado, define las propiedades para los valores y, x, height y width.
<?php
$window = new ProgramWindow();
$window->y; // => null
$window->x; // => null
$window->height; // => null
$window->width; // => null
Define una función constructora para ProgramWindow.
No debe recibir ningún argumento, pero durante la ejecución del constructor debe establecer los valores predeterminados de sus propiedades.
Debe establecer los valores iniciales de y y x en 0.
Debe establecer los valores iniciales de height y width en un tamaño de pantalla de 600x800.
<?php
$window = new ProgramWindow();
$window->y; // => 0
$window->x; // => 0
$window->height; // => 600
$window->width; // => 800
Define una nueva clase en Size.php para una clase Size.
Debe recibir argumentos en el constructor para establecer las propiedades height y width.
Además, ProgramWindow requiere una función de cambio de tamaño, que recibe la instancia del objeto Size y actualiza sus propias propiedades.
<?php
$window = new ProgramWindow();
$size = new Size(764, 1080);
$window->resize($size)
$window->height;
// => 764
$window->width;
// => 1080
Define una nueva clase en Position.php para una clase Position.
Debe recibir argumentos en el constructor para establecer las propiedades y y x.
Además, ProgramWindow requiere una función de movimiento, que recibe la instancia del objeto Position y actualiza sus propias propiedades.
<?php
$window = new ProgramWindow();
$position = new Position(80, 313);
$window->move($position)
$window->y;
// => 80
$window->x;
// => 313
Regístrate en Exercism para aprender y dominar PHP con 11 conceptos122 ejercicios y mentoría humana real, todo gratis.