<?php $global = Object::$global; $undefined = null; $Infinity = INF; $NaN = NAN; $Object = Object::getGlobalConstructor(); $Function = Func::getGlobalConstructor(); $Array = Arr::getGlobalConstructor(); $Boolean = Bln::getGlobalConstructor(); $Number = Number::getGlobalConstructor(); $String = Str::getGlobalConstructor(); $Date = Date::getGlobalConstructor(); $Error = Error::getGlobalConstructor(); $RangeError = RangeError::getGlobalConstructor(); $ReferenceError = ReferenceError::getGlobalConstructor(); $SyntaxError = SyntaxError::getGlobalConstructor(); $TypeError = TypeError::getGlobalConstructor(); $RegExp = RegExp::getGlobalConstructor(); $Buffer = Buffer::getGlobalConstructor(); call_user_func(function () use(&$escape, &$unescape, &$encodeURI, &$decodeURI, &$encodeURIComponent, &$decodeURIComponent) { $ord = function ($ch) { $i = ord($ch[0]); if ($i <= 0x7f) { return $i; } else { if ($i < 0xc2) { return $i; //invalid byte sequence } else { if ($i <= 0xdf) {
* @return Func */ static function getGlobalConstructor() { $Boolean = new Func(function ($value = false) { $self = Func::getContext(); if ($self instanceof Bln) { $self->value = $value ? true : false; return $self; } else { return $value ? true : false; } }); $Boolean->instantiate = function () { return new Bln(); }; $Boolean->set('prototype', Bln::$protoObject); $Boolean->setMethods(Bln::$classMethods, true, false, true); return $Boolean; } } Bln::$classMethods = array(); Bln::$protoMethods = array('valueOf' => function () { $self = Func::getContext(); return $self->value; }, 'toString' => function () { $self = Func::getContext(); return to_string($self->value); }); Bln::$protoObject = new Object(); Bln::$protoObject->setMethods(Bln::$protoMethods, true, false, true);