Commit Graph

334 Commits

Author SHA1 Message Date
Joe Hoyle
5d1ffcec05
Add helper to get global constants (#222)
ExecutorGlobals::constants() will return a hash map of the available constants.
2023-07-18 22:42:40 +02:00
Joe Hoyle
a9dffe08f5
Add ability to show PHP warnings (etc) (#231)
* Add ability to show PHP warnings (etc)

I don't believe there's a way for extensions to trigger PHP notices or warnings currently. This is done using the `php_error_docref` function. I've placed a function in `ext_php_rs::php_error()` however, there might be a better place?

* Remove uneeded empty value

* Fix url
2023-07-18 22:40:24 +02:00
Joe Hoyle
396c8740e4
Add support for post shutdown function (#251) 2023-07-18 22:38:50 +02:00
Joe Hoyle
6db91acae3 formatting 2023-07-13 20:29:48 +02:00
Joe Hoyle
0f4f6f7315 Add docs / guide 2023-07-13 17:16:30 +02:00
Joe Hoyle
b451d604df URL formatting 2023-07-13 16:24:00 +02:00
Joe Hoyle
64bf9e7366 fmt 2023-07-13 15:44:14 +02:00
Joe Hoyle
7d40ca544f Formatting 2023-07-13 15:39:44 +02:00
Joe Hoyle
68059bdda1 Fix mutable refs 2023-07-13 15:38:49 +02:00
Joe Hoyle
99439bf7f5 Clippy 2023-07-13 15:24:29 +02:00
Joe Hoyle
614f5b42be Support function args being passed by reference
Currently it's not possible for a function to accept args by reference. This PR adds early support for doing so, by transforming any function args that are `&mut T` into args that are passed by reference. E.g.:

```
\#[php_function]
fn my_function( arg: &mut Zval ) {
	arg.reference_mut().map( |zval| zval.set_bool(true) );
}
```
2023-07-13 14:42:40 +02:00
Joe Hoyle
a7780753dc Support registering ini definitions for modules
PHP extensions that want to provide ini settings can do so using `IniEntryDef::register()`; values can then be fetched via `GlobalExecutor::ini_values()`.
2023-07-13 14:42:08 +02:00
c8c1df06e2
Fix construction of native classes and any class with properties 2023-06-29 14:20:04 +02:00
ab2af4581d
Fix class construction 2023-06-29 14:05:49 +02:00
eda544ceaf
Simplify 2023-06-29 13:46:01 +02:00
e658ce890f
Small fix 2023-06-29 12:45:29 +02:00
Pierre Tondereau
8b87e4038e
Bump cargo-php to 0.1.8 (#248)
* Bump cargo-php to 0.1.8

* Fix docker zts installation
2023-06-26 21:34:45 +02:00
8514614521
Remove redundant fclose 2023-06-22 17:32:37 +02:00
ca2bc9ae97
Performance trick 2023-06-22 17:13:17 +02:00
6657223087
Further cleanup 2023-06-22 16:50:01 +02:00
c517931726
Cleanup 2023-06-22 16:19:24 +02:00
ae2bd550e8
Cleanup 2023-06-22 16:16:17 +02:00
064ef747c1
Fixes 2023-06-22 16:14:49 +02:00
e0ae48175d
Cleanup 2023-06-22 15:12:26 +02:00
33f9d6e4b8
Improvement 2023-06-22 14:17:49 +02:00
ab55a491d7
Cleanup 2023-06-22 14:13:01 +02:00
ee5c3e1e82
Cleanup 2023-06-22 13:33:09 +02:00
751d4f4d04
Refactoring 2023-06-22 13:31:56 +02:00
07ce8299c5
Fix option args 2023-06-19 13:07:55 +02:00
3fb905afdb
Fix borrowing of parameters in async functions 2023-06-19 11:40:14 +02:00
2088fadf38
A small hack to workaround known good lifetimes 2023-06-19 11:40:14 +02:00
10d3c50181
Update 2023-06-19 11:40:13 +02:00
cc50781903
Add async support 2023-06-19 11:40:13 +02:00
Pierre Tondereau
654692d879
Prepare 0.10.1 (#243) 2023-05-16 23:41:08 +02:00
Pierre Tondereau
eaab5f0694
chore: deps upgrade (#242) 2023-05-16 23:22:20 +02:00
Pierre Tondereau
63a76846d2
chore: Update bindgen to 0.65.1 (#241) 2023-05-16 22:49:57 +02:00
Joe Hoyle
1f9946f105
Switch to use zend apis for array iteration (#240) 2023-05-16 22:33:45 +02:00
Pierre Tondereau
6b6489fddb
chore: fix clippy warnings. (#235) 2023-03-13 18:00:45 +01:00
Dirk Stolle
5d775a5e91
docs(badge): Fix URL of shields.io badges in README.md (#233)
See <https://github.com/badges/shields/issues/8671> for more
information about the breaking change in the URL scheme.

[ci skip]
2023-03-13 11:52:00 +01:00
Dirk Stolle
812e7057db
docs: Fix some typos (#234) 2023-03-13 11:51:29 +01:00
Ryan McCue
c5eaeb242b
Stop watching Cargo.lock for changes (#232)
When loaded via Cargo, there's no Cargo.lock directly in this crate, so
the lack of file existence causes unnecessary rebuilds every time.
2023-02-24 16:24:19 +01:00
Pierre Tondereau
e6afecbddd
chore(clippy): Fix clippy warnings. (#228) 2023-02-07 22:52:56 +01:00
Joe Hoyle
0b27dc349f
Fix Zval IS_PTR type detection (#223) 2023-02-07 22:25:15 +01:00
Joe Hoyle
1875e99e93
Pass args to startup function (#226) 2023-02-07 22:24:33 +01:00
Joe Hoyle
831b3c8597
Mate GlobalExecutor::get_mut() public (#227) 2023-02-07 22:21:53 +01:00
Christian Rades
87ac43d05e
Add is_identical for zvals (#217) 2023-01-19 12:40:24 +01:00
Pierre Tondereau
7ed31ebda9
chore: Prepare 0.10.0 (#215) 2022-12-22 22:55:07 +01:00
Pierre Tondereau
11e0998bc4
feat: Add support for PHP 8.2 (#212)
## Small Fixes due to PHP8.2 upgrade:
- Internal PHP `ZendHashmap` changed the way that we access to the bucket ([commit](90b7bde615 (diff-dca4782c62f10b418ea7193e4641e688ffd7a9c97869f2b1a3a96e28da5653aaL371)))
- Internal PHP `ArrayIterator` doesn't support parent `get_iterator` ([commit](15bbf6f337 (diff-bc002b59b592b4d44c13d898f9dc3ca60b1b1c8505a51a2a3557dfde51dfeb61L273)))
2022-12-20 17:11:35 +01:00
Pierre Tondereau
6965f4a198
Prepare v0.9.0 (#211) 2022-12-11 22:10:25 +01:00
ju1ius
4ca5c0d06e
honour PHP_CONFIG & rebuild automatically when env vars change (#210)
Closes https://github.com/davidcole1340/ext-php-rs/issues/208
Closes https://github.com/davidcole1340/ext-php-rs/issues/209

## Summary of the changes

### Build scripts
* the `unix_build.rs` script now honors the `PHP_CONFIG` environment variable, like `cargo php install`
* use `cargo:rerun-if-env-changed` for the `PHP`, `PHP_CONFIG` and `PATH` environment variables, to avoid needless recompilation of the whole dependency tree.

### Documentation
While trying to document the aforementioned changes, I realized that there was no chapter about installing and setting up a PHP environment to develop PHP extensions. So, I refactored the first chapters of the book into a `Getting Started` section, including instructions on how to quickly set up a PHP environment.
2022-12-11 20:08:50 +01:00