0
0
mirror of https://github.com/phpv8/v8js.git synced 2024-12-22 14:01:53 +00:00
V8 Javascript Engine for PHP — This PHP extension embeds the Google V8 Javascript Engine.
Go to file
Simon Best 15dc9e157b Script timeout thread to forcefully terminate the current thread of V8 execution in the corresponding isolate.
Note that threads are implemented using std::thread which is only available in C++0x. The relevant compile flags have been added but compiler support has not been tested and is therefore not guaranteed.
2013-04-09 22:52:42 +01:00
js Initial import 2012-04-27 16:26:15 +00:00
samples Initial import 2012-04-27 16:26:15 +00:00
tests Fixed failing tests with timezone independent equivalents 2013-03-17 20:50:48 -07:00
config.m4 Script timeout thread to forcefully terminate the current thread of V8 execution in the corresponding isolate. 2013-04-09 22:52:42 +01:00
CREDITS Add Author 2012-04-27 16:34:04 +00:00
Makefile.frag Initial import 2012-04-27 16:26:15 +00:00
package.xml Fixed build in 5.4+ 2012-07-06 17:21:44 -07:00
php_v8js_macros.h Fixed build in 5.4+ 2012-07-06 17:12:53 -07:00
php_v8js.h Update copyright information 2012-04-27 16:41:32 +00:00
README.md Fixed formatting of markdown. 2012-07-24 14:03:32 +02:00
test.php Initial import 2012-04-27 16:26:15 +00:00
TODO Initial import 2012-04-27 16:26:15 +00:00
v8js_convert.cc Use the Z_ADDREF_P macro to increasing the refcount of PHP values assigned to V8. 2013-03-24 16:30:57 +00:00
v8js_methods.cc Fixed build in 5.4+ 2012-07-06 17:12:53 -07:00
v8js_variables.cc Update copyright information 2012-04-27 16:41:32 +00:00
v8js.cc Script timeout thread to forcefully terminate the current thread of V8 execution in the corresponding isolate. 2013-04-09 22:52:42 +01:00

V8Js

This is a PHP extension for Google's V8 Javascript engine

Minimum requirements

  • V8 JavaScript Engine library version 2.5.8 http://code.google.com/p/v8/ (trunk)

    V8 is Google's open source JavaScript engine. V8 is written in C++ and is used in Google Chrome, the open source browser from Google. V8 implements ECMAScript as specified in ECMA-262, 5th edition, and runs on Windows (XP or newer), Mac OS X (10.5 or newer), and Linux systems that use IA-32, x64, or ARM processors. V8 can run standalone, or can be embedded into any C++ application. You can find more information here: http://code.google.com/p/v8/

  • PHP 5.3.3+ (non-ZTS build preferred) Note: V8 engine is not natively thread safe and this extension has not been designed to work around it either yet and might or might not work properly with ZTS enabled PHP. :)

API

class V8Js
{
    /* Constants */

    const string V8_VERSION;
    const int FLAG_NONE;
    const int FLAG_FORCE_ARRAY;

    /* Methods */

    // Initializes and starts V8 engine and Returns new V8Js object with it's own V8 context.
    public __construct ( [string object_name = "PHP" [, array variables = NULL [, array extensions = NULL [, bool report_uncaught_exceptions = TRUE]]] )

    // Compiles and executes script in object's context with optional identifier string.
    public mixed V8Js::executeString( string script [, string identifier [, int flags = V8Js::FLAG_NONE]])

    // Returns uncaught pending exception or null if there is no pending exception.
    public V8JsException V8Js::getPendingException( void )

    /** Static methods **/

    // Registers persistent context independent global Javascript extension.
    // NOTE! These extensions exist until PHP is shutdown and they need to be registered before V8 is initialized. 
    // For best performance V8 is initialized only once per process thus this call has to be done before any V8Js objects are created!
    public static bool V8Js::registerExtension(string ext_name, string script [, array deps [, bool auto_enable = FALSE]])

    // Returns extensions successfully registered with V8Js::registerExtension().
    public static array V8Js::getExtensions( void )
}

final class V8JsException extends Exception
{
    /* Properties */
    protected string JsFileName = NULL;
    protected int JsLineNumber = NULL;
    protected string JsSourceLine = NULL;
    protected string JsTrace = NULL;
    
    /* Methods */
    final public string getJsFileName( void )
    final public int getJsLineNumber( void )
    final public string getJsSourceLine( void )
    final public string getJsTrace( void )
}