128 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			128 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| namespace Safe;
 | |
| 
 | |
| use Safe\Exceptions\ComException;
 | |
| 
 | |
| /**
 | |
|  * Instructs COM to sink events generated by
 | |
|  * comobject into the PHP object
 | |
|  * sinkobject.
 | |
|  *
 | |
|  * Be careful how you use this feature; if you are doing something similar
 | |
|  * to the example below, then it doesn't really make sense to run it in a
 | |
|  * web server context.
 | |
|  *
 | |
|  * @param object $comobject
 | |
|  * @param object $sinkobject sinkobject should be an instance of a class with
 | |
|  * methods named after those of the desired dispinterface; you may use
 | |
|  * com_print_typeinfo to help generate a template class
 | |
|  * for this purpose.
 | |
|  * @param mixed $sinkinterface PHP will attempt to use the default dispinterface type specified by
 | |
|  * the typelibrary associated with comobject, but
 | |
|  * you may override this choice by setting
 | |
|  * sinkinterface to the name of the dispinterface
 | |
|  * that you want to use.
 | |
|  * @throws ComException
 | |
|  *
 | |
|  */
 | |
| function com_event_sink(object $comobject, object $sinkobject, $sinkinterface = null): void
 | |
| {
 | |
|     error_clear_last();
 | |
|     if ($sinkinterface !== null) {
 | |
|         $result = \com_event_sink($comobject, $sinkobject, $sinkinterface);
 | |
|     } else {
 | |
|         $result = \com_event_sink($comobject, $sinkobject);
 | |
|     }
 | |
|     if ($result === false) {
 | |
|         throw ComException::createFromPhpError();
 | |
|     }
 | |
| }
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * Loads a type-library and registers its constants in the engine, as though
 | |
|  * they were defined using define.
 | |
|  *
 | |
|  * Note that it is much more efficient to use the  configuration setting to pre-load and
 | |
|  * register the constants, although not so flexible.
 | |
|  *
 | |
|  * If you have turned on , then
 | |
|  * PHP will attempt to automatically register the constants associated with a
 | |
|  * COM object when you instantiate it.  This depends on the interfaces
 | |
|  * provided by the COM object itself, and may not always be possible.
 | |
|  *
 | |
|  * @param string $typelib_name typelib_name can be one of the following:
 | |
|  *
 | |
|  *
 | |
|  *
 | |
|  * The filename of a .tlb file or the executable module
 | |
|  * that contains the type library.
 | |
|  *
 | |
|  *
 | |
|  *
 | |
|  *
 | |
|  * The type library GUID, followed by its version number, for example
 | |
|  * {00000200-0000-0010-8000-00AA006D2EA4},2,0.
 | |
|  *
 | |
|  *
 | |
|  *
 | |
|  *
 | |
|  * The type library name, e.g. Microsoft OLE DB ActiveX Data
 | |
|  * Objects 1.0 Library.
 | |
|  *
 | |
|  *
 | |
|  *
 | |
|  * PHP will attempt to resolve the type library in this order, as the
 | |
|  * process gets more and more expensive as you progress down the list;
 | |
|  * searching for the type library by name is handled by physically
 | |
|  * enumerating the registry until we find a match.
 | |
|  *
 | |
|  * The filename of a .tlb file or the executable module
 | |
|  * that contains the type library.
 | |
|  *
 | |
|  * The type library GUID, followed by its version number, for example
 | |
|  * {00000200-0000-0010-8000-00AA006D2EA4},2,0.
 | |
|  *
 | |
|  * The type library name, e.g. Microsoft OLE DB ActiveX Data
 | |
|  * Objects 1.0 Library.
 | |
|  * @param bool $case_sensitive The case_sensitive behaves inversely to
 | |
|  * the parameter $case_insensitive in the define
 | |
|  * function.
 | |
|  * @throws ComException
 | |
|  *
 | |
|  */
 | |
| function com_load_typelib(string $typelib_name, bool $case_sensitive = true): void
 | |
| {
 | |
|     error_clear_last();
 | |
|     $result = \com_load_typelib($typelib_name, $case_sensitive);
 | |
|     if ($result === false) {
 | |
|         throw ComException::createFromPhpError();
 | |
|     }
 | |
| }
 | |
| 
 | |
| 
 | |
| /**
 | |
|  * The purpose of this function is to help generate a skeleton class for use
 | |
|  * as an event sink.  You may also use it to generate a dump of any COM
 | |
|  * object, provided that it supports enough of the introspection interfaces,
 | |
|  * and that you know the name of the interface you want to display.
 | |
|  *
 | |
|  * @param object $comobject comobject should be either an instance of a COM
 | |
|  * object, or be the name of a typelibrary (which will be resolved according
 | |
|  * to the rules set out in com_load_typelib).
 | |
|  * @param string $dispinterface The name of an IDispatch descendant interface that you want to display.
 | |
|  * @param bool $wantsink If set to TRUE, the corresponding sink interface will be displayed
 | |
|  * instead.
 | |
|  * @throws ComException
 | |
|  *
 | |
|  */
 | |
| function com_print_typeinfo(object $comobject, string $dispinterface = null, bool $wantsink = false): void
 | |
| {
 | |
|     error_clear_last();
 | |
|     $result = \com_print_typeinfo($comobject, $dispinterface, $wantsink);
 | |
|     if ($result === false) {
 | |
|         throw ComException::createFromPhpError();
 | |
|     }
 | |
| }
 |