On Thu, Jan 27, 2011 at 6:49 PM, Michal Migurski <[email protected]> wrote:
> Personally, I think PHP's lurch toward object-orientedness over the past few
> years is misguided, and I'm a big fan of the namespaceless, all-function
> modules like GD that work by passing resources around. For mapnik, it would
> make sense to have a single kind of resource: a map object. Everything else,
> like rules, styles, layers, etc., could be represented with simple
> associative arrays and plain values.
Thanks for your thoughts, Mike. Mysql has 'dual bindings' too, and
there is explicit support for it in the php extension development
code; and I agree that in some cases one makes more sense than the
other. Still, it's extra development effort, and time is the main
constraint at this time. Defining a new, procedural API would be an
extra task in itself. To take a simple example I'm not sure what the
best way to represent a color would be. The initial natural thing to
do would be have rgb components as separate arguments to functions;
making the alpha component optional like so:
mapnik_set_color($handle, 255, 0, 0);
But then how does one set the color from a css string? Would this
require overloading all functions that take a color with a string so
that you'd do
mapnik_set_color($handle, 'indigo');
Or would a color be an array with 'r', 'g', 'b' and 'a' keys? And a
function mapnik_get_color that would make the previous example work
like
mapnik_set_color($handle, mapnik_get_color('indigo'));
It's not convenient to have to do
mapnik_set_color($handle, new array('r' => 255, 'g' => 0, 'b' => 0));
And this is just a simple example, because mapnik::color is merely a
glorified struct...
Either way, if you'd like to discuss this further, maybe we could
flesh out the api design a bit, but actually implementing it will go
onto the todo list, after the 1:1 OO version is somewhat complete. For
example, could you write rundemo.cpp with the procedural php api you
envisage? That demonstrates most of the concepts I think.
cheers,
roel
_______________________________________________
Mapnik-users mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/mapnik-users