As classes são uma unidade de organização de código em PHP.
O código que representa o comportamento de um item, ou o comportamento de um processo, pode ser agrupado numa classe.
As funções que são atribuídas a uma classe chamam-se methods, por convenção.
<?php
class Door
{
function lock()
{
// ...
}
function unlock()
{
// ...
}
}
As classes são instanciadas com a palavra-chave new, o que aloca memória para a instância da classe e chama o método construtor da classe.
As classes instanciadas podem ser atribuídas a uma variável.
Para invocar os métodos de uma instância de uma classe, podemos usar o operador de acesso ->.
<?php
$a_door = new Door();
$a_door->lock();
$a_door->unlock();
Uma classe instanciada pode referir-se à sua própria instância através da variável especial $this.
As classes também podem ter propriedades, que funcionam como variáveis ligadas à instância do objeto da classe.
Estas propriedades podem ser referenciadas interna ou externamente.
<?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
Neste exercício, vais simular um sistema informático baseado em janelas. Vais criar algumas janelas que podem ser movidas e redimensionadas. A imagem seguinte ilustra os valores com que vais trabalhar a seguir.
╔════════════════════════════════════════════════════════════╗
║ ║
║ position::$y,_ ║
║ position::$x \ ║
║ \<---- size::$width ----> ║
║ ^ *──────────────────────┐ ║
║ | │ title │ ║
║ | ├──────────────────────┤ ║
║ | │ │ ║
║ size::$height │ │ ║
║ | │ contents │ ║
║ | │ │ ║
║ | │ │ ║
║ v └──────────────────────┘ ║
║ ║
║ ║
╚════════════════════════════════════════════════════════════╝
Usando a estrutura de classe fornecida, define as propriedades para os valores y, x, height e width.
<?php
$window = new ProgramWindow();
$window->y; // => null
$window->x; // => null
$window->height; // => null
$window->width; // => null
Define um construtor para ProgramWindow.
Não deve receber quaisquer argumentos, mas durante a execução do construtor define os valores predefinidos das suas propriedades.
Deve definir os valores iniciais de y e x como 0.
Deve definir a height e a width iniciais para um tamanho de ecrã de 600x800.
<?php
$window = new ProgramWindow();
$window->y; // => 0
$window->x; // => 0
$window->height; // => 600
$window->width; // => 800
Define uma nova classe em Size.php para uma classe Size.
Deve receber argumentos do construtor para definir as propriedades height e width.
Além disso, ProgramWindow precisa de uma função de redimensionamento, que recebe a instância do objeto Size e atualiza as suas próprias propriedades.
<?php
$window = new ProgramWindow();
$size = new Size(764, 1080);
$window->resize($size)
$window->height;
// => 764
$window->width;
// => 1080
Define uma nova classe em Position.php para uma classe Position.
Deve receber argumentos do construtor para definir as propriedades y e x.
Além disso, ProgramWindow precisa de uma função de movimento, que recebe a instância do objeto Position e atualiza as suas próprias propriedades.
<?php
$window = new ProgramWindow();
$position = new Position(80, 313);
$window->move($position)
$window->y;
// => 80
$window->x;
// => 313
Inscreve-te no Exercism para aprenderes e dominares PHP com 11 conceitos122 exercícios, e mentoria humana real, tudo grátis.