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, lo que 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 referirse a su propia instancia usando la variable especial $this.
Las clases también pueden tener propiedades, que actúan como variables ligadas 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 que se proporciona, proporciona 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 argumentos, pero durante la ejecución del constructor establece 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 clase nueva en Size.php para una clase Size.
Debe recibir argumentos del 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 clase nueva en Position.php para una clase Position.
Debe recibir argumentos del 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.