|
From: Justin F. <je...@ey...> - 2001-07-08 09:01:22
|
alex black wrote:
>
> > Sometimes my mind just falls apart, and I feel like I am in that
> > state right now. In one of your last posts, you suggested to
> > get a large/complex bit of data and store it in a class variable,
> > and then (implied) down the load chain, this variable can
> > be accessed.
> >
> > HOW?
>
> $Page->modules['group_name'][load_order]->variable_name
>
> Thus my mention of possibly using unique names in the page declaration, so
> making references to modules would be more simple.
>
> that would also complicate the page module sorting functions, so I'm not
> sure it's worth doing that way. it may be a lot more simple to have a module
> communication manager which is called by a module that needs something, like
> a really simple Request class.
=================================================
Alex:
Oy weh. Now I was var_dump()'ing what you have above, viz:
var_dump($Page->modules['top'][0]);
as I thought that was it after looking at Page.php, and all I
was getting were NULL's. Of course, of course, I was
in some decendant class method, and forgot to global $Page
within the method......
But, Alex, you are not going to make us use this syntax,
are you? No, you are figuring out something with a
bit more elegance, aren't you? :)
There is _still_ something rotten, at least it seems so,
in your array sort in Page. This load_order thingy
has, you realize, the weakness, that you can put in
index.php three modules in a 'top' group with load_order(s)
as:
EXAMPLE---
MOD1 load_order=>69
MOD2 load_order=>22
MOD3 load_order=>11
and this _should_ map/sort to
$Page->modules['top'][0] ===> MOD3
$Page->modules['top'][1] ===> MOD2
$Page->modules['top'][2] ===> MOD1
but it doesn't. No matter what you put in your
load order, the sequence in $Page->modules['top']
is ALWAYS IN THE ORDER OF the appearance in index.php.
Anyway, it appears your uasort() thingy is not working,
and that, specifically, your sorting comparison function:
create_function('$a,$b', 'return $a("load_order"]
- $b["load_order"];');
must be always returning 0, instead of (-1,0,+1) accordingly.
Now I am wondering, with your sorting, IF IT WERE WORKING,
you have it mechanized, I think, that for my EXAMPLE above,
admittedly wrong or sloppy, it would create a sparse array
if the load_order was a number type and not a number_string (with
quotes).
I think you also need to guard against sparse arrays somehow.
Well, I haven't tried to "fix" _IncludeModules($_group)
and see if it does create a sparse array....
OK Alex, so in any case, you are going to figure out some
kind of way to reference _which_ instance of multiple
loads of the same module easily. The only thing that
occurs to me quickly is something like adding a tag,
as in:
array(
'name' => "EyeLibrary",
'package' => "lib",
'load_order' => 2,
'tag' => "TableData",
'options' => "option1",
),
and then allow reference to that particular module as:
$Page->modules['top']['TableData']->method_or_property;
That is knee-jerk, but gives you something to think about.
_jef
--
Justin Farnsworth
Eye Integrated Communications
321 South Evans - Suite 203
Greenville, NC 27858 | Tel: (252) 353-0722
|