php_vm 1.1.1 → 1.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.md +5 -0
- data/ext/php_vm/php_vm.c +18 -3
- data/ext/php_vm/php_vm_v2z.c +2 -0
- data/ext/php_vm/php_vm_z2v.c +5 -0
- metadata +2 -2
    
        data/README.md
    CHANGED
    
    
    
        data/ext/php_vm/php_vm.c
    CHANGED
    
    | @@ -118,6 +118,8 @@ int new_php_object(zend_class_entry *ce, VALUE v_args, zval *retval) | |
| 118 118 | 
             
            	int result = FAILURE;
         | 
| 119 119 |  | 
| 120 120 | 
             
            	if (ce->constructor) {
         | 
| 121 | 
            +
            		TSRMLS_FETCH();
         | 
| 122 | 
            +
             | 
| 121 123 | 
             
            		// defined constructor
         | 
| 122 124 | 
             
            /*
         | 
| 123 125 | 
             
            		if (!(ce->constructor->common.fn_flags & ZEND_ACC_PUBLIC)) {
         | 
| @@ -310,6 +312,8 @@ VALUE get_callee_name() | |
| 310 312 |  | 
| 311 313 | 
             
            VALUE call_php_method_bridge(zend_class_entry *ce, zval *obj, VALUE callee, int argc, VALUE *argv)
         | 
| 312 314 | 
             
            {
         | 
| 315 | 
            +
            	TSRMLS_FETCH();
         | 
| 316 | 
            +
             | 
| 313 317 | 
             
            	// callee
         | 
| 314 318 | 
             
            	if (callee==Qnil) {
         | 
| 315 319 | 
             
            		VALUE exception = rb_exc_new2(rb_ePHPError, "callee is nil");
         | 
| @@ -351,6 +355,9 @@ VALUE call_php_method_bridge(zend_class_entry *ce, zval *obj, VALUE callee, int | |
| 351 355 | 
             
            				zend_update_static_property(ce, RSTRING_PTR(callee), RSTRING_LEN(callee), z_val TSRMLS_CC);
         | 
| 352 356 | 
             
            			}
         | 
| 353 357 |  | 
| 358 | 
            +
            			// release
         | 
| 359 | 
            +
            			zval_ptr_dtor(&z_val);
         | 
| 360 | 
            +
             | 
| 354 361 | 
             
            			return Qnil;
         | 
| 355 362 | 
             
            		} else {
         | 
| 356 363 | 
             
            			// getter
         | 
| @@ -372,6 +379,10 @@ VALUE call_php_method_bridge(zend_class_entry *ce, zval *obj, VALUE callee, int | |
| 372 379 |  | 
| 373 380 | 
             
            void php_native_resource_delete(PHPNativeResource *p)
         | 
| 374 381 | 
             
            {
         | 
| 382 | 
            +
            	if (p->zobj) {
         | 
| 383 | 
            +
            		zval_ptr_dtor(&p->zobj);
         | 
| 384 | 
            +
            		p->zobj = NULL;
         | 
| 385 | 
            +
            	}
         | 
| 375 386 | 
             
            	free(p);
         | 
| 376 387 | 
             
            }
         | 
| 377 388 |  | 
| @@ -440,6 +451,7 @@ VALUE rb_php_vm_require_once(VALUE cls, VALUE filepath) | |
| 440 451 |  | 
| 441 452 | 
             
            VALUE rb_php_vm_exec(VALUE cls, VALUE code)
         | 
| 442 453 | 
             
            {
         | 
| 454 | 
            +
            	TSRMLS_FETCH();
         | 
| 443 455 | 
             
            	php_eval_string(RSTRING_PTR(code), RSTRING_LEN(code) TSRMLS_CC);
         | 
| 444 456 | 
             
            	return Qnil;
         | 
| 445 457 | 
             
            }
         | 
| @@ -493,7 +505,7 @@ VALUE rb_php_class_initialize(VALUE self, VALUE v_name) | |
| 493 505 | 
             
            	VALUE resource = Data_Wrap_Struct(CLASS_OF(self), 0, php_native_resource_delete, p);
         | 
| 494 506 | 
             
            	rb_iv_set(self, "php_native_resource", resource);
         | 
| 495 507 |  | 
| 496 | 
            -
            	// define php static methods
         | 
| 508 | 
            +
            	// define php static properties and methods
         | 
| 497 509 | 
             
            	define_php_properties(self, *ce, 1);
         | 
| 498 510 | 
             
            	define_php_methods(self, *ce, 1);
         | 
| 499 511 |  | 
| @@ -510,6 +522,7 @@ VALUE rb_php_class_new(int argc, VALUE *argv, VALUE self) | |
| 510 522 | 
             
            	VALUE args;
         | 
| 511 523 | 
             
            	rb_scan_args(argc, argv, "*", &args);
         | 
| 512 524 |  | 
| 525 | 
            +
            	// alloc
         | 
| 513 526 | 
             
            	VALUE obj = Qnil;
         | 
| 514 527 | 
             
            	zend_class_entry *ce = get_zend_class_entry(self);
         | 
| 515 528 | 
             
            	if (is_exception_zend_class_entry(ce)) {
         | 
| @@ -519,7 +532,7 @@ VALUE rb_php_class_new(int argc, VALUE *argv, VALUE self) | |
| 519 532 | 
             
            	}
         | 
| 520 533 | 
             
            	rb_php_object_initialize(obj, self, args);
         | 
| 521 534 |  | 
| 522 | 
            -
            	// define php instance  | 
| 535 | 
            +
            	// define php instance properties and methods
         | 
| 523 536 | 
             
            	define_php_properties(obj, ce, 0);
         | 
| 524 537 | 
             
            	define_php_methods(obj, ce, 0);
         | 
| 525 538 |  | 
| @@ -614,6 +627,7 @@ VALUE rb_php_exception_object_initialize(int argc, VALUE *argv, VALUE self) | |
| 614 627 |  | 
| 615 628 | 
             
            void php_vm_module_init()
         | 
| 616 629 | 
             
            {
         | 
| 630 | 
            +
            	TSRMLS_FETCH();
         | 
| 617 631 | 
             
            	int argc = 1;
         | 
| 618 632 | 
             
            	char *argv[2] = {"php_vm", NULL};
         | 
| 619 633 | 
             
            	php_embed_init(argc, argv PTSRMLS_CC);
         | 
| @@ -622,6 +636,7 @@ void php_vm_module_init() | |
| 622 636 |  | 
| 623 637 | 
             
            void php_vm_module_exit()
         | 
| 624 638 | 
             
            {
         | 
| 639 | 
            +
            	TSRMLS_FETCH();
         | 
| 625 640 | 
             
            	php_embed_shutdown(TSRMLS_C);
         | 
| 626 641 | 
             
            }
         | 
| 627 642 |  | 
| @@ -641,7 +656,7 @@ void Init_php_vm() | |
| 641 656 | 
             
            	rb_define_singleton_method(rb_mPHPVM, "exec", rb_php_vm_exec, 1);
         | 
| 642 657 | 
             
            	rb_define_singleton_method(rb_mPHPVM, "getClass", rb_php_vm_getClass, 1);
         | 
| 643 658 |  | 
| 644 | 
            -
            	rb_define_const(rb_mPHPVM, "VERSION", rb_str_new2("1.1. | 
| 659 | 
            +
            	rb_define_const(rb_mPHPVM, "VERSION", rb_str_new2("1.1.2"));
         | 
| 645 660 |  | 
| 646 661 | 
             
            	// class PHPVM::PHPClass
         | 
| 647 662 | 
             
            	rb_cPHPClass = rb_define_class_under(rb_mPHPVM, "PHPClass", rb_cObject);
         | 
    
        data/ext/php_vm/php_vm_v2z.c
    CHANGED
    
    
    
        data/ext/php_vm/php_vm_z2v.c
    CHANGED
    
    | @@ -76,6 +76,8 @@ static VALUE zval_to_value_hash(HashTable* ht) | |
| 76 76 |  | 
| 77 77 | 
             
            static VALUE zval_to_value_object(zval *z)
         | 
| 78 78 | 
             
            {
         | 
| 79 | 
            +
            	TSRMLS_FETCH();
         | 
| 80 | 
            +
             | 
| 79 81 | 
             
            	// class name
         | 
| 80 82 | 
             
            	const char *name = "";
         | 
| 81 83 | 
             
            	zend_uint name_len = 0;
         | 
| @@ -102,6 +104,9 @@ static VALUE zval_to_value_object(zval *z) | |
| 102 104 | 
             
            		rb_iv_set(obj, "php_class", class);
         | 
| 103 105 | 
             
            	}
         | 
| 104 106 |  | 
| 107 | 
            +
            	// retain
         | 
| 108 | 
            +
            	Z_ADDREF_P(z);
         | 
| 109 | 
            +
             | 
| 105 110 | 
             
            	// resource
         | 
| 106 111 | 
             
            	PHPNativeResource *p = ALLOC(PHPNativeResource);
         | 
| 107 112 | 
             
            	p->ce = get_zend_class_entry(class);
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: php_vm
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1.1. | 
| 4 | 
            +
              version: 1.1.2
         | 
| 5 5 | 
             
              prerelease: 
         | 
| 6 6 | 
             
            platform: ruby
         | 
| 7 7 | 
             
            authors:
         | 
| @@ -9,7 +9,7 @@ authors: | |
| 9 9 | 
             
            autorequire: 
         | 
| 10 10 | 
             
            bindir: bin
         | 
| 11 11 | 
             
            cert_chain: []
         | 
| 12 | 
            -
            date: 2012-12- | 
| 12 | 
            +
            date: 2012-12-25 00:00:00.000000000 Z
         | 
| 13 13 | 
             
            dependencies: []
         | 
| 14 14 | 
             
            description: php_vm is a native bridge between Ruby and PHP.
         | 
| 15 15 | 
             
            email:
         |