Skip to content
This repository was archived by the owner on Mar 29, 2024. It is now read-only.

Commit b8a6667

Browse files
authored
Merge pull request #69 from pinepain/improve-api
Refactor to simplify public API
2 parents 120a4dc + f780fe9 commit b8a6667

File tree

114 files changed

+1508
-688
lines changed

Some content is hidden

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

114 files changed

+1508
-688
lines changed

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ in your IDE and other code-analysis tools.
8888
### Requirements
8989

9090
#### V8
91-
You will need a recent v8 Google JavaScript engine version installed. At this time v8 >= 6.3.2 required.
91+
You will need a recent v8 Google JavaScript engine version installed. At this time v8 >= 6.3.163 required.
9292

9393
#### PHP
9494
This extension is PHP7-only. It works and tested with both PHP 7.0 and PHP 7.1.

config.m4

+2-2
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ if test "$PHP_V8" != "no"; then
1919
SEARCH_PATH="/usr/local /usr"
2020
SEARCH_FOR="include/v8.h"
2121

22-
V8_MIN_API_VERSION_STR=6.3.2
22+
V8_MIN_API_VERSION_STR=6.3.163
2323

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

@@ -211,11 +211,11 @@ if test "$PHP_V8" != "no"; then
211211
src/php_v8_symbol_object.cc \
212212
src/php_v8_template.cc \
213213
src/php_v8_return_value.cc \
214-
src/php_v8_callback_info.cc \
215214
src/php_v8_function_callback_info.cc \
216215
src/php_v8_property_callback_info.cc \
217216
src/php_v8_named_property_handler_configuration.cc \
218217
src/php_v8_indexed_property_handler_configuration.cc \
218+
src/php_v8_json.cc \
219219
], $ext_shared, , -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1)
220220

221221
PHP_ADD_BUILD_DIR($ext_builddir/src)

src/php_v8_callback_info.cc

-128
This file was deleted.

src/php_v8_callbacks.cc

-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
#endif
1616

1717
#include "php_v8_callbacks.h"
18-
#include "php_v8_callback_info.h"
1918
#include "php_v8_property_callback_info.h"
2019
#include "php_v8_function_callback_info.h"
2120
#include "php_v8_return_value.h"

src/php_v8_enums.cc

+13
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ zend_class_entry* php_v8_property_handler_flags_class_entry;
2525
zend_class_entry *php_v8_property_filter_class_entry;
2626
zend_class_entry *php_v8_key_collection_mode_class_entry;
2727
zend_class_entry *php_v8_index_filter_class_entry;
28+
zend_class_entry *php_v8_rail_mode_class_entry;
2829

2930

3031
static const zend_function_entry php_v8_enum_methods[] = {
@@ -126,5 +127,17 @@ PHP_MINIT_FUNCTION (php_v8_enums) {
126127
zend_declare_class_constant_long(this_ce, ZEND_STRL("SKIP_INDICES"), static_cast<zend_long>(v8::IndexFilter::kSkipIndices));
127128
#undef this_ce
128129

130+
// v8::RAILMode
131+
#define this_ce php_v8_index_filter_class_entry
132+
INIT_NS_CLASS_ENTRY(ce, PHP_V8_NS, "RAILMode", php_v8_enum_methods);
133+
this_ce = zend_register_internal_class(&ce);
134+
this_ce->ce_flags |= ZEND_ACC_FINAL;
135+
136+
zend_declare_class_constant_long(this_ce, ZEND_STRL("PERFORMANCE_RESPONSE"), static_cast<zend_long>(v8::RAILMode::PERFORMANCE_RESPONSE));
137+
zend_declare_class_constant_long(this_ce, ZEND_STRL("PERFORMANCE_ANIMATION"), static_cast<zend_long>(v8::RAILMode::PERFORMANCE_ANIMATION));
138+
zend_declare_class_constant_long(this_ce, ZEND_STRL("PERFORMANCE_IDLE"), static_cast<zend_long>(v8::RAILMode::PERFORMANCE_IDLE));
139+
zend_declare_class_constant_long(this_ce, ZEND_STRL("PERFORMANCE_LOAD"), static_cast<zend_long>(v8::RAILMode::PERFORMANCE_LOAD));
140+
#undef this_ce
141+
129142
return SUCCESS;
130143
}

src/php_v8_enums.h

+4-4
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ extern zend_class_entry* php_v8_property_handler_flags_class_entry;
3131
extern zend_class_entry* php_v8_property_filter_class_entry;
3232
extern zend_class_entry* php_v8_key_collection_mode_class_entry;
3333
extern zend_class_entry* php_v8_index_filter_class_entry;
34+
extern zend_class_entry *php_v8_rail_mode_class_entry;
3435

3536

3637
#define PHP_V8_ACCESS_CONTROL_FLAGS ( 0 \
@@ -77,12 +78,11 @@ extern zend_class_entry* php_v8_index_filter_class_entry;
7778
| static_cast<long>(v8::KeyCollectionMode::kIncludePrototypes) \
7879
)
7980

