So here is one very simple php class. In past it has proven to be very useful in cases where you need to load multiple javascript files or on large project with a lot of modules (especially if those modules are developed by different persons).
It will help you to avoid double js file loads, it will also help you keep only one copy of each js file on server.
Enjoy:
/**
* @author Vladimir Cvetic @ Ferdinand Development
* @email vladimir@ferdinand.rs
* @phone +381 60 5000240
*
* @version 1.0.0
*
* Example 1:
* $jloader = new JLoader();
* $jloader->load('prototype', '1.6.0.2');
* $jloader->printjs();
* Output:
*
*
* Example 2:
* $jloader = new JLoader();
* $jloader->load('prototype', '1.6.0.2');
* $jloader->load('prototype', false, '/javascript/my_prototype.js');
* $jloader->printjs();
* Output:
*
*
* Example 3:
* $jloader = new JLoader();
* $jloader->repository = "/javascript/";
* $jloader->load('prototype', '1.6.0.2');
* $jloader->printjs();
* Output:
*
*
* Example 4:
* $jloader = new JLoader();
* $jloader->repository = "/javascript/";
* $jloader->load('prototype', '1.6.0.2');
* $jloader->load('mootools', '1.2');
* $jloader->load('custom_script', '1.0', '/scripts/custom_script.js', array('scriptaculous','jquery'));
* $jloader->printjs();
* Output:
*
*
*
*
*
*/
class JLoader{
public $loaded = array();
public $repository = "/common/jloader";
public $home_path = "/www/mysite";
function JLoader()
{
return true;
}
/**
*
* @since 1.0.0
*
* @param string $handler Valid external file handler name.
* @param int|bool $ver Optional. Script version number. Default is false.
* @param array|bool $depends Array of valid handler dependencies.
* @return bool
*/
function load($handler, $ver = false, $src = false, $depends=false)
{
global $conf;
if ($src!=false)
{
$src = $src;
}
elseif ($ver!=false)
{
$src = $this->repository."/$handler/$handler.js?ver=$ver";
}
else
{
$src = $this->repository."/$handler/$handler.js";
}
if ($src!=false)
{
if (!file_exists($src))
{
trigger_error("ExtLoader::load($handler, $ver, $src) sad file ".$src." doesn't exist.");
return false;
}
}
else
{
if (!file_exists($this->home_path.$src))
{
trigger_error("ExtLoader::load($handler, $ver, $src) sad file ".$this->home_path.$src." doesn't exist.");
return false;
}
}
if ($depends!=false)
{
foreach($depends as $script)
{
$this->load($script);
}
}
$this->loaded[$handler] = '';
return true;
}
/**
* Print loaded Javascript files.
*
* @since 1.0.0
*
* @return unknown
*/
function printjs()
{
foreach($this->loaded as $script)
{
echo $script."\n";
}
}
}