As classes são uma unidade de organização de código em PHP.
Código que representa o comportamento de um item ou de um processo pode ser agrupado em uma classe.
As funções atribuídas a uma classe são chamadas de methods por convenção.
<?php
class Door
{
function lock()
{
// ...
}
function unlock()
{
// ...
}
}
As classes são instanciadas com a palavra-chave new. Isso aloca memória para a instância da classe e chama o método construtor dela.
Uma classe instanciada pode ser atribuída a uma variável.
Para invocar os métodos de uma instância de classe, podemos usar o operador de acesso ->.
<?php
$a_door = new Door();
$a_door->lock();
$a_door->unlock();
Uma classe instanciada pode referenciar a própria instância usando a variável especial $this.
As classes também podem ter propriedades, que funcionam como variáveis ligadas à instância do objeto da classe.
Essas 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, você vai simular um sistema de computador baseado em janelas. Você vai criar algumas janelas que podem ser movidas e redimensionadas. A imagem a seguir representa os valores com que você vai trabalhar abaixo.
╔════════════════════════════════════════════════════════════╗
║ ║
║ position::$y,_ ║
║ position::$x \ ║
║ \<---- size::$width ----> ║
║ ^ *──────────────────────┐ ║
║ | │ title │ ║
║ | ├──────────────────────┤ ║
║ | │ │ ║
║ size::$height │ │ ║
║ | │ contents │ ║
║ | │ │ ║
║ | │ │ ║
║ v └──────────────────────┘ ║
║ ║
║ ║
╚════════════════════════════════════════════════════════════╝
Usando a estrutura de classe fornecida, defina as propriedades para os valores de y, x, height e width.
<?php
$window = new ProgramWindow();
$window->y; // => null
$window->x; // => null
$window->height; // => null
$window->width; // => null
Defina uma função construtora para ProgramWindow.
Ela não deve receber nenhum argumento, mas durante a execução do construtor defina os valores padrão de suas propriedades.
Ela deve definir os valores iniciais de y e x como 0.
Ela deve definir height e width iniciais para um tamanho de tela de 600x800.
<?php
$window = new ProgramWindow();
$window->y; // => 0
$window->x; // => 0
$window->height; // => 600
$window->width; // => 800
Defina uma nova classe em Size.php para uma classe Size.
Ela deve receber argumentos de 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 suas próprias propriedades.
<?php
$window = new ProgramWindow();
$size = new Size(764, 1080);
$window->resize($size)
$window->height;
// => 764
$window->width;
// => 1080
Defina uma nova classe em Position.php para uma classe Position.
Ela deve receber argumentos de 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 suas próprias propriedades.
<?php
$window = new ProgramWindow();
$position = new Position(80, 313);
$window->move($position)
$window->y;
// => 80
$window->x;
// => 313
Crie sua conta no Exercism para aprender e dominar PHP com 11 conceitos122 exercícios e mentoria humana de verdade, tudo de graça.