80-
#define PHP_V8_INDEX_FILTER_FLAGS ( 0 \
81-
| static_cast<long>(v8::IndexFilter::kIncludeIndices) \
82-
| static_cast<long>(v8::IndexFilter::kSkipIndices) \
81+
#define PHP_V8_INDEX_FILTER_FLAGS ( 0 \
82+
| static_cast<long>(v8::IndexFilter::kIncludeIndices) \
83+
| static_cast<long>(v8::IndexFilter::kSkipIndices) \
8384
)
8485

85-
8686
PHP_MINIT_FUNCTION (php_v8_enums);
8787

8888
#endif //PHP_V8_ENUMS_H

src/php_v8_function_callback_info.cc

+91-7
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616

1717
#include "php_v8_function_callback_info.h"
1818
#include "php_v8_exceptions.h"
19-
#include "php_v8_callback_info.h"
2019
#include "php_v8_return_value.h"
2120
#include "php_v8_value.h"
2221
#include "php_v8.h"
@@ -46,21 +45,21 @@ php_v8_return_value_t * php_v8_callback_info_create_from_info(zval *return_value
4645
// common to both callback structures:
4746
// isolate
4847
ZVAL_OBJ(&tmp, &php_v8_isolate->std);
49-
zend_update_property(php_v8_callback_info_class_entry, return_value, ZEND_STRL("isolate"), &tmp);
48+
zend_update_property(php_v8_function_callback_info_class_entry, return_value, ZEND_STRL("isolate"), &tmp);
5049
// context
5150
ZVAL_OBJ(&tmp, &php_v8_context->std);
52-
zend_update_property(php_v8_callback_info_class_entry, return_value, ZEND_STRL("context"), &tmp);
51+
zend_update_property(php_v8_function_callback_info_class_entry, return_value, ZEND_STRL("context"), &tmp);
5352
// this
5453
php_v8_get_or_create_value(&tmp, args.This(), php_v8_isolate);
55-
zend_update_property(php_v8_callback_info_class_entry, return_value, ZEND_STRL("this"), &tmp);
54+
zend_update_property(php_v8_function_callback_info_class_entry, return_value, ZEND_STRL("this"), &tmp);
5655
Z_DELREF(tmp);
5756
// holder
5857
php_v8_get_or_create_value(&tmp, args.Holder(), php_v8_isolate);
59-
zend_update_property(php_v8_callback_info_class_entry, return_value, ZEND_STRL("holder"), &tmp);
58+
zend_update_property(php_v8_function_callback_info_class_entry, return_value, ZEND_STRL("holder"), &tmp);
6059
Z_DELREF(tmp);
6160
// return value
6261
php_v8_return_value = php_v8_return_value_create_from_return_value(&tmp, php_v8_context, PHP_V8_RETVAL_ACCEPTS_ANY);
63-
zend_update_property(php_v8_callback_info_class_entry, return_value, ZEND_STRL("return_value"), &tmp);
62+
zend_update_property(php_v8_function_callback_info_class_entry, return_value, ZEND_STRL("return_value"), &tmp);
6463
Z_DELREF(tmp);
6564

6665
// specific to function callback structure:
@@ -86,6 +85,66 @@ php_v8_return_value_t * php_v8_callback_info_create_from_info(zval *return_value
8685
return php_v8_return_value;
8786
}
8887

88+
static PHP_METHOD(CallbackInfo, getIsolate) {
89+
zval rv;
90+
zval *tmp;
91+
92+
if (zend_parse_parameters_none() == FAILURE) {
93+
return;
94+
}
95+
96+
tmp = zend_read_property(this_ce, getThis(), ZEND_STRL("isolate"), 0, &rv);
97+
ZVAL_COPY(return_value, tmp);
98+
}
99+
100+
static PHP_METHOD(CallbackInfo, getContext) {
101+
zval rv;
102+
zval *tmp;
103+
104+
if (zend_parse_parameters_none() == FAILURE) {
105+
return;
106+
}
107+
108+
tmp = zend_read_property(this_ce, getThis(), ZEND_STRL("context"), 0, &rv);
109+
ZVAL_COPY(return_value, tmp);
110+
}
111+
112+
static PHP_METHOD(CallbackInfo, this) {
113+
zval rv;
114+
zval *tmp;
115+
116+
if (zend_parse_parameters_none() == FAILURE) {
117+
return;
118+
}
119+
120+
tmp = zend_read_property(this_ce, getThis(), ZEND_STRL("this"), 0, &rv);
121+
ZVAL_COPY(return_value, tmp);
122+
}
123+
124+
static PHP_METHOD(CallbackInfo, holder) {
125+
zval rv;
126+
zval *tmp;
127+
128+
if (zend_parse_parameters_none() == FAILURE) {
129+
return;
130+
}
131+
132+
tmp = zend_read_property(this_ce, getThis(), ZEND_STRL("holder"), 0, &rv);
133+
ZVAL_COPY(return_value, tmp);
134+
}
135+
136+
static PHP_METHOD(CallbackInfo, getReturnValue) {
137+
zval rv;
138+
zval *tmp;
139+
140+
if (zend_parse_parameters_none() == FAILURE) {
141+
return;
142+
}
143+
144+
tmp = zend_read_property(this_ce, getThis(), ZEND_STRL("return_value"), 0, &rv);
145+
ZVAL_COPY(return_value, tmp);
146+
}
147+
89148
static PHP_METHOD(FunctionCallbackInfo, length) {
90149
zval rv;
91150
zval *tmp;
@@ -136,6 +195,21 @@ static PHP_METHOD(FunctionCallbackInfo, isConstructCall) {
136195
}
137196

138197

198+
PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_getIsolate, ZEND_RETURN_VALUE, 0, V8\\Isolate, 0)
199+
ZEND_END_ARG_INFO()
200+
201+
PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_getContext, ZEND_RETURN_VALUE, 0, V8\\Context, 0)
202+
ZEND_END_ARG_INFO()
203+
204+
PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_this, ZEND_RETURN_VALUE, 0, V8\\ObjectValue, 0)
205+
ZEND_END_ARG_INFO()
206+
207+
PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_holder, ZEND_RETURN_VALUE, 0, V8\\ObjectValue, 0)
208+
ZEND_END_ARG_INFO()
209+
210+
PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_getReturnValue, ZEND_RETURN_VALUE, 0, V8\\ReturnValue, 0)
211+
ZEND_END_ARG_INFO()
212+
139213
PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_length, ZEND_RETURN_VALUE, 0, IS_LONG, 0)
140214
ZEND_END_ARG_INFO()
141215

