summaryrefslogtreecommitdiff
path: root/ext/com_dotnet/README
diff options
context:
space:
mode:
Diffstat (limited to 'ext/com_dotnet/README')
-rw-r--r--ext/com_dotnet/README71
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.