# `#[php_const]` Attribute

Exports a Rust constant as a global PHP constant. The constant can be any type
that implements `IntoConst`.

The `wrap_constant!()` macro can be used to simplify the registration of constants.
It sets the name and doc comments for the constant.

You can rename the const with options:

- `name` - Allows you to rename the property, e.g.
  `#[php(name = "new_name")]`
- `change_case` - Allows you to rename the property using rename rules, e.g.
  `#[php(change_case = PascalCase)]`

## Examples

```rust,no_run
# #![cfg_attr(windows, feature(abi_vectorcall))]
# extern crate ext_php_rs;
use ext_php_rs::prelude::*;

#[php_const]
const TEST_CONSTANT: i32 = 100;

#[php_const]
#[php(name = "I_AM_RENAMED")]
const TEST_CONSTANT_THE_SECOND: i32 = 42;

#[php_const]
const ANOTHER_STRING_CONST: &'static str = "Hello world!";

#[php_module]
pub fn get_module(module: ModuleBuilder) -> ModuleBuilder {
    module
        .constant(wrap_constant!(TEST_CONSTANT))
        .constant(wrap_constant!(TEST_CONSTANT_THE_SECOND))
        .constant(("MANUAL_CONSTANT", ANOTHER_STRING_CONST, &[]))
}
# fn main() {}
```

## PHP usage

```php
<?php

var_dump(TEST_CONSTANT); // int(100)
var_dump(I_AM_RENAMED); // int(42)
var_dump(MANUAL_CONSTANT); // string(12) "Hello world!"
```
