File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / php / ext / com_dotnet / README
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue Feb 21 23:47:53 2012 UTC (12 years, 5 months ago) by misho
Branches: php, MAIN
CVS tags: v5_4_3elwix, v5_4_29p0, v5_4_29, v5_4_20p0, v5_4_20, v5_4_17p0, v5_4_17, v5_3_10, HEAD
php

    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>