| [ Index ] |
PHP Cross Reference of Joomla 1.5.25 |
[Summary view] [Print] [Text view]
1 <?php 2 /** 3 * @version $Id: loader.php 14401 2010-01-26 14:10:00Z louis $ 4 * @package Joomla.Framework 5 * @copyright Copyright (C) 2005 - 2010 Open Source Matters. All rights reserved. 6 * @license GNU/GPL, see LICENSE.php 7 * Joomla! is free software. This version may have been modified pursuant 8 * to the GNU General Public License, and as distributed it includes or 9 * is derivative of works licensed under the GNU General Public License or 10 * other free or open source software licenses. 11 * See COPYRIGHT.php for copyright notices and details. 12 */ 13 14 if(!defined('DS')) { 15 define( 'DS', DIRECTORY_SEPARATOR ); 16 } 17 18 /** 19 * @package Joomla.Framework 20 */ 21 class JLoader 22 { 23 /** 24 * Loads a class from specified directories. 25 * 26 * @param string $name The class name to look for ( dot notation ). 27 * @param string $base Search this directory for the class. 28 * @param string $key String used as a prefix to denote the full path of the file ( dot notation ). 29 * @return void 30 * @since 1.5 31 */ 32 function import( $filePath, $base = null, $key = 'libraries.' ) 33 { 34 static $paths; 35 36 if (!isset($paths)) { 37 $paths = array(); 38 } 39 40 $keyPath = $key ? $key . $filePath : $filePath; 41 42 if (!isset($paths[$keyPath])) 43 { 44 if ( ! $base ) { 45 $base = dirname( __FILE__ ); 46 } 47 48 $parts = explode( '.', $filePath ); 49 50 $classname = array_pop( $parts ); 51 switch($classname) 52 { 53 case 'helper' : 54 $classname = ucfirst(array_pop( $parts )).ucfirst($classname); 55 break; 56 57 default : 58 $classname = ucfirst($classname); 59 break; 60 } 61 62 $path = str_replace( '.', DS, $filePath ); 63 64 if (strpos($filePath, 'joomla') === 0) 65 { 66 /* 67 * If we are loading a joomla class prepend the classname with a 68 * capital J. 69 */ 70 $classname = 'J'.$classname; 71 $classes = JLoader::register($classname, $base.DS.$path.'.php'); 72 $rs = isset($classes[strtolower($classname)]); 73 } 74 else 75 { 76 /* 77 * If it is not in the joomla namespace then we have no idea if 78 * it uses our pattern for class names/files so just include. 79 */ 80 $rs = include($base.DS.$path.'.php'); 81 } 82 83 $paths[$keyPath] = $rs; 84 } 85 86 return $paths[$keyPath]; 87 } 88 89 /** 90 * Add a class to autoload 91 * 92 * @param string $classname The class name 93 * @param string $file Full path to the file that holds the class 94 * @return array|boolean Array of classes 95 * @since 1.5 96 */ 97 function & register ($class = null, $file = null) 98 { 99 static $classes; 100 101 if(!isset($classes)) { 102 $classes = array(); 103 } 104 105 if($class && is_file($file)) 106 { 107 // Force to lower case. 108 $class = strtolower($class); 109 $classes[$class] = $file; 110 111 // In php4 we load the class immediately. 112 if((version_compare( phpversion(), '5.0' ) < 0)) { 113 JLoader::load($class); 114 } 115 116 } 117 118 return $classes; 119 } 120 121 122 /** 123 * Load the file for a class 124 * 125 * @access public 126 * @param string $class The class that will be loaded 127 * @return boolean True on success 128 * @since 1.5 129 */ 130 function load( $class ) 131 { 132 $class = strtolower($class); //force to lower case 133 134 if (class_exists($class)) { 135 return; 136 } 137 138 $classes = JLoader::register(); 139 if(array_key_exists( strtolower($class), $classes)) { 140 include($classes[$class]); 141 return true; 142 } 143 return false; 144 } 145 } 146 147 148 /** 149 * When calling a class that hasn't been defined, __autoload will attempt to 150 * include the correct file for that class. 151 * 152 * This function get's called by PHP. Never call this function yourself. 153 * 154 * @param string $class 155 * @access public 156 * @return boolean 157 * @since 1.5 158 */ 159 function __autoload($class) 160 { 161 if(JLoader::load($class)) { 162 return true; 163 } 164 return false; 165 } 166 167 /** 168 * Global application exit. 169 * 170 * This function provides a single exit point for the framework. 171 * 172 * @param mixed Exit code or string. Defaults to zero. 173 */ 174 function jexit($message = 0) { 175 exit($message); 176 } 177 178 /** 179 * Intelligent file importer 180 * 181 * @access public 182 * @param string $path A dot syntax path 183 * @since 1.5 184 */ 185 function jimport( $path ) { 186 return JLoader::import($path); 187 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| Generated: Mon Nov 14 16:47:20 2011 | Cross-referenced by PHPXref 0.7.1 |