[dev] Autoloading application rdo objects
Chuck Hagenbuch
chuck at horde.org
Sun Nov 8 16:48:48 UTC 2009
Quoting Jan Schneider <jan at horde.org>:
> Zitat von Duck <duck at obala.net>:
>
>> As the current implementation of RDO requires the object mapper to have the
>> "Mapper" suffix after the object name. Hot to make them autoload-able?
>
> I my (private) application, I name them like App_Rdo_FooMapper and
> have all the Rdo classes in the app/lib/Rdo/ directory. This only
> works for a small set of classes though, because you end up with a
> lot of files in this directory otherwise.
>
> We should probably use a different name scheming that better fits
> our autoloading scheme. Maybe App_Rdo_Mapper_Foo so that all mapper
> classes are in app/lib/Rdo/Mapper/. Though this wouldn't group the
> classes thematically, just by function.
> The other option would be App_Rdo_Foo_Mapper, but that would lead to
> a lot of app/lib/Rdo/Foo/ directories, all only containing the
> Mapper.php file.
> A third solution could be to also name the Rdo base classes
> differently, so that we have App_Rdo_Foo_Mapper and App_Rdo_Foo_Base
> (or _Object). That's the cleanest solution on the filesystem level
> IMO, because we have a lib/Rdo/ directory that only contains
> directories, and all these directories group the Rdo base and mapper
> classes thematically. The resulting base class name is less
> beautiful though.
I'm in favor of eventually having something like:
lib/Mappers/
lib/Objects/
(I'm not happy with just "Objects", though - maybe "Entities"?)
And then adding new autoloading rules that look for a class named
App_FooMapper in app/lib/Mappers/Foo.php, and looks for App_FooEntity
in app/lib/Entities/Foo.php. One of my coworkers has a rewritten
autoloader that allows swapping in new autoloading strategies
seamlessly, so this wouldn't be hard to set up in the app
initialization logic.
I'm still not happy with the Entity/Object name though - any ideas there?
-chuck
More information about the dev
mailing list