diff options
Diffstat (limited to 'ext/com_dotnet/README')
-rw-r--r-- | ext/com_dotnet/README | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/ext/com_dotnet/README b/ext/com_dotnet/README new file mode 100644 index 0000000..0d9db40 --- /dev/null +++ b/ext/com_dotnet/README @@ -0,0 +1,71 @@ +This is the new php5 COM module. + +It is not 100% backwards compatible with PHP 4 ext/com, but you should not miss +the "features" that have not been retained. + +This module exposes 3 classes: variant, com and dotnet(*). +com and dotnet classes are descendants of the variant class; the only +difference between the three are their constructors. Once instantiated, the +module doesn't make a distinction between them. + +COM errrors are mapped to exceptions; you should protect your COM code using +the try..catch construct if you want to be able to handle error conditions. + +Be warned that due to the way the ZE2 currently works, exceptions are only +"armed" at the time they are detected, but do not "detonate" until the end of +the statement. So, code like this: + + $obj->foo[43]->bar(); + +Where the foo[43] access triggers an exception will continue to call the bar() +method on a null object and cause a fatal php error. + +Default properties and array access: + +$obj = new COM("..."); +$obj[1]->foo(); + +The code above will use the type information for the object to determine its +default property and then access it. In PHP 4, it was hard-coded to use the +"Items" member, which was wrong. + +The default property will also be used by the casting support to determine the +value for the object. + +Variants: + +This implementation of COM takes a simpler approach than the PHP 4 version; +we only map a few native types to COM and vice-versa, leaving the more complex +things as variants. This allows greater consistency of data when passing +parameters to and from COM objects (no data will be lost). In addition, a +large number of the variant API has been mapped to PHP space so that you can +use it for working with the special variant decimal, currency and date time +types. This could be used as a replacement for the bcmath extension, for +example. + +You can use the new object casting hook to for a php-native representation of +a variant object: + +$a = new variant(4); +$b = new variant(6); +$c = variant_add($a, $b); +echo $c; // outputs 10 as a string, instead of Object + +Sample Script: + +<?php +$word = new COM("word.application"); +print "Loaded Word, version {$word->Version}\n"; +$word->Visible = 1; +$word->Documents->Add(); +$word->Selection->TypeText("This is a test..."); +$word->Documents[1]->SaveAs("Useless test.doc"); +$word->Quit(); +?> + +TODO: + +- documentation + +* dotnet support requires that you have the mscoree.h header from the .net sdk + when you build the module. |