+1
`a<?php
/**
•
@version $Id: loader.php 14401 2010-01-26 14:10:00Z louis $
•
@package Joomla. Framework
•
@copyright Copyright (C) 2005 - 2010 Open Source Matters. All rights reserved.
•
@license GNU/GPL, see LICENSE.php
•
Joomla! is free software. This version may have been modified pursuant
•
to the GNU General Public License, and as distributed it includes or
•
is derivative of works licensed under the GNU General Public License or
•
other free or open source software licenses.
•
See COPYRIGHT.php for copyright notices and details.
•
/
if(!defined('DS')) {
define( 'DS', DIRECTORY_SEPARATOR );
}
/**
* @package Joomla. Framework
*/
class JLoader
{
/**
* Loads a class from specified directories.
*
* @param string $name The class name to look for ( dot notation ).
* @param string $base Search this directory for the class.
* @param string $key String used as a prefix to denote the full path of the file ( dot notation ).
* @return void
* @since 1.5
*/
function import( $filePath, $base = null, $key = 'libraries.' )
{
static $paths;
if (!isset($paths)) {
$paths = array();
}
$keyPath = $key ? $key . $filePath : $filePath;
if (!isset($paths[$keyPath]))
{
if ( ! $base ) {
$base = dirname( __FILE__ );
}
$parts = explode( '.', $filePath );
$classname = array_pop( $parts );
switch($classname)
{
case 'helper' :
$classname = ucfirst(array_pop( $parts )).ucfirst($classname);
break;
default :
$classname = ucfirst($classname);
break;
}
$path = str_replace( '.', DS, $filePath );
if (strpos($filePath, 'joomla') === 0)
{
/*
* If we are loading a joomla class prepend the classname with a
* capital J.
*/
$classname = 'J'.$classname;
$classes = JLoader::register($classname, $base.DS.$path.'.php');
$rs = isset($classes[strtolower($classname)]);
}
else
{
/*
* If it is not in the joomla namespace then we have no idea if
* it uses our pattern for class names/files so just include.
*/
$rs = include($base.DS.$path.'.php');
}
$paths[$keyPath] = $rs;
}
return $paths[$keyPath];
}
/**
* Add a class to autoload
*
* @param string $classname The class name
* @param string $file Full path to the file that holds the class
* @return array|boolean Array of classes
* @since 1.5
*/
function & register ($class = null, $file = null)
{
static $classes;
if(!isset($classes)) {
$classes = array();
}
if($class && is_file($file))
{
// Force to lower case.
$class = strtolower($class);
$classes[$class] = $file;
// In php4 we load the class immediately.
if((version_compare( phpversion(), '5.0' ) < 0)) {
JLoader::load($class);
}
}
return $classes;
}
/**
* Load the file for a class
*
* @access public
* @param string $class The class that will be loaded
* @return boolean True on success
* @since 1.5
*/
function load( $class )
{
$class = strtolower($class); //force to lower case
if (class_exists($class)) {
return;
}
$classes = JLoader::register();
if(array_key_exists( strtolower($class), $classes)) {
include($classes[$class]);
return true;
}
return false;
}
}
/**
* When calling a class that hasn't been defined, __autoload will attempt to
* include the correct file for that class.
*
* This function get's called by PHP. Never call this function yourself.
*
* @param string $class
* @access public
* @return boolean
* @since 1.5
*/
function __autoload($class)
{
if(JLoader::load($class)) {
return true;
}
return false;
}
/**
* Global application exit.
*
* This function provides a single exit point for the framework.
*
* @param mixed Exit code or string. Defaults to zero.
*/
function jexit($message = 0) {
exit($message);
}
/**
* Intelligent file importer
*
* @access public
* @param string $path A dot syntax path
* @since 1.5
*/
function jimport( $path ) {
return JLoader::import($path);
}a
`
Tümünü Göster