interobject communcation when objects are not inside another:
---------------------------------------------------------------------------------
versionA:
class some_classA{
global $semaphore;
function use_semphore(){;}
function write_semaphore(){;}
function read_semaphore(){;}
}
class some_classB{
global $semaphore;
function use_semphore(){;}
function write_semaphore(){;}
function read_semaphore(){;}
}
$semaphore;
$objectA = new classA;
$objectB = new classB;
while( $some_condition ){
$some_classA->use_semaphore();
$some_classB->use_semaphore();
}
---------------------------------------------------------------------------------
versionB:
class some_classA{
function some_classA( &$semaphore ){ $this->semaphore = $semaphore; }
&$semaphore;
function use_semphore(){;}
function write_semaphore(){;}
function read_semaphore(){;}
}
class some_classB{
function some_classB( &$semaphore ){ $this->semaphore = $semaphore; }
&$semaphore;
function use_semphore(){;}
function write_semaphore(){;}
function read_semaphore(){;}
}
$semaphore;
$objectA = new classA( &$semaphore );
$objectB = new classB( &$semaphore );
while( $some_condition ){
$some_classA->use_semaphore();
$some_classB->use_semaphore();
}
---------------------------------------------------------------------------------
The above versions are basically a small RTOS, real time operating system.
Obviously, it doesn't keep running like a real RTOS would you have a process
timeout, like in a script:-) But it is useful in scripts WHILE they are
processing something.
---------------------------------------------------------------------------------
VersionC:
class some_classA{
function use_semphore(){;}
function write_semaphore(){;}
function read_semaphore(){;}
}
class some_classB{
function use_semphore(){;}
function write_semaphore(){;}
function read_semaphore(){;}
}
class some_classC{
var &$semaphore;
var $objectA = new classA;
var $objectB = new classB;
function done_once( $some_var ){
$this->semaphore = $some_var;
$this->objectA->use_semaphore();
$this->objectB->use_semaphore();
}
}
---------------------------------------------------------------------------------
MANY, MANY other ways to talk between objects are possible, and may more uses
than this shows. The basic idea is to have a variable both, or all,
communicating
objects know the location of, usally through:
1/ A reference in at the time of object construction.
2/ A reference passed as an argument to a main function in a class/object
at time of invocation.
3/ A global variable whose name is known ahead of time.
1 is best, because it is simplest, but needs a variable one up in
namespace location, which means it can be seen and written
by functions/objects above. If global, that means it can
be written by the PHP_VARS under the wrong setting.
2 is OK, but you have to write in the name of the variable to pass in
each time, more trouble, spelling errors, and messier, but maybe
safer.
3 is least safe, but least trouble in coding.
4, is to make the WHOLE script a single function of an object, and the
semaphore is a 'var' in the object, which is passed in as a reference
to any objects created in the main object. Safest, but more difficult
to set up or possibly to visualize.
---------------------------------------------------------------------------------
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]