NAME
Jifty::ClassLoader - Loads the application classes
DESCRIPTION
Jifty::ClassLoader loads all of the application's model and action classes, generating classes on the fly for Collections of pre-existing models.
new
Returns a new ClassLoader object. Doing this installs a hook into @INC that allows Jifty::ClassLoader to dynamically create needed classes if they do not exist already. This works because if use/require encounters a blessed reference in @INC, it will invoke the INC method with the name of the module it is searching for on the reference.
Takes one mandatory argument, base, which should be the the application's base path; all of the classes under this will be automatically loaded.
INC
The hook that is called when a module has been require'd that cannot be found on disk. The following stub classes are auto-generated:
- Application
-
An empty application base class is created that doen't provide any methods or inherit from anything.
- Application::Record
-
An empty class that descends from Jifty::Record is created.
- Application::Collection
-
An empty class that descends from Jifty::Collection is created.
- Application::Notification
-
An empty class that descends from Jifty::Notification.
- Application::Dispatcher
-
An empty class that descends from Jifty::Dispatcher.
- Application::Handle
-
An empty class that descends from Jifty::Handle is created.
- Application::Bootstrap
-
An empty class that descends from Jifty::Bootstrap.
- Application::Upgrade
-
An empty class that descends from Jifty::Upgrade.
- Application::CurrentUser
-
An empty class that descends from Jifty::CurrentUser.
- Application::Model::AnythingCollection
-
If
Application::Model::Somethingis a valid model class, then it creates a subclass of Jifty::Collection whoserecord_classisApplication::Model::Something. - Application::Action::(Create or Update or Delete)Anything
-
If
Application::Model::Somethingis a valid model class, then it creates a subclass of Jifty::Action::Record::Create, Jifty::Action::Record::Update, or Jifty::Action::Record::Delete whose record_class isApplication::Model::Something.
return_class CODE
A helper method; takes CODE as a string and returns an open filehandle containing that CODE.
require
Loads all of the application's Actions and Models. It additionally require's all Collections and Create/Update actions for each Model base class -- which will auto-create them using the above code if they do not exist on disk.
models
Accessor to the list of models this application has loaded.
In scalar context, returns a mutable array reference; in list context, return the content of the array.
Writing your own classes
If you require more functionality than is provided by the classes created by ClassLoader then you should create a class with the appropriate name and add your extra logic to it.
For example you will almost certainly want to write your own dispatcher, so something like:
package MyApp::Dispatcher;
use Jifty::Dispatcher -base;
If you want to add some application specific behaviour to a model's collection class, say for the User model, create UserCollection.pm in your applications Model directory.
package MyApp::Model::UserCollection;
use base 'MyApp::Collection';