О типизации в php 7.4

Теперь можно будет так:

<?php
class User {
    public int $id;
    public string $name;

    public function __construct(int $id, string $name) {
        $this->id = $id;
        $this->name = $name;
    }
}
<?php
class User {
    /** @var int $id */
    private $id;
    /** @var string $name */
    private $name;

    public function __construct(int $id, string $name) {
        $this->id = $id;
        $this->name = $name;
    }

    public function getId(): int {
        return $this->id;
    }
    public function setId(int $id): void {
        $this->id = $id;
    }

    public function getName(): string {
        return $this->name;
    }
    public function setName(string $name): void {
        $this->name = $name;
    }
}

В пример все типы:

<?php
class Example {
    // All types with the exception of "void" and "callable" are supported
    public int $scalarType;
    protected ClassName $classType;
    private ?ClassName $nullableClassType;

    // Types are also legal on static properties
    public static iterable $staticProp;

    // Types can also be used with the "var" notation
    var bool $flag;

    // Typed properties may have default values (more below)
    public string $str = "foo";
    public ?string $nullableStr = null;

    // The type applies to all properties in one declaration
    public float $x, $y;
    // equivalent to:
    public float $x;
    public float $y;
}

Источник: https://wiki.php.net/rfc/typed_properties_v2

PHP Russia 2019 ElisDN

Про UseCase, фреймворки и в целом ООП.

ООП следует использовать по максимуму. К примеру объекты не использовать как ActiveRecord для связки с таблицой в БД, а полноценно с входящими в конструктор объектами Content, Price, etc.

new Lot($id, $var1, $var2, $title, $content, $blitzPrice, $startPrice)  // half solid
new Lot($id, $var1, $var2, new Content($title, $content), new Price($startPrice, $blitzPrice)) // full solid