5
5
Released under MIT License
6
6
*/
7
7
8
- /*
9
- * @author Niklas von Hertzen <niklas at hertzen.com>
10
- * @created 15.6.2012
11
- * @website http://hertzen.com
12
- */
13
-
14
-
15
8
var PHP = function( code, opts ) {
16
9
17
10
var iniContent = opts.filesystem.readFileSync( "cfg/php.ini" ),
@@ -41,11 +34,7 @@ var PHP = function( code, opts ) {
41
34
opts.GET = ( opts.GET !== undefined ) ? PHP.Utils.QueryString( opts.GET ) : {};
42
35
43
36
opts.FILES = (RAW_POST !== undefined ) ? RAW.Files( opts.ini.upload_max_filesize, opts.ini.max_file_uploads, opts.ini.upload_tmp_dir ) : {};
44
- /*
45
- if (RAW_POST !== undefined ) {
46
- var rawError = RAW.Error();
47
- }
48
- */
37
+
49
38
// needs to be called after RAW.Files
50
39
if (RAW_POST !== undefined ) {
51
40
RAW.WriteFiles( opts.filesystem.writeFileSync );
@@ -55,52 +44,12 @@ var PHP = function( code, opts ) {
55
44
56
45
this.compiler = new PHP.Compiler( this.AST, opts.SERVER.SCRIPT_FILENAME );
57
46
58
- /* if ( false ) {
59
- var thread = new Worker("thread.js");
60
-
61
- thread.postMessage({
62
- type: "import",
63
- content: opts.files
64
- });
65
-
66
- thread.postMessage({
67
- type: "run",
68
- content: [this.compiler.src, opts]
69
- })
70
-
71
- setTimeout(function(){
72
- thread.postMessage({
73
- type: "stop"
74
- })
75
- }, opts.ini.max_execution_time);
76
-
77
-
78
- thread.addEventListener('message', function(e) {
79
- switch( e.data.type ) {
80
- case "complete":
81
- this.vm = e.data.content;
82
- complete(this);
83
- break;
84
- default:
85
- console.log(e.data);
86
- }
87
-
88
- }, false);
89
- return;
90
- }*/
91
-
92
47
this.vm = new PHP.VM( this.compiler.src, opts );
93
48
94
49
if (RAW_POST !== undefined ) {
95
50
RAW.Error(this.vm[ PHP.Compiler.prototype.ERROR ].bind( this.vm ), opts.SERVER.SCRIPT_FILENAME);
96
51
}
97
52
98
- /*
99
- if (rawError !== undefined ) {
100
- this.vm[ PHP.Compiler.prototype.ERROR ]( rawError + " in " + opts.SERVER.SCRIPT_FILENAME, PHP.Constants.E_WARNING );
101
- }
102
- */
103
-
104
53
this.vm.Run();
105
54
};
106
55
@@ -373,10 +322,7 @@ PHP.Utils.QueryString = function( str ) {
373
322
value = (parts.length > 1 ) ? decodeURIComponent( parts[ 1 ] ) : null,
374
323
375
324
arrayManager = function( item, parse, value ) {
376
-
377
-
378
325
var arraySearch = parse.match(/^\[([a-z0-9+_\-\[]*)\]/i);
379
- // console.log(item, parse, value, arraySearch);
380
326
if ( arraySearch !== null ) {
381
327
var key = ( arraySearch[ 1 ] === undefined ) ? Object.keys( item ).length : arraySearch[ 1 ];
382
328
@@ -438,7 +384,6 @@ PHP.Utils.QueryString = function( str ) {
438
384
}, this);
439
385
440
386
return items;
441
-
442
387
};
443
388
/*
444
389
* @author Niklas von Hertzen <niklas at hertzen.com>
@@ -3306,11 +3251,6 @@ PHP.Modules.prototype.method_exists = function( object, method ) {
3306
3251
}
3307
3252
3308
3253
};
3309
- /*
3310
- * @author Niklas von Hertzen <niklas at hertzen.com>
3311
- * @created 30.6.2012
3312
- * @website http://hertzen.com
3313
- */
3314
3254
PHP.Modules.prototype.$foreachInit = function( expr, ctx ) {
3315
3255
3316
3256
var COMPILER = PHP.Compiler.prototype,
@@ -3338,14 +3278,14 @@ PHP.Modules.prototype.$foreachInit = function( expr, ctx ) {
3338
3278
if ( objectValue[ PHP.VM.Class.INTERFACES ].indexOf("Traversable") !== -1 ) {
3339
3279
3340
3280
var iterator = objectValue;
3341
-
3281
+
3342
3282
try {
3343
3283
while( (iterator instanceof PHP.VM.ClassPrototype) && iterator[ PHP.VM.Class.INTERFACES ].indexOf("Iterator") === -1 ) {
3344
- iterator = iterator[ COMPILER.METHOD_CALL ]( this, "getIterator" )[ COMPILER.VARIABLE_VALUE ];
3284
+ iterator = iterator[ COMPILER.METHOD_CALL ]( this, "getIterator" )[ COMPILER.VARIABLE_VALUE ];
3345
3285
}
3346
3286
}catch(e) {
3347
-
3348
- }
3287
+
3288
+ }
3349
3289
if ( !(iterator instanceof PHP.VM.ClassPrototype) || iterator[ PHP.VM.Class.INTERFACES ].indexOf("Iterator") === -1) {
3350
3290
this[ COMPILER.ERROR ]( "Objects returned by " + objectValue[ COMPILER.CLASS_NAME ] + "::getIterator() must be traversable or implement interface Iterator", PHP.Constants.E_ERROR, true );
3351
3291
return;
@@ -3370,28 +3310,28 @@ PHP.Modules.prototype.$foreachInit = function( expr, ctx ) {
3370
3310
3371
3311
needReorder = false;
3372
3312
for (var key in objectValue) {
3373
-
3313
+
3374
3314
if ( key.substring(0, classProperty.length ) === classProperty) {
3375
-
3315
+
3376
3316
var name = key.substring( classProperty.length );
3377
-
3317
+
3378
3318
if (PHP.Utils.Visible.call( this, name, objectValue, ctx )) {
3379
3319
items.push( name );
3380
3320
}
3381
3321
3382
3322
}
3383
-
3323
+
3384
3324
if (((objectValue[ PHP.VM.Class.PROPERTY_TYPE + name ] & PHP.VM.Class.PUBLIC) === PHP.VM.Class.PUBLIC) || objectValue[ PHP.VM.Class.PROPERTY_TYPE + name ] === undefined) {
3385
3325
3386
-
3326
+
3387
3327
} else {
3388
3328
needReorder = true;
3389
3329
}
3390
3330
}
3391
3331
if ( needReorder ) {
3392
- items.sort();
3332
+ items.sort();
3393
3333
}
3394
-
3334
+
3395
3335
return items;
3396
3336
}.bind(this))( objectValue )
3397
3337
@@ -3433,52 +3373,25 @@ PHP.Modules.prototype.foreach = function( iterator, byRef, value, key ) {
3433
3373
}
3434
3374
3435
3375
if ( expr[ VAR.TYPE ] === VAR.ARRAY ) {
3436
-
3437
-
3438
-
3439
- /*
3440
- if ( iterator.expr[ VAR.IS_REF ] !== true ) {
3441
- expr = iterator.clone;
3442
- } else {
3443
- expr = expr[ COMPILER.VARIABLE_VALUE ];
3444
- }
3445
- */
3446
3376
var clonedValues = iterator.clone[ PHP.VM.Class.PROPERTY + ARRAY.VALUES ][ COMPILER.VARIABLE_VALUE ],
3447
3377
clonedKeys = iterator.clone[ PHP.VM.Class.PROPERTY + ARRAY.KEYS ][ COMPILER.VARIABLE_VALUE ],
3448
3378
origValues = expr[ COMPILER.VARIABLE_VALUE ][ PHP.VM.Class.PROPERTY + ARRAY.VALUES ][ COMPILER.VARIABLE_VALUE ],
3449
3379
origKeys = expr[ COMPILER.VARIABLE_VALUE ][ PHP.VM.Class.PROPERTY + ARRAY.KEYS ][ COMPILER.VARIABLE_VALUE ],
3450
3380
len = ( byRef === true || iterator.expr[ VAR.IS_REF ] === true ) ? origValues.length : iterator.len,
3451
3381
pointer = (( byRef === true || iterator.expr[ VAR.IS_REF ] === true) ? expr[ COMPILER.VARIABLE_VALUE ] : iterator.clone )[ PHP.VM.Class.PROPERTY + ARRAY.POINTER];
3452
3382
3453
-
3454
- // clean unset elements off array
3455
- /*
3456
- if ( byRef === true ) {
3457
- origValues.forEach(function( variable, index ) {
3458
- if ( variable[ VAR.DEFINED ] !== true ) {
3459
- origValues.splice( index, 1 );
3460
- origKeys.splice( index, 1 );
3461
- console.log(origValues);
3462
- }
3463
- });
3464
- }*/
3465
-
3466
3383
var compareTo = (byRef === true || iterator.expr[ VAR.IS_REF ] === true) ? origValues : clonedValues,
3467
3384
result;
3468
3385
3469
-
3470
3386
var index, lowerLoop = function( index ) {
3471
3387
while( compareTo [ --index ] === undefined && index > 0 ) {}
3472
3388
return index;
3473
3389
}
3474
3390
3475
-
3476
3391
if ( iterator.breakNext === true) {
3477
-
3478
3392
return false;
3479
3393
}
3480
3394
3481
-
3482
3395
if ( pointer[ COMPILER.VARIABLE_VALUE ] !== iterator.count ) {
3483
3396
if ( iterator.last !== undefined && iterator.last !== compareTo [ pointer[ COMPILER.VARIABLE_VALUE ] ] ) {
3484
3397
index = pointer[ COMPILER.VARIABLE_VALUE ];
@@ -3601,17 +3514,11 @@ PHP.Modules.prototype.foreach = function( iterator, byRef, value, key ) {
3601
3514
return true;
3602
3515
}
3603
3516
return false;
3604
-
3605
3517
}
3606
-
3607
-
3608
3518
} else {
3609
3519
this[ COMPILER.ERROR ]( "Invalid argument supplied for foreach()", PHP.Constants.E_CORE_WARNING, true );
3610
3520
return false;
3611
3521
}
3612
-
3613
-
3614
-
3615
3522
};
3616
3523
PHP.Modules.prototype.$include = function( ,ドル $Static, file ) {
3617
3524
0 commit comments