^Status|Draft| ^Todo|Expand, clarify, elaborate and more examples. Autoloading via Kohana::auto_load and naming rules.| ====== Loading resources ====== Some libraries are always loaded automatically: [[libraries:uri|URI]], Router and [[libraries:input|Input]]. ===== Autoloading ===== PHP has functionality to [[http://php.net/manual/en/language.oop5.autoload.php|automatically load]] files if a certain class has not been loaded yet. Kohana employs this functionality. **Example** $user = new User_Model; $cache = new Cache(); html::stylesheet(); $this->layout = new View('layout'); ===== Loading libraries ===== Libraries can be autoloaded: $this->cache= new Cache; echo $this->cache->get('mycache'); Some of the libraries ([[libraries:calendar|Calendar]], [[libraries:captcha|Captcha]], [[libraries:image|Image]], [[libraries:orm|ORM]], [[libraries:pagination|Pagination]], [[libraries:validation|Validation]], [[core:view|View]]) provide another method, ''factory'', to load instantiate and use them. This way methods can be chained efficiently: **Examples:** View::factory('some_view')->set(array('title' => 'Welcome to Kohana !', 'breadcrumb' => 'Kohana > Welcome'))->render(true); $post = Validation::factory($_POST)->pre_filter('trim')->add_rules('field1', 'length[2,15]','alpha_numeric'); $page = ORM::factory('page')->where('name', 'index')->find(); $image = Image::factory('moo.jpg')->resize(400, NULL)->crop(400, 350, 'top')->sharpen(20)->quality(75); It is recommended to access the Database and Session objects via the singleton instance, rather than using ''new'': ''$db = Database::instance()'' and ''$s = Session::instance()'' Note: If the objects do not exist, they will be instantiated. Example: Load Session and Database in a Base Controller, and access the objects in your extended controllers. // Base Controller code $this->db = Database::instance($db_group); $this->session = Session::instance(); // Now in any controller which extends Base Controller $var = $this->session->get('var'); $query = $this->db->query('SELECT * FROM `table`); ===== Loading database===== Loading the database can also be done like this $this->db = new Database; **__Loading database in models__** In models the database is loaded automatically as far as you call ''parent::%%__%%construct();'' in your constructor. public function __construct() { // load database library into $this->db (can be omitted if not required) parent::__construct(); } ===== Loading helpers ===== Using a helper is fairly simple. Just call method as a static method. The class will be loaded automatically echo url::base(); echo html::breadcrumb(); ===== Loading views ===== Views are the final output of Kohana. They can be embedded into each other so as to help you in making your site. The actual rendering of a view is not done when you load one. More on views can be found on the [[general:views|views page]]. Information on the view class can be found on the [[core:view|View class]] page. **Example** $this->layout=new View('layouts/layout'); // will load the file views/layouts/layout.php //will render the view $this->layout->render(TRUE); ===== Loading models ===== Loading a model is the same as loading a view except you must append '_Model' to your model name. More can be found on the [[general::models|Models]] page. For instance your model is User_Model, the filename would be ''models/user.php'' The loading of the model happens in the controller. **Example** $user = new User_Model; $name = $user->get_user_name($id); //get_user_name is a method defined in User_Model