0
如何將php對象保存到hashtable以及如何從php-extension中的hashtable中獲取保存的php對象?如何將php對象保存到php-extension中的hashtable?
這裏是我的代碼:
//object_map has been init and alloc memory
//return_value is the return var of PHP_FUNCTION
zend_class_entry **class_ce,
object_init_ex(return_value, *class_ce); //create object
ioc_add_object_to_hash(name, return_value); //save object
//find in the hashtable
if(zend_hash_find(object_map, name, sizeof(name), (void*)&return_value) == SUCCESS){
php_printf("return_value:%p, %p,type:%d\n", return_value,&return_value, Z_TYPE_P(return_value));
return 0;
}
//definition of ioc_add_object_to_hash
int ioc_add_object_to_hash(const char *name, zval *obj)
{
if(!obj){
return -1;
}
if(!object_map){
return -1;
}
if(zend_hash_update(object_map, name, sizeof(name), obj, sizeof(*obj), NULL) == SUCCESS){
return 0;
}
return -1;
}
PHP代碼:
$filelist = array(
"Foo" => realpath(__DIR__)."/Foo.php",
"Bar" => realpath(__DIR__)."/Bar.php",
);
ioc::init($filelist);
var_dump(get_included_files());
Bar::halo();
$foo = ioc::make("Foo");
echo $foo->get();
$foo2 = ioc::make("Foo"); var_dump($foo2);
的$ foo2的是後第二個電話國際奧委會NULL ::使( 「富」);
我所有的代碼都推送到https://github.com/longmon/php-ioc.git。
謝謝!