Jifty::ClassLoader - Loads the application classes
Jifty::ClassLoader loads all of the application's model and action classes, generating classes on the fly for Collections of pre-existing models.
Jifty::ClassLoader
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.
@INC
Takes one mandatory argument, base, which should be the the application's base path; all of the classes under this will be automatically loaded.
base
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:
require
An empty application base class is created that doen't provide any methods or inherit from anything.
An empty class that descends from Jifty::Record is created.
An empty class that descends from Jifty::Event is created.
An empty class that descends from Jifty::Collection is created.
An empty class that descends from Jifty::Notification.
An empty class that descends from Jifty::Dispatcher.
An empty class that descends from Jifty::Handle is created.
An empty class that descends from Jifty::Bootstrap.
An empty class that descends from Jifty::Upgrade.
An empty class that descends from Jifty::CurrentUser.
If Application::Model::Something is a valid model class, then it creates a subclass of Jifty::Collection whose record_class is Application::Model::Something.
Application::Model::Something
record_class
If Application::Model::Something is 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 is Application::Model::Something.
A helper method; takes CODE as a string and returns an open filehandle containing that CODE.
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.
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.
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';
To install Jifty, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Jifty
CPAN shell
perl -MCPAN -e shell install Jifty
For more information on module installation, please visit the detailed CPAN module installation guide.