# Upgrade Guide ## 6.x ### Native types The library now uses native types whenever possible. When you override methods or implement interfaces, you will need to add them. ### `Enum::getDescription()` throws Instead of returning an empty string `''` on invalid values, `Enum::getDescription()` will throw an `InvalidEnumMemberException`. ### Construct `InvalidEnumMemberException` The constructor of `InvalidEnumMemberException` now expects the class name of an enum instead of an enum instance. ## 5.x ### Laravel 9 required Laravel `9` or higher is required. ### PHP 8.0 required PHP `8.0` or higher is now required. ## 4.x ### Review use of Localization features You should make sure that any enums using localization features are still translated as expected. ## 3.x ### Laravel 8 required Laravel `8` or higher is required. ### PHP 7.3 required PHP `7.3` or higher is now required. ## 2.x ### Laravel 7.5 required Laravel `7.5` or higher is required for the new native attribute casting. ### PHP 7.2 required PHP `7.2.5` or higher is now required. ### Switch to native casting You should update your models to use Laravel 7 native casting. Remove the trait and move the casts from `$enumCasts` to `$casts`. Trait based casting is still present, but is now deprecated and will be removed in the next major version. ```diff --use BenSampo\Enum\Traits\CastsEnums; class MyModel extends Model { - use CastsEnums; - protected $enumCasts = [ + protected $casts = [ 'foo' => Foo::class, ]; ```