我正在尝试从值数组创建新对象。
我不知道创建新的object
。
所以我添加了以下几行。
$object = (object) '';
$object->vehicleId = $vehicleId;
但是它会自动在对象中添加一个新属性scalar
。如何删除它?
答案 0 :(得分:0)
您可以使用const index = require('./index')
var AWS = require('aws-sdk-mock');
const AWS_SDK = require('aws-sdk');
AWS.mock('StepFunctions', 'startExecution', function (params, callback){
callback(null, "successfully started the execution");
});
const isTest = process.env.JEST_WORKER_ID;
const config = {
convertEmptyValues: true,
...(isTest && {endpoint: 'localhost:8000', sslEnabled: false,region:'local-env'})
};
describe('Test Step Function Invocation', function () {
it('verifies successful response', async () => {
process.env.StateMachineARN = 'arn:aws:states:us-east-1:12345678:stateMachine:Testing';
var event = {
"payload": "my_payload",
"data": "some-data",
"MVId": "00156"
};
const result = await index.handler(event,{},config);
expect(result.statusCode).toEqual(200);
expect(result.body).toBe(event);
});
});
AWS.restore('StepFunctions');
实例化对象stdClass
:
new
答案 1 :(得分:0)
您可以按照常规方式进行操作
$object = new \stdClass();
或具有空转换
$object = (object)null;
如果已经有了数组,则可以将其转换为对象
$object = (object)$array;
答案 2 :(得分:0)
按照PHP Manual:
如果将对象转换为对象,则不会对其进行修改。如果将任何其他类型的值转换为对象,则将创建stdClass内置类的新实例。如果值为NULL,则新实例将为空。数组将转换为具有由键和相应值命名的属性的对象。请注意,在这种情况下,除非迭代,否则无法访问PHP 7.2.0之前的数字键。
将字符串转换为对象时,该字符串的值将另存为属性。给出的默认名称为scalar
。即使是一个空字符串也仍然被认为拥有一个值。
在PHP中,您可以通过多种方式创建一个空对象。
取自https://www.php.net/manual/en/language.types.object.php#118679
的示例<?php
$obj1 = new \stdClass; // Instantiate stdClass object
$obj2 = new class{}; // Instantiate anonymous class
$obj3 = (object)[]; // Cast empty array to object
var_dump($obj1); // object(stdClass)#1 (0) {}
var_dump($obj2); // object(class@anonymous)#2 (0) {}
var_dump($obj3); // object(stdClass)#3 (0) {}
另一种方法是将空值转换为N69S所示的对象:
$object = (object)null; // Same as (object)[]
当然,您可以将关联数组转换为对象:
$object = (object)['a' => 123];
// object(stdClass)#1 (1) {
// ["a"]=>
// int(123)
// }