类是 PHP 中组织代码的基本单位。
表示某个事物或某个过程的行为的代码,可以归组为一个类。
按照约定,定义在类中的函数称为methods。
<?php
class Door
{
function lock()
{
// ...
}
function unlock()
{
// ...
}
}
类使用new关键字来实例化,这会为类的实例分配内存,并调用该类的构造函数。
实例化后的类可以赋值给一个变量。
要调用类实例的方法,可以使用->访问运算符。
<?php
$a_door = new Door();
$a_door->lock();
$a_door->unlock();
实例化的类可以使用特殊的$this变量来引用自身的实例。
类也可以有属性,它们相当于绑定在类对象实例上的变量。
这些属性既可以在内部引用,也可以在外部引用。
<?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
在这个练习中,你将模拟一个基于窗口的计算机系统。 你将创建一些可以移动、可以调整大小的窗口。 下面的图片展示了你在后续内容中会接触到的各个值。
╔════════════════════════════════════════════════════════════╗
║ ║
║ position::$y,_ ║
║ position::$x \ ║
║ \<---- size::$width ----> ║
║ ^ *──────────────────────┐ ║
║ | │ title │ ║
║ | ├──────────────────────┤ ║
║ | │ │ ║
║ size::$height │ │ ║
║ | │ contents │ ║
║ | │ │ ║
║ | │ │ ║
║ v └──────────────────────┘ ║
║ ║
║ ║
╚════════════════════════════════════════════════════════════╝
使用提供的类骨架,为y、x、height和width这几个值提供属性。
<?php
$window = new ProgramWindow();
$window->y; // => null
$window->x; // => null
$window->height; // => null
$window->width; // => null
为ProgramWindow定义一个构造函数。
它不应接收任何参数,但在构造函数执行期间要为其属性设置默认值。
它应将y和x的初始值设为0。
它应将初始的height和width设为600x800的屏幕尺寸。
<?php
$window = new ProgramWindow();
$window->y; // => 0
$window->x; // => 0
$window->height; // => 600
$window->width; // => 800
在Size.php中为 Size 类定义一个新类。
它的构造函数应接收参数,用来设置height和width属性。
此外,ProgramWindow还需要一个调整大小的函数,它接收Size对象实例并更新自己的属性。
<?php
$window = new ProgramWindow();
$size = new Size(764, 1080);
$window->resize($size)
$window->height;
// => 764
$window->width;
// => 1080
在Position.php中为 Position 类定义一个新类。
它的构造函数应接收参数,用来设置y和x属性。
此外,ProgramWindow还需要一个移动函数,它接收Position对象实例并更新自己的属性。
<?php
$window = new ProgramWindow();
$position = new Position(80, 313);
$window->move($position)
$window->y;
// => 80
$window->x;
// => 313