Skip to content

Commit ce48b27

Browse files
committed
Enhance function and method call handling with case-insensitive name resolution and parameter metadata
1 parent ed86ab0 commit ce48b27

12 files changed

Lines changed: 132 additions & 48 deletions

‎src/PHPEngine.js‎

Lines changed: 6 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎src/PHPEngine.js.map‎

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎src/PHPEngine.ts‎

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -219,24 +219,24 @@ export class PHPEngine {
219219
"call_user_func": async (ctx: PHPContext, callback: any, ...args: any[]) => {
220220
if (!callback) return undefined;
221221
if (typeof callback === "function") return await callback.apply(ctx, args);
222-
if (typeof callback === "string") return await ctx.callFunction(callback, args);
223-
if (Array.isArray(callback) && callback.length === 2) return await ctx.callMethod(callback[0], callback[1], args);
222+
if (typeof callback === "string") return await ctx.callFunction(callback.toLowerCase(), args);
223+
if (Array.isArray(callback) && callback.length === 2) return await ctx.callMethod(callback[0], String(callback[1] ?? "").toLowerCase(), args);
224224
return undefined;
225225
},
226226
"call_user_func_array": async (ctx: PHPContext, callback: any, args: any[] = []) => {
227227
const arrArgs = Array.isArray(args) ? args : Object.values(args || {});
228228
if (!callback) return undefined;
229229
if (typeof callback === "function") return await callback.apply(ctx, arrArgs);
230-
if (typeof callback === "string") return await ctx.callFunction(callback, arrArgs);
231-
if (Array.isArray(callback) && callback.length === 2) return await ctx.callMethod(callback[0], callback[1], args);
230+
if (typeof callback === "string") return await ctx.callFunction(callback.toLowerCase(), arrArgs);
231+
if (Array.isArray(callback) && callback.length === 2) return await ctx.callMethod(callback[0], String(callback[1] ?? "").toLowerCase(), arrArgs);
232232
return undefined;
233233
},
234234
"define": async (ctx: PHPContext, name: string, value: any) => {
235-
if (ctx.hasConstant(name)) {
235+
if (ctx.hasConstant(name.toLowerCase())) {
236236
await ctx.triggerError(`Constant ${name} already defined`, 2);
237237
return false;
238238
}
239-
ctx.defineConstant(name, value);
239+
ctx.defineConstant(name.toLowerCase(), value);
240240
return true;
241241
},
242242
"defined": (ctx: PHPContext, name: string) => ctx.hasConstant(name),

‎src/extensions/nodejs.js‎

Lines changed: 54 additions & 12 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎src/extensions/nodejs.js.map‎

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)