Класс для автоматического подключения классов php
Как всегда лазя в интернете, в поисках интересных решений наткнулся на вот такой класс автоматического подключения классов, сделанный на языке php. Долго расписывать не стану, просто поделюсь находкой с читателями блога, кто программирует, поймет.
Вся работа по созданию и подключению класса состоит из нескольких этапов:
- Создаем 2 файла index.php и autoload.php.
- В файл autoload.php необходимо вставить наш класс.
- В файл index.php будем подключать и пробовать работу класса.
- Рядом с файлами index.php и autoload.php необходимо создать папки
- controller
- model
- view
Код класса для файла autoload.php
<?php
class autoloader {
public static $loader;
public static function init()
{
if(self::$loader == NULL) {
self::$loader = new self();
}
return self::$loader;
}
public function __construct()
{
spl_autoload_register(array($this, 'controller'));
spl_autoload_register(array($this, 'model'));
spl_autoload_register(array($this, 'view'));
}
public function library($class){
set_include_path(ROOT_DIR . '/lib');
spl_autoload_extensions('.php');
spl_autoload($class);
}
public function controller($class){
set_include_path(ROOT_DIR . '/controller');
spl_autoload_extensions('.php');
spl_autoload($class);
}
public function helper($class){
set_include_path(ROOT_DIR .'/helper');
spl_autoload_extensions('.php');
spl_autoload($class);
}
public function view($class){
set_include_path(ROOT_DIR .'/view');
spl_autoload_extensions('.php');
spl_autoload($class);
}
public function model($class){
set_include_path(ROOT_DIR .'model');
spl_autoload_extensions('.php');
spl_autoload($class);
}
}Далее создаем константу ROOT_DIR и подключаем в файл index.php созданный класс, при помощи require_once.
define("ROOT_DIR",dirname(__FILE__).'/');
require_once "autoload.php";
$autoloader = new autoloader();Вот в принципе и все, теперь осталось только создать дополнительный класс и подключить его. Для примера я создал класс конфигурации cconfig.php для сайта и положил его в папку model.
<?php
class cconfig {
private $params;
function get($param1, $param2) {
return $this->params[$param1][$param2];
}
function __construct() {
$this->params = array (
'database' => array (
'server' => 'localhost',
'login' => 'mylogin',
'password' => 'pass',
'dbname' => 'db',
'charset' => 'utf8'
),
'extra' => array (
'adress' => 'siteadress',
'adminemail' => 'info@wp-admin.com.ua'
),
'pics' => array (
'small_w' => '120',
'small_h' => '120',
'small_path' => 'pics/small/',
'big_w' => '250',
'big_h' => '335',
'big_path' => 'pics/big/',
'max_pics' => '6',
'objpicbig_w' => '541',
'objpicbig_h' => '335',
'objpicbig_path' => 'pics/objbig/',
'objpicmini_w' => '51',
'objpicmini_h' => '46',
'objpicmini_path' => 'pics/objmini/'
),
'other' => array (
'groupid' => '15',
'groupid' => '4',
'groupid' => '3'
),
);
}
function __destruct() {
}
}
?>Доработаем код в файле index.php.
define("ROOT_DIR",dirname(__FILE__).'/');
require_once "autoload.php";
$autoloader = new autoloader();
$cConfig = new CConfig;
echo $cConfig->get('database', 'login');Как видно из кода выше для подключения нового класса нам не понадобилась конструкция require_once, так как созданный выше класс autoloader подключил класс CConfig.
Данная конструкция при разработке делается один раз и ее можно использовать, так что для экономии вашего времени я аккуратно все упаковал в архив и выкладываю на своем блоге:
Если кому данный код был полезен, пишите в комментариях, буду рад хорошим отзывам о проделанной работе.
/*

- Базовый курс по веб-дизайну;
- Верстка сайтов;
- Общий курс по CMS WordPress и продолжение курса по разработке шаблонов;
- Разработка сайтов на PHP.




