Annotation of embedaddon/php/ext/com_dotnet/README, revision 1.1
1.1 ! misho 1: This is the new php5 COM module.
! 2:
! 3: It is not 100% backwards compatible with PHP 4 ext/com, but you should not miss
! 4: the "features" that have not been retained.
! 5:
! 6: This module exposes 3 classes: variant, com and dotnet(*).
! 7: com and dotnet classes are descendants of the variant class; the only
! 8: difference between the three are their constructors. Once instantiated, the
! 9: module doesn't make a distinction between them.
! 10:
! 11: COM errrors are mapped to exceptions; you should protect your COM code using
! 12: the try..catch construct if you want to be able to handle error conditions.
! 13:
! 14: Be warned that due to the way the ZE2 currently works, exceptions are only
! 15: "armed" at the time they are detected, but do not "detonate" until the end of
! 16: the statement. So, code like this:
! 17:
! 18: $obj->foo[43]->bar();
! 19:
! 20: Where the foo[43] access triggers an exception will continue to call the bar()
! 21: method on a null object and cause a fatal php error.
! 22:
! 23: Default properties and array access:
! 24:
! 25: $obj = new COM("...");
! 26: $obj[1]->foo();
! 27:
! 28: The code above will use the type information for the object to determine its
! 29: default property and then access it. In PHP 4, it was hard-coded to use the
! 30: "Items" member, which was wrong.
! 31:
! 32: The default property will also be used by the casting support to determine the
! 33: value for the object.
! 34:
! 35: Variants:
! 36:
! 37: This implementation of COM takes a simpler approach than the PHP 4 version;
! 38: we only map a few native types to COM and vice-versa, leaving the more complex
! 39: things as variants. This allows greater consistency of data when passing
! 40: parameters to and from COM objects (no data will be lost). In addition, a
! 41: large number of the variant API has been mapped to PHP space so that you can
! 42: use it for working with the special variant decimal, currency and date time
! 43: types. This could be used as a replacement for the bcmath extension, for
! 44: example.
! 45:
! 46: You can use the new object casting hook to for a php-native representation of
! 47: a variant object:
! 48:
! 49: $a = new variant(4);
! 50: $b = new variant(6);
! 51: $c = variant_add($a, $b);
! 52: echo $c; // outputs 10 as a string, instead of Object
! 53:
! 54: Sample Script:
! 55:
! 56: <?php
! 57: $word = new COM("word.application");
! 58: print "Loaded Word, version {$word->Version}\n";
! 59: $word->Visible = 1;
! 60: $word->Documents->Add();
! 61: $word->Selection->TypeText("This is a test...");
! 62: $word->Documents[1]->SaveAs("Useless test.doc");
! 63: $word->Quit();
! 64: ?>
! 65:
! 66: TODO:
! 67:
! 68: - documentation
! 69:
! 70: * dotnet support requires that you have the mscoree.h header from the .net sdk
! 71: when you build the module.
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>