$Id: README,v 1.9 2002/07/16 21:05:35 david Exp $

The Universe PHP Extension
--------------------------

A PHP to MICO binding by David Eriksson <eriksson@php.net>.

Universe is intended to replace the PHP extension Satellite.

The Universe PHP extension is subject to version 2.02 of the PHP license 
that is bundled with this package in the file LICENSE, and is available at 
through the world-wide-web at http://www.php.net/license/2_02.txt.

For a demonstration of Universe, and information about how you can support
the development of Universe, please visit the the Universe site:

  http://universe.2good.nu/


Contents of this document
-------------------------

o Quick-start
o Universe features
o Future of Universe
o Know issues
o Installation
o Configuration
o Supported data types


Quick-start
-----------

o Install MICO
o Install a case-insensitive Interface Repository Daemon (see README.ird)
o Configure PHP with the --with-universe parameter
o Compile and install PHP
o Modify php.ini if needed (see "Configuration" below)


Universe features
-----------------

o Use CORBA objects just like PHP classes
  - Call object methods with input and output parameters and return values
  - Read and write object attributes
  - Handles inherited interfaces
o Create CORBA objects in PHP
o Use the most common CORBA data types (see "Supported data types" below)
o Universe uses a C++ framework called Zpp (see README.Zpp)
o 95% of Universe is written in C++ (remaining parts in C)


Future of Universe
------------------

o Find and get rid of any memory leaks
o Make it run on Windows
o Verify thread-safety


Known issues
------------

o The unsigned long data type will be signed long in PHP
o You may not inherit from the Universe* classes (aggregate them if needed)
o gcc compiles C++ code really slow :-(


Installation
------------

NOTE: Universe has not been throughly tested on Microsoft Windows!

Universe does not work on systems without proper C++ exception handling.
One example of such a system is version 4.2 and earlier of BSD/OS.

Before compiling you should have installed MICO, including a special version
of the Interface Repository Daemon. See README.ird for more information.

Universe should only be used with MICO versions 2.3.7 or later.

Installation of Universe requires you to configure and compile PHP with the 
parameter "--with-universe" added to the command line to configure:

  ./configure --with-universe

If MICO is installed in any odd directory on your system you need to supply
the path prefix for MICO when you configure PHP:

  ./configure --with-universe=/stuff/mico

This means that micod is located in /stuff/mico/bin/micod, etc.

The following directories are searched by default:

  /usr/local/mico
  /usr/local
  /usr


Configuration
-------------

These are the possible php.ini entries with their default values:

universe.ORBNoIIOPServer = 0  ; you will probably set this to 1
universe.ORBDebugLevel = 0
universe.ORBIfaceRepoAddr = inet:localhost:2222
universe.ORBIfaceRepoIOR = 
universe.ORBIIOPAddr =
universe.ORBMemTrace =

For more information about the universe.ORB* entries, read the man page 
for "micorc".


Supported data types
--------------------

U=Universe
S=Satellite

R=Read CORBA data type
W=Write CORBA data type

Type                U:R  U:W  S:R  S:W
--------------------------------------
null                                            
void                                            
short                x    x    x    x
long                 x    x    x    x
unsigned short       x    x                       
unsigned long        x    x                      
float                x    x                      
double               x    x    x    x
boolean              x    x    x    x
char                 x    x                     
octet                x    x                      
any                                            
TypeCode                                            
Principal                                            
objref (object)      x    x    x    x
struct               x    x    x    x
union                                            
enum                 x    x    x    x
string               x    x    x    x
sequence             x    x    x    x
array                                            
alias (typedef)      x    x                        
exception            x    x    x                  
longlong                                            
ulonglong                                            
longdouble                                            
wchar                                            
wstring                                            
fixed                                            
value                                            
value_box                                            
native                                            
abstract_interface