Classes and Objects's classes type every property, yet a status can still be any string, a price can change after an order ships, and a one-line rule hides behind a getter and a setter. Enums, readonly, property hooks, asymmetric visibility and attributes close those gaps. This section applies them to the bookshop model (Product, Order, Money) and the orders.status column of the sample schema. Listings run with php -d error_reporting=E_ALL, since Ubuntu 225 's CLI php.ini hides deprecation notices.
