Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings
This repository was archived by the owner on Mar 29, 2024. It is now read-only.

Commit 78cd420

Browse files
Merge pull request #18 from pinepain/improve-api
Improve API
2 parents 3bdf376 + c99064b commit 78cd420

File tree

82 files changed

+3286
-845
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

82 files changed

+3286
-845
lines changed

‎README.md

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ in your IDE and other code-analysis tools.
7373
### Requirements
7474

7575
#### V8
76-
You will need a recent v8 Google JavaScript engine version installed. At this time the extension is tested on 5.7.202.
76+
You will need a recent v8 Google JavaScript engine version installed. At this time the extension is tested on 5.7.514.
7777

7878
#### PHP
7979
This extension is PHP7-only. It works and tested with both PHP 7.0 and PHP 7.1.
@@ -95,9 +95,10 @@ $ php --ri v8
9595
```
9696

9797
While [pinepain/php](https://launchpad.net/~pinepain/+archive/ubuntu/php) PPA targets to contain all necessary
98-
extensions with dependencies, you may find useful
99-
[pinepain/libv8-5.7](https://launchpad.net/~pinepain/+archive/ubuntu/libv8-5.7) and
100-
[pinepain/php-v8](https://launchpad.net/~pinepain/+archive/ubuntu/php-v8) standalone PPAs.
98+
extensions with dependencies, you may find
99+
[pinepain/libv8-5.7](https://launchpad.net/~pinepain/+archive/ubuntu/libv8-5.7),
100+
[pinepain/libv8-experimental](https://launchpad.net/~pinepain/+archive/ubuntu/libv8-experimental) and
101+
[pinepain/php-v8](https://launchpad.net/~pinepain/+archive/ubuntu/php-v8) standalone PPAs useful.
101102

102103

103104
#### OS X (homebrew)
@@ -136,6 +137,8 @@ $ sudo make install
136137

137138
- To track memory usage you may want to use `smem`, `pmem` or even `lsof` to see what shared object are loaded
138139
and `free` to display free and used memory in the system.
140+
- [pinepain/libv8-experimental](https://launchpad.net/~pinepain/+archive/ubuntu/libv8-experimental) normally contains
141+
`libv8` version that used in current `master` branch.
139142

140143
## Credits
141144

‎config.m4

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ if test "$PHP_V8" != "no"; then
88
SEARCH_PATH="/usr/local /usr"
99
SEARCH_FOR="include/v8.h"
1010

11-
V8_MIN_API_VERSION_STR=5.7.202
11+
V8_MIN_API_VERSION_STR=5.7.514
1212

1313
DESIRED_V8_VERSION=`echo "${V8_MIN_API_VERSION_STR}" | $AWK 'BEGIN { FS = "."; } { printf "%s.%s", [$]1, [$]2;}'`
1414

@@ -201,6 +201,8 @@ if test "$PHP_V8" != "no"; then
201201
src/php_v8_object.cc \
202202
src/php_v8_function.cc \
203203
src/php_v8_array.cc \
204+
src/php_v8_map.cc \
205+
src/php_v8_set.cc \
204206
src/php_v8_date.cc \
205207
src/php_v8_regexp.cc \
206208
src/php_v8_number_object.cc \

‎php_v8.h

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,21 @@ ZEND_BEGIN_MODULE_GLOBALS(v8)
5353
bool v8_initialized;
5454
ZEND_END_MODULE_GLOBALS(v8)
5555

56+
// Add zend_type support (new since PHP 7.2)
57+
#ifdef ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX
58+
#define PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(name, return_reference, required_num_args, classname, allow_null) \
59+
ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(name, return_reference, required_num_args, classname, allow_null)
60+
61+
#define PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(name, return_reference, required_num_args, type, allow_null) \
62+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(name, return_reference, required_num_args, type, allow_null)
63+
#else
64+
#define PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(name, return_reference, required_num_args, classname, allow_null) \
65+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(name, return_reference, required_num_args, IS_OBJECT, #classname, allow_null)
66+
67+
#define PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(name, return_reference, required_num_args, type, allow_null) \
68+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(name, return_reference, required_num_args, type, NULL, allow_null)
69+
#endif
70+
5671

5772
/* Always refer to the globals in your function as PHP_V8_G(variable).
5873
You are encouraged to rename these macros something shorter, see

‎src/php_v8_array.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_v8_array___construct, ZEND_SEND_BY_VAL, ZEND_RETU
6969
ZEND_ARG_TYPE_INFO(0, length, IS_LONG, 0)
7070
ZEND_END_ARG_INFO()
7171

72-
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_v8_array_Length, ZEND_RETURN_VALUE, 0, IS_LONG, NULL, 0)
72+
PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_v8_array_Length, ZEND_RETURN_VALUE, 0, IS_LONG, 0)
7373
ZEND_END_ARG_INFO()
7474

7575

‎src/php_v8_boolean.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_v8_boolean___construct, ZEND_SEND_BY_VAL, ZEND_RE
6565
ZEND_ARG_TYPE_INFO(0, value, _IS_BOOL, 0)
6666
ZEND_END_ARG_INFO()
6767

68-
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_v8_boolean_Value, ZEND_RETURN_VALUE, 0, _IS_BOOL, NULL, 0)
68+
PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_v8_boolean_Value, ZEND_RETURN_VALUE, 0, _IS_BOOL, 0)
6969
ZEND_END_ARG_INFO()
7070

7171

‎src/php_v8_boolean_object.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_v8_boolean_object___construct, ZEND_SEND_BY_VAL,
6767
ZEND_ARG_TYPE_INFO(0, value, _IS_BOOL, 0)
6868
ZEND_END_ARG_INFO()
6969

70-
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_v8_boolean_object_ValueOf, ZEND_RETURN_VALUE, 0, _IS_BOOL, NULL, 0)
70+
PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_v8_boolean_object_ValueOf, ZEND_RETURN_VALUE, 0, _IS_BOOL, 0)
7171
ZEND_END_ARG_INFO()
7272

7373

‎src/php_v8_callback_info.cc

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -199,22 +199,22 @@ static PHP_METHOD(V8CallbackInfo, InContext) {
199199
}
200200

201201

202-
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_v8_callback_info_GetIsolate, ZEND_RETURN_VALUE, 0, IS_OBJECT, PHP_V8_NS "\\Isolate", 0)
202+
PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_v8_callback_info_GetIsolate, ZEND_RETURN_VALUE, 0, V8\\Isolate, 0)
203203
ZEND_END_ARG_INFO()
204204

205-
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_v8_callback_info_GetContext, ZEND_RETURN_VALUE, 0, IS_OBJECT, PHP_V8_NS "\\Context", 0)
205+
PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_v8_callback_info_GetContext, ZEND_RETURN_VALUE, 0, V8\\Context, 0)
206206
ZEND_END_ARG_INFO()
207207

208-
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_v8_callback_info_This, ZEND_RETURN_VALUE, 0, IS_OBJECT, PHP_V8_NS "\\ObjectValue", 0)
208+
PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_v8_callback_info_This, ZEND_RETURN_VALUE, 0, V8\\ObjectValue, 0)
209209
ZEND_END_ARG_INFO()
210210

211-
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_v8_callback_info_Holder, ZEND_RETURN_VALUE, 0, IS_OBJECT, PHP_V8_NS "\\ObjectValue", 0)
211+
PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_v8_callback_info_Holder, ZEND_RETURN_VALUE, 0, V8\\ObjectValue, 0)
212212
ZEND_END_ARG_INFO()
213213

214-
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_v8_callback_info_GetReturnValue, ZEND_RETURN_VALUE, 0, IS_OBJECT, PHP_V8_NS "\\ReturnValue", 0)
214+
PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_v8_callback_info_GetReturnValue, ZEND_RETURN_VALUE, 0, V8\\ReturnValue, 0)
215215
ZEND_END_ARG_INFO()
216216

217-
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_v8_callback_info_InContext, ZEND_RETURN_VALUE, 0, _IS_BOOL, NULL, 0)
217+
PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_v8_callback_info_InContext, ZEND_RETURN_VALUE, 0, _IS_BOOL, 0)
218218
ZEND_END_ARG_INFO()
219219

220220

‎src/php_v8_context.cc

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -314,10 +314,10 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_v8_context___construct, ZEND_SEND_BY_VAL, ZEND_RE
314314
ZEND_END_ARG_INFO()
315315

316316

317-
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_v8_context_GetIsolate, ZEND_RETURN_VALUE, 0, IS_OBJECT, PHP_V8_NS "\\Isolate", 0)
317+
PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_v8_context_GetIsolate, ZEND_RETURN_VALUE, 0, V8\\Isolate, 0)
318318
ZEND_END_ARG_INFO()
319319

320-
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_v8_context_GlobalObject, ZEND_RETURN_VALUE, 0, IS_OBJECT, PHP_V8_NS "\\ObjectValue", 0)
320+
PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_v8_context_GlobalObject, ZEND_RETURN_VALUE, 0, V8\\ObjectValue, 0)
321321
ZEND_END_ARG_INFO()
322322

323323
// void method
@@ -333,23 +333,23 @@ ZEND_END_ARG_INFO()
333333
ZEND_BEGIN_ARG_INFO_EX(arginfo_v8_context_UseDefaultSecurityToken, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, 0)
334334
ZEND_END_ARG_INFO()
335335

336-
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_v8_context_GetSecurityToken, ZEND_RETURN_VALUE, 0, IS_OBJECT, PHP_V8_NS "\\Value", 0)
336+
PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_v8_context_GetSecurityToken, ZEND_RETURN_VALUE, 0, V8\\Value, 0)
337337
ZEND_END_ARG_INFO()
338338

339339
// void method
340340
ZEND_BEGIN_ARG_INFO_EX(arginfo_v8_context_AllowCodeGenerationFromStrings, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, 1)
341341
ZEND_ARG_TYPE_INFO(0, allow, _IS_BOOL, 0)
342342
ZEND_END_ARG_INFO()
343343

344-
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_v8_context_IsCodeGenerationFromStringsAllowed, ZEND_RETURN_VALUE, 0, _IS_BOOL, NULL, 0)
344+
PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_v8_context_IsCodeGenerationFromStringsAllowed, ZEND_RETURN_VALUE, 0, _IS_BOOL, 0)
345345
ZEND_END_ARG_INFO()
346346

347347
// void method
348348
ZEND_BEGIN_ARG_INFO_EX(arginfo_v8_context_SetErrorMessageForCodeGenerationFromStrings, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, 1)
349349
ZEND_ARG_OBJ_INFO(0, message, V8\\StringValue, 0)
350350
ZEND_END_ARG_INFO()
351351

352-
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_v8_context_EstimatedSize, ZEND_RETURN_VALUE, 0, IS_LONG, NULL, 0)
352+
PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_v8_context_EstimatedSize, ZEND_RETURN_VALUE, 0, IS_LONG, 0)
353353
ZEND_END_ARG_INFO()
354354

355355

‎src/php_v8_date.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_v8_date___construct, ZEND_SEND_BY_VAL, ZEND_RETUR
9595
ZEND_ARG_TYPE_INFO(0, time, IS_DOUBLE, 0)
9696
ZEND_END_ARG_INFO()
9797

98-
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_v8_date_ValueOf, ZEND_RETURN_VALUE, 0, IS_DOUBLE, NULL, 0)
98+
PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_v8_date_ValueOf, ZEND_RETURN_VALUE, 0, IS_DOUBLE, 0)
9999
ZEND_END_ARG_INFO()
100100

101101
// void method

‎src/php_v8_exception.cc

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -191,37 +191,37 @@ static PHP_METHOD(V8Exception, GetStackTrace) {
191191
}
192192

193193

194-
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_v8_exception_RangeError, ZEND_RETURN_VALUE, 2, IS_OBJECT, PHP_V8_NS "\\Value", 0)
194+
PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_v8_exception_RangeError, ZEND_RETURN_VALUE, 2, V8\\Value, 0)
195195
ZEND_ARG_OBJ_INFO(0, context, V8\\Context, 0)
196196
ZEND_ARG_OBJ_INFO(0, message, V8\\StringValue, 0)
197197
ZEND_END_ARG_INFO()
198198

199-
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_v8_exception_ReferenceError, ZEND_RETURN_VALUE, 2, IS_OBJECT, PHP_V8_NS "\\Value", 0)
199+
PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_v8_exception_ReferenceError, ZEND_RETURN_VALUE, 2, V8\\Value, 0)
200200
ZEND_ARG_OBJ_INFO(0, context, V8\\Context, 0)
201201
ZEND_ARG_OBJ_INFO(0, message, V8\\StringValue, 0)
202202
ZEND_END_ARG_INFO()
203203

204-
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_v8_exception_SyntaxError, ZEND_RETURN_VALUE, 2, IS_OBJECT, PHP_V8_NS "\\Value", 0)
204+
PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_v8_exception_SyntaxError, ZEND_RETURN_VALUE, 2, V8\\Value, 0)
205205
ZEND_ARG_OBJ_INFO(0, context, V8\\Context, 0)
206206
ZEND_ARG_OBJ_INFO(0, message, V8\\StringValue, 0)
207207
ZEND_END_ARG_INFO()
208208

209-
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_v8_exception_TypeError, ZEND_RETURN_VALUE, 2, IS_OBJECT, PHP_V8_NS "\\Value", 0)
209+
PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_v8_exception_TypeError, ZEND_RETURN_VALUE, 2, V8\\Value, 0)
210210
ZEND_ARG_OBJ_INFO(0, context, V8\\Context, 0)
211211
ZEND_ARG_OBJ_INFO(0, message, V8\\StringValue, 0)
212212
ZEND_END_ARG_INFO()
213213

214-
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_v8_exception_Error, ZEND_RETURN_VALUE, 2, IS_OBJECT, PHP_V8_NS "\\Value", 0)
214+
PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_v8_exception_Error, ZEND_RETURN_VALUE, 2, V8\\Value, 0)
215215
ZEND_ARG_OBJ_INFO(0, context, V8\\Context, 0)
216216
ZEND_ARG_OBJ_INFO(0, message, V8\\StringValue, 0)
217217
ZEND_END_ARG_INFO()
218218

219-
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_v8_exception_CreateMessage, ZEND_RETURN_VALUE, 2, IS_OBJECT, PHP_V8_NS "\\Message", 0)
219+
PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_v8_exception_CreateMessage, ZEND_RETURN_VALUE, 2, V8\\Message, 0)
220220
ZEND_ARG_OBJ_INFO(0, context, V8\\Context, 0)
221221
ZEND_ARG_OBJ_INFO(0, exception, V8\\Value, 0)
222222
ZEND_END_ARG_INFO()
223223

224-
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_v8_exception_GetStackTrace, ZEND_RETURN_VALUE, 2, IS_OBJECT, PHP_V8_NS "\\StackTrace", 1)
224+
PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_v8_exception_GetStackTrace, ZEND_RETURN_VALUE, 2, V8\\StackTrace, 1)
225225
ZEND_ARG_OBJ_INFO(0, context, V8\\Context, 0)
226226
ZEND_ARG_OBJ_INFO(0, exception, V8\\Value, 0)
227227
ZEND_END_ARG_INFO()

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /