---
name: "Jifty::Plugin::ClassLoader"
section: "3pm"
platform: "linux"
package: "libjifty-perl"
version: "1.10518+dfsg-2"
release: "Debian 7 (Wheezy)"
platforms: ["linux"]
url: "https://new.carta.tech/Jifty::Plugin::ClassLoader"
---

# Jifty::Plugin::ClassLoader(3pm)

Automatically generates application classes

## NAME

Jifty::Plugin::ClassLoader - Automatically generates application classes

## DESCRIPTION

`"Jifty::Plugin::ClassLoader"` loads additional model and action classes on behalf of the application out of the configured plugin classes.  Unlike,  `"Jifty::ClassLoader"`, this class will only autogenerate classes if the plugin provides them.  The plugin classes are checked before the base Jifty classes, so that a plugin can override the Jifty class, just as any existing application classes will be loaded first.

### new

Returns a new ClassLoader object.  Doing this installs a hook into `@INC` that allows Jifty::Plugin::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 two mandatory arguments, `"base"`, which should be the  application's base path; and `"plugin"` which is the plugin classname.

### 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 doesn'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*::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::*Anything*Collection

  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*::Action::(Create or Update or Delete)*Anything*

  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*`"`.

### 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.

### DESTROY

When the ClassLoader gets garbage-collected, its entry in `@INC` needs to be removed.