@@ -150,6 +224,11 @@ ZEND_END_ARG_INFO()
150224

151225

152226
static const zend_function_entry php_v8_function_callback_info_methods[] = {
227+
PHP_V8_ME(CallbackInfo, this, ZEND_ACC_PUBLIC)
228+
PHP_V8_ME(CallbackInfo, holder, ZEND_ACC_PUBLIC)
229+
PHP_V8_ME(CallbackInfo, getIsolate, ZEND_ACC_PUBLIC)
230+
PHP_V8_ME(CallbackInfo, getContext, ZEND_ACC_PUBLIC)
231+
PHP_V8_ME(CallbackInfo, getReturnValue, ZEND_ACC_PUBLIC)
153232
PHP_V8_ME(FunctionCallbackInfo, length, ZEND_ACC_PUBLIC)
154233
PHP_V8_ME(FunctionCallbackInfo, arguments, ZEND_ACC_PUBLIC)
155234
PHP_V8_ME(FunctionCallbackInfo, newTarget, ZEND_ACC_PUBLIC)
@@ -161,8 +240,13 @@ PHP_MINIT_FUNCTION(php_v8_function_callback_info) {
161240
zend_class_entry ce;
162241

163242
INIT_NS_CLASS_ENTRY(ce, PHP_V8_NS, "FunctionCallbackInfo", php_v8_function_callback_info_methods);
164-
this_ce = zend_register_internal_class_ex(&ce, php_v8_callback_info_class_entry);
243+
this_ce = zend_register_internal_class(&ce);
165244

245+
zend_declare_property_null(this_ce, ZEND_STRL("isolate"), ZEND_ACC_PRIVATE);
246+
zend_declare_property_null(this_ce, ZEND_STRL("context"), ZEND_ACC_PRIVATE);
247+
zend_declare_property_null(this_ce, ZEND_STRL("this"), ZEND_ACC_PRIVATE);
248+
zend_declare_property_null(this_ce, ZEND_STRL("holder"), ZEND_ACC_PRIVATE);
249+
zend_declare_property_null(this_ce, ZEND_STRL("return_value"), ZEND_ACC_PRIVATE);
166250
zend_declare_property_null(this_ce, ZEND_STRL("arguments"), ZEND_ACC_PRIVATE);
167251
zend_declare_property_null(this_ce, ZEND_STRL("new_target"), ZEND_ACC_PRIVATE);
168252
zend_declare_property_null(this_ce, ZEND_STRL("is_constructor_call"), ZEND_ACC_PRIVATE);

src/php_v8_function_callback_info.h

-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
#define PHP_V8_FUNCTION_CALLBACK_INFO_H
1515

1616
#include "php_v8_return_value.h"
17-
#include "php_v8_callback_info.h"
1817
#include <v8.h>
1918

2019
extern "C" {

0 commit comments

Comments
 (0)