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 a2562ae

Browse files
Merge pull request #102 from pinepain/features
Add {Template,ObjectValue}:setLazyDataProperty() method, closes #97
2 parents 3cf330f + 3eaa631 commit a2562ae

17 files changed

+343
-43
lines changed

‎src/php_v8_function_template.cc

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,9 @@ static PHP_METHOD(FunctionTemplate, setNativeDataProperty) {
211211
php_v8_function_template_SetNativeDataProperty(INTERNAL_FUNCTION_PARAM_PASSTHRU);
212212
}
213213

214+
static PHP_METHOD(FunctionTemplate, setLazyDataProperty) {
215+
php_v8_function_template_SetLazyDataProperty(INTERNAL_FUNCTION_PARAM_PASSTHRU);
216+
}
214217
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
215218

216219
static PHP_METHOD(FunctionTemplate, getFunction) {
@@ -486,6 +489,12 @@ PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_VOID_INFO_EX(arginfo_setNativeDataProperty, 2)
486489
ZEND_ARG_TYPE_INFO(0, settings, IS_LONG, 0)
487490
ZEND_END_ARG_INFO()
488491

492+
PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_VOID_INFO_EX(arginfo_setLazyDataProperty, 2)
493+
ZEND_ARG_OBJ_INFO(0, name, V8\\NameValue, 0)
494+
ZEND_ARG_CALLABLE_INFO(0, getter, 0)
495+
ZEND_ARG_TYPE_INFO(0, attributes, IS_LONG, 0)
496+
ZEND_END_ARG_INFO()
497+
489498
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
490499

491500
PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_getFunction, ZEND_RETURN_VALUE, 1, V8\\FunctionObject, 0)
@@ -547,6 +556,7 @@ static const zend_function_entry php_v8_function_template_methods[] = {
547556
PHP_V8_ME(FunctionTemplate, set, ZEND_ACC_PUBLIC)
548557
PHP_V8_ME(FunctionTemplate, setAccessorProperty, ZEND_ACC_PUBLIC)
549558
PHP_V8_ME(FunctionTemplate, setNativeDataProperty, ZEND_ACC_PUBLIC)
559+
PHP_V8_ME(FunctionTemplate, setLazyDataProperty, ZEND_ACC_PUBLIC)
550560
PHP_V8_ME(FunctionTemplate, getFunction, ZEND_ACC_PUBLIC)
551561
PHP_V8_ME(FunctionTemplate, setCallHandler, ZEND_ACC_PUBLIC)
552562
PHP_V8_ME(FunctionTemplate, setLength, ZEND_ACC_PUBLIC)

‎src/php_v8_object.cc

Lines changed: 63 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -528,17 +528,6 @@ static PHP_METHOD(Object, setAccessorProperty) {
528528
local_object->SetAccessorProperty(local_name, getter, setter, static_cast<v8::PropertyAttribute>(attributes), static_cast<v8::AccessControl>(settings));
529529
}
530530

531-
532-
///**
533-
// * Sets a native data property like Template::SetNativeDataProperty, but
534-
// * this method sets on this object directly.
535-
// */
536-
//V8_WARN_UNUSED_RESULT Maybe<bool> SetNativeDataProperty(
537-
// Local<Context> context, Local<Name> name,
538-
// AccessorNameGetterCallback getter,
539-
// AccessorNameSetterCallback setter = nullptr,
540-
// Local<Value> data = Local<Value>(), PropertyAttribute attributes = None);
541-
542531
static PHP_METHOD(Object, setNativeDataProperty) {
543532
zval *context_zv;
544533
zval *php_v8_name_zv;
@@ -606,6 +595,61 @@ static PHP_METHOD(Object, setNativeDataProperty) {
606595
RETURN_BOOL(maybe_res.FromJust());
607596
}
608597

598+
static PHP_METHOD(Object, setLazyDataProperty) {
599+
zval *context_zv;
600+
zval *php_v8_name_zv;
601+
602+
zend_long attributes = 0;
603+
604+
zend_fcall_info getter_fci = empty_fcall_info;
605+
zend_fcall_info_cache getter_fci_cache = empty_fcall_info_cache;
606+
607+
if (zend_parse_parameters(ZEND_NUM_ARGS(), "oof|l",
608+
&context_zv,
609+
&php_v8_name_zv,
610+
&getter_fci, &getter_fci_cache,
611+
&attributes
612+
) == FAILURE) {
613+
return;
614+
}
615+
616+
PHP_V8_VALUE_FETCH_WITH_CHECK(getThis(), php_v8_value);
617+
PHP_V8_VALUE_FETCH_WITH_CHECK(php_v8_name_zv, php_v8_name);
618+
PHP_V8_CONTEXT_FETCH_WITH_CHECK(context_zv, php_v8_context);
619+
620+
PHP_V8_DATA_ISOLATES_CHECK(php_v8_value, php_v8_context)
621+
PHP_V8_DATA_ISOLATES_CHECK(php_v8_value, php_v8_name)
622+
623+
PHP_V8_ENTER_STORED_ISOLATE(php_v8_context);
624+
PHP_V8_ENTER_CONTEXT(php_v8_context);
625+
626+
v8::Local<v8::Object> local_object = php_v8_value_get_local_as<v8::Object>(php_v8_value);
627+
v8::Local<v8::Name> local_name = php_v8_value_get_local_as<v8::Name>(php_v8_name);
628+
629+
PHP_V8_CONVERT_FROM_V8_STRING_TO_STRING(isolate, name, local_name);
630+
631+
attributes = attributes ? attributes & PHP_V8_PROPERTY_ATTRIBUTE_FLAGS : attributes;
632+
633+
v8::AccessorNameGetterCallback getter;
634+
v8::Local<v8::External> data;
635+
636+
phpv8::CallbacksBucket *bucket = php_v8_value->persistent_data->bucket("lazy_data_property_", local_name->IsSymbol(), name);
637+
data = v8::External::New(isolate, bucket);
638+
639+
bucket->add(phpv8::CallbacksBucket::Index::Getter, getter_fci, getter_fci_cache);
640+
getter = php_v8_callback_accessor_name_getter;
641+
642+
v8::Maybe<bool> maybe_res = local_object->SetLazyDataProperty(context,
643+
local_name,
644+
getter,
645+
data,
646+
static_cast<v8::PropertyAttribute>(attributes)
647+
);
648+
649+
PHP_V8_THROW_EXCEPTION_WHEN_NOTHING(maybe_res, "Failed to set lazy data property");
650+
651+
RETURN_BOOL(maybe_res.FromJust());
652+
}
609653

610654
/* NOTE: we skip functionality for private properties for now */
611655

@@ -1373,6 +1417,13 @@ PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_setNativeDataProperty, ZE
13731417
ZEND_ARG_TYPE_INFO(0, attributes, IS_LONG, 0)
13741418
ZEND_END_ARG_INFO()
13751419

1420+
PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_setLazyDataProperty, ZEND_RETURN_VALUE, 3, _IS_BOOL, 0)
1421+
ZEND_ARG_OBJ_INFO(0, context, V8\\Context, 0)
1422+
ZEND_ARG_OBJ_INFO(0, name, V8\\NameValue, 0)
1423+
ZEND_ARG_CALLABLE_INFO(0, getter, 0)
1424+
ZEND_ARG_TYPE_INFO(0, attributes, IS_LONG, 0)
1425+
ZEND_END_ARG_INFO()
1426+
13761427
PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_getPropertyNames, ZEND_RETURN_VALUE, 1, V8\\ArrayObject, 0)
13771428
ZEND_ARG_OBJ_INFO(0, context, V8\\Context, 0)
13781429
ZEND_ARG_TYPE_INFO(0, mode, IS_LONG, 0)
@@ -1505,6 +1556,7 @@ static const zend_function_entry php_v8_object_methods[] = {
15051556
PHP_V8_ME(Object, setAccessor, ZEND_ACC_PUBLIC)
15061557
PHP_V8_ME(Object, setAccessorProperty, ZEND_ACC_PUBLIC)
15071558
PHP_V8_ME(Object, setNativeDataProperty, ZEND_ACC_PUBLIC)
1559+
PHP_V8_ME(Object, setLazyDataProperty, ZEND_ACC_PUBLIC)
15081560
PHP_V8_ME(Object, getPropertyNames, ZEND_ACC_PUBLIC)
15091561
PHP_V8_ME(Object, getOwnPropertyNames, ZEND_ACC_PUBLIC)
15101562
PHP_V8_ME(Object, getPrototype, ZEND_ACC_PUBLIC)

‎src/php_v8_object_template.cc

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,10 @@ static PHP_METHOD(ObjectTemplate, setNativeDataProperty) {
177177
php_v8_object_template_SetNativeDataProperty(INTERNAL_FUNCTION_PARAM_PASSTHRU);
178178
}
179179

180+
static PHP_METHOD(ObjectTemplate, setLazyDataProperty) {
181+
php_v8_object_template_SetLazyDataProperty(INTERNAL_FUNCTION_PARAM_PASSTHRU);
182+
}
183+
180184
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
181185

182186

@@ -443,6 +447,12 @@ PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_VOID_INFO_EX(arginfo_setNativeDataProperty, 2)
443447
ZEND_ARG_TYPE_INFO(0, settings, IS_LONG, 0)
444448
ZEND_END_ARG_INFO()
445449

450+
PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_VOID_INFO_EX(arginfo_setLazyDataProperty, 2)
451+
ZEND_ARG_OBJ_INFO(0, name, V8\\NameValue, 0)
452+
ZEND_ARG_CALLABLE_INFO(0, getter, 0)
453+
ZEND_ARG_TYPE_INFO(0, attributes, IS_LONG, 0)
454+
ZEND_END_ARG_INFO()
455+
446456
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
447457

448458
PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_newInstance, ZEND_RETURN_VALUE, 1, V8\\ObjectValue, 0)
@@ -491,6 +501,7 @@ static const zend_function_entry php_v8_object_template_methods[] = {
491501
PHP_V8_ME(ObjectTemplate, set, ZEND_ACC_PUBLIC)
492502
PHP_V8_ME(ObjectTemplate, setAccessorProperty, ZEND_ACC_PUBLIC)
493503
PHP_V8_ME(ObjectTemplate, setNativeDataProperty, ZEND_ACC_PUBLIC)
504+
PHP_V8_ME(ObjectTemplate, setLazyDataProperty, ZEND_ACC_PUBLIC)
494505
PHP_V8_ME(ObjectTemplate, newInstance, ZEND_ACC_PUBLIC)
495506
PHP_V8_ME(ObjectTemplate, setAccessor, ZEND_ACC_PUBLIC)
496507
PHP_V8_ME(ObjectTemplate, setHandlerForNamedProperty, ZEND_ACC_PUBLIC)

‎src/php_v8_template.cc

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ zend_class_entry *php_v8_template_ce;
3030
template<class T, typename N> void php_v8_template_Set(v8::Isolate *isolate, v8::Local<T> local_template, N* php_v8_template, INTERNAL_FUNCTION_PARAMETERS);
3131
template<class T, typename N> void php_v8_template_SetAccessorProperty(v8::Isolate *isolate, v8::Local<T> local_template, N* php_v8_template, INTERNAL_FUNCTION_PARAMETERS);
3232
template<class T, typename N> void php_v8_template_SetNativeDataProperty(v8::Isolate *isolate, v8::Local<T> local_template, N* php_v8_template, INTERNAL_FUNCTION_PARAMETERS);
33+
template<class T, typename N> void php_v8_template_SetLazyDataProperty(v8::Isolate *isolate, v8::Local<T> local_template, N* php_v8_template, INTERNAL_FUNCTION_PARAMETERS);
3334

3435

3536
void php_v8_object_template_Set(INTERNAL_FUNCTION_PARAMETERS) {
@@ -99,6 +100,30 @@ void php_v8_function_template_SetNativeDataProperty(INTERNAL_FUNCTION_PARAMETERS
99100
php_v8_template_SetNativeDataProperty(isolate, local_template, php_v8_template, INTERNAL_FUNCTION_PARAM_PASSTHRU);
100101
}
101102

103+
104+
void php_v8_object_template_SetLazyDataProperty(INTERNAL_FUNCTION_PARAMETERS) {
105+
106+
PHP_V8_FETCH_OBJECT_TEMPLATE_WITH_CHECK(getThis(), php_v8_template);
107+
108+
PHP_V8_ENTER_STORED_ISOLATE(php_v8_template);
109+
110+
v8::Local<v8::ObjectTemplate> local_template = php_v8_object_template_get_local(php_v8_template);
111+
112+
php_v8_template_SetLazyDataProperty(isolate, local_template, php_v8_template, INTERNAL_FUNCTION_PARAM_PASSTHRU);
113+
}
114+
115+
void php_v8_function_template_SetLazyDataProperty(INTERNAL_FUNCTION_PARAMETERS)
116+
{
117+
PHP_V8_FETCH_FUNCTION_TEMPLATE_WITH_CHECK(getThis(), php_v8_template);
118+
119+
PHP_V8_ENTER_STORED_ISOLATE(php_v8_template);
120+
121+
v8::Local<v8::FunctionTemplate> local_template = php_v8_function_template_get_local(php_v8_template);
122+
123+
php_v8_template_SetNativeDataProperty(isolate, local_template, php_v8_template, INTERNAL_FUNCTION_PARAM_PASSTHRU);
124+
}
125+
126+
102127
template<typename M, typename N>
103128
static inline bool php_v8_template_node_set(M *parent, N *child) {
104129
if (parent->node->isSelf(child->node)) {
@@ -290,6 +315,44 @@ void php_v8_template_SetNativeDataProperty(v8::Isolate *isolate, v8::Local<T> lo
290315
static_cast<v8::AccessControl>(settings));
291316
}
292317

318+
template<class T, typename N>
319+
void php_v8_template_SetLazyDataProperty(v8::Isolate *isolate, v8::Local<T> local_template, N* php_v8_template, INTERNAL_FUNCTION_PARAMETERS) {
320+
zval *php_v8_name_zv;
321+
322+
zend_fcall_info getter_fci = empty_fcall_info;
323+
zend_fcall_info_cache getter_fci_cache = empty_fcall_info_cache;
324+
zend_long attributes = v8::PropertyAttribute::None;
325+
326+
v8::AccessorNameGetterCallback getter;
327+
v8::Local<v8::External> data;
328+
329+
if (zend_parse_parameters(ZEND_NUM_ARGS(),
330+
"of|l",
331+
&php_v8_name_zv, &getter_fci, &getter_fci_cache, &attributes) == FAILURE) {
332+
return;
333+
}
334+
335+
PHP_V8_VALUE_FETCH_WITH_CHECK(php_v8_name_zv, php_v8_name);
336+
PHP_V8_DATA_ISOLATES_CHECK(php_v8_template, php_v8_name);
337+
338+
attributes = attributes ? attributes & PHP_V8_PROPERTY_ATTRIBUTE_FLAGS : attributes;
339+
340+
v8::Local<v8::Name> local_name = php_v8_value_get_local_as<v8::Name>(php_v8_name);
341+
342+
PHP_V8_CONVERT_FROM_V8_STRING_TO_STRING(isolate, name, local_name);
343+
344+
phpv8::CallbacksBucket *bucket = php_v8_template->persistent_data->bucket("lazy_data_property_", local_name->IsSymbol(), name);
345+
data = v8::External::New(isolate, bucket);
346+
347+
bucket->add(phpv8::CallbacksBucket::Index::Getter, getter_fci, getter_fci_cache);
348+
getter = php_v8_callback_accessor_name_getter;
349+
350+
local_template->SetLazyDataProperty(local_name,
351+
getter,
352+
data,
353+
static_cast<v8::PropertyAttribute>(attributes));
354+
}
355+
293356

294357
PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_getIsolate, ZEND_RETURN_VALUE, 0, V8\\Isolate, 0)
295358
ZEND_END_ARG_INFO()
@@ -317,11 +380,19 @@ PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_VOID_INFO_EX(arginfo_setNativeDataProperty, 2)
317380
ZEND_ARG_TYPE_INFO(0, settings, IS_LONG, 0)
318381
ZEND_END_ARG_INFO()
319382

383+
384+
PHP_V8_ZEND_BEGIN_ARG_WITH_RETURN_VOID_INFO_EX(arginfo_setLazyDataProperty, 2)
385+
ZEND_ARG_OBJ_INFO(0, name, V8\\NameValue, 0)
386+
ZEND_ARG_CALLABLE_INFO(0, getter, 0)
387+
ZEND_ARG_TYPE_INFO(0, attributes, IS_LONG, 0)
388+
ZEND_END_ARG_INFO()
389+
320390
static const zend_function_entry php_v8_template_methods[] = {
321391
PHP_V8_ABSTRACT_ME(Template, getIsolate)
322392
PHP_V8_ABSTRACT_ME(Template, set)
323393
PHP_V8_ABSTRACT_ME(Template, setAccessorProperty)
324394
PHP_V8_ABSTRACT_ME(Template, setNativeDataProperty)
395+
PHP_V8_ABSTRACT_ME(Template, setLazyDataProperty)
325396

326397
PHP_FE_END
327398
};

‎src/php_v8_template.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,9 @@ extern void php_v8_function_template_SetAccessorProperty(INTERNAL_FUNCTION_PARAM
3838
extern void php_v8_object_template_SetNativeDataProperty(INTERNAL_FUNCTION_PARAMETERS);
3939
extern void php_v8_function_template_SetNativeDataProperty(INTERNAL_FUNCTION_PARAMETERS);
4040

41+
extern void php_v8_object_template_SetLazyDataProperty(INTERNAL_FUNCTION_PARAMETERS);
42+
extern void php_v8_function_template_SetLazyDataProperty(INTERNAL_FUNCTION_PARAMETERS);
43+
4144
#define PHP_V8_TEMPLATE_STORE_ISOLATE(to_zval, from_isolate_zv) zend_update_property(php_v8_template_ce, (to_zval), ZEND_STRL("isolate"), (from_isolate_zv));
4245
#define PHP_V8_TEMPLATE_READ_ISOLATE(from_zval) zend_read_property(php_v8_template_ce, (from_zval), ZEND_STRL("isolate"), 0, &rv)
4346

‎stubs/src/ObjectValue.php

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,31 @@ public function setNativeDataProperty(
195195
): bool {
196196
}
197197

198+
/**
199+
* Attempts to create a property with the given name which behaves like a data
200+
* property, except that the provided getter is invoked (and provided with the
201+
* data value) to supply its value the first time it is read. After the
202+
* property is accessed once, it is replaced with an ordinary data property.
203+
*
204+
* Analogous to Template::SetLazyDataProperty.
205+
*
206+
* @param Context $context
207+
* @param NameValue $name
208+
* @param callable $getter
209+
* @param int $attributes
210+
*
211+
* @return bool
212+
*/
213+
public function setLazyDataProperty(
214+
Context $context,
215+
NameValue $name,
216+
callable $getter,
217+
callable $setter = null,
218+
int $attributes = PropertyAttribute::NONE
219+
): bool {
220+
}
221+
222+
198223
/**
199224
* Returns an array containing the names of the enumerable properties
200225
* of this object, including properties from prototype objects. The

‎stubs/src/Template.php

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,4 +105,22 @@ public function setNativeDataProperty(
105105
$settings = AccessControl::DEFAULT_ACCESS
106106
): void {
107107
}
108+
109+
110+
/**
111+
* Like SetNativeDataProperty, but V8 will replace the native data property
112+
* with a real data property on first access.
113+
*
114+
* @param NameValue $name The name of the property for which an accessor is added.
115+
*
116+
* @param callable $getter The callback to invoke when getting the property.
117+
* Callback signature should be (NameValue $property, PropertyCallbackInfo $info)
118+
*
119+
* @param int $attribute The attributes of the property for which an accessor is added.
120+
*
121+
* @return void
122+
*/
123+
public function setLazyDataProperty(NameValue $name, callable $getter, $attribute = PropertyAttribute::NONE): void
124+
{
125+
}
108126
}

‎tests/001-verify_extension_entities.phpt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -696,6 +696,7 @@ class V8\ObjectValue
696696
public function setAccessor(V8\Context $context, V8\NameValue $name, callable $getter, ?callable $setter, int $settings, int $attributes): bool
697697
public function setAccessorProperty(V8\NameValue $name, V8\FunctionObject $getter, V8\FunctionObject $setter, int $attributes, int $settings)
698698
public function setNativeDataProperty(V8\Context $context, V8\NameValue $name, callable $getter, ?callable $setter, int $attributes): bool
699+
public function setLazyDataProperty(V8\Context $context, V8\NameValue $name, callable $getter, int $attributes): bool
699700
public function getPropertyNames(V8\Context $context, int $mode, int $property_filter, int $index_filter, bool $convert_to_strings): V8\ArrayObject
700701
public function getOwnPropertyNames(V8\Context $context, int $filter, bool $convert_to_strings): V8\ArrayObject
701702
public function getPrototype(): V8\Value
@@ -852,6 +853,7 @@ abstract class V8\Template
852853
abstract public function set(V8\NameValue $name, V8\Data $value, int $attributes)
853854
abstract public function setAccessorProperty(V8\NameValue $name, V8\FunctionTemplate $getter, V8\FunctionTemplate $setter, int $attributes, int $settings)
854855
abstract public function setNativeDataProperty(V8\NameValue $name, callable $getter, ?callable $setter, int $attributes, ?V8\FunctionTemplate $receiver, int $settings)
856+
abstract public function setLazyDataProperty(V8\NameValue $name, callable $getter, int $attributes)
855857

856858
class V8\ObjectTemplate
857859
extends V8\Template
@@ -861,6 +863,7 @@ class V8\ObjectTemplate
861863
public function set(V8\NameValue $name, V8\Data $value, int $attributes)
862864
public function setAccessorProperty(V8\NameValue $name, V8\FunctionTemplate $getter, V8\FunctionTemplate $setter, int $attributes, int $settings)
863865
public function setNativeDataProperty(V8\NameValue $name, callable $getter, ?callable $setter, int $attributes, ?V8\FunctionTemplate $receiver, int $settings)
866+
public function setLazyDataProperty(V8\NameValue $name, callable $getter, int $attributes)
864867
public function newInstance(V8\Context $value): V8\ObjectValue
865868
public function setAccessor(V8\NameValue $name, callable $getter, ?callable $setter, int $settings, int $attributes, ?V8\FunctionTemplate $receiver)
866869
public function setHandlerForNamedProperty(V8\NamedPropertyHandlerConfiguration $configuration)
@@ -879,6 +882,7 @@ class V8\FunctionTemplate
879882
public function set(V8\NameValue $name, V8\Data $value, int $attributes)
880883
public function setAccessorProperty(V8\NameValue $name, V8\FunctionTemplate $getter, V8\FunctionTemplate $setter, int $attributes, int $settings)
881884
public function setNativeDataProperty(V8\NameValue $name, callable $getter, ?callable $setter, int $attributes, ?V8\FunctionTemplate $receiver, int $settings)
885+
public function setLazyDataProperty(V8\NameValue $name, callable $getter, int $attributes)
882886
public function getFunction(V8\Context $context): V8\FunctionObject
883887
public function setCallHandler(callable $callback)
884888
public function setLength(int $length)

0 commit comments

Comments
(0)

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