# Migrating to `v0.16`

## Void Return Type for Functions Without Explicit Return

Functions and methods without an explicit Rust return type now declare `void` as their PHP return type.

### Before (v0.15)

```rust,ignore
#[php_function]
pub fn do_something() {
    println!("Hello");
}
```

Generated PHP signature: `function do_something()` (implicit `mixed` return)

### After (v0.16)

The same Rust code now generates: `function do_something(): void`

### Migration

If your function actually returns a value but didn't declare it, you must now add the return type:

```rust,ignore
// Before: worked but was incorrect
#[php_function]
pub fn get_value() {
    42  // implicitly returned, but no declared type
}

// After: must declare return type
#[php_function]
pub fn get_value() -> i32 {
    42
}
```

### Exceptions

The magic methods `__destruct` and `__clone` are excluded from this change, as PHP forbids return type declarations on them.
