1<?php 2 3//this script may only be included - so its better to die if called directly. 4if (strpos($_SERVER["SCRIPT_NAME"],basename(__FILE__)) !== false) { 5 header("location: index.php"); 6 exit; 7} 8 9 10/* 11This file is part of J4PHP - Ensembles de propriétés et méthodes permettant le developpment rapide d'application web modulaire 12Copyright (c) 2002-2004 @PICNet 13 14This program is free software; you can redistribute it and/or 15modify it under the terms of the GNU LESSER GENERAL PUBLIC LICENSE 16as published by the Free Software Foundation. 17 18This program is distributed in the hope that it will be useful, 19but WITHOUT ANY WARRANTY; without even the implied warranty of 20MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 21GNU LESSER GENERAL PUBLIC LICENSE for more details. 22 23You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE 24along with this program; if not, write to the Free Software 25Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 26*/ 27 28APIClass::import("org.apicnet.xml.Xml"); 29 30/** 31* Classe principal d'APICFrameWorks ; Elle premet d'importer n'import quelle autre class 32* Ce code est tirer du projet jphp lib qui est malheureusement clos. 33* 34* Cette class ne s'instancie pas elle s'utilise de maniere static de cette facon : 35* 36* 1. require_once("conf/config.inc.php"); 37* 2. $secure = APIC::loadClass(chemin de la class); 38* 3. $secure->methode(); 39* ou 40* 1. require_once("conf/config.inc.php"); 41* 2. APIC::import(chemin de la class); 42* 43* 44* @update $Date: 2005-05-18 11:01:22 $ 45* @version 1.0 46* @author diogène MOULRON <logiciel@apicnet.net> 47* @package core 48*/ 49class APIC extends APICObject { 50 51 /** 52 * Méthode static d'importation de class; 53 * 54 * @param string $class nom de la class a importer ; espace de nommage identique a celle utilisée en java (sous la forme org.apicnet.maclass). 55 * @param string $module nom du module ou trouver la class a charger 56 * @access public 57 * @since 1.1 58 * @update 06/06/2002 59 */ 60 function import($class, $module=NULL){ 61 $class = preg_split('/,/', preg_replace('/\s{1,}/', '', $class)); 62 $len = count($class); 63 for ($i =0; $i<$len; $i++){ 64 APIClass::import($class[$i], $module); 65 } 66 } 67 68 69 /** 70 * APIC::importData() 71 * 72 * @param $class 73 * @param unknown $module 74 * @return 75 **/ 76 function importData($class, $module=NULL){ 77 $packagename = APIClassRegistry::extractPackageName($class); 78 $path = APIClassRegistry::convertToPath($class, $module); 79 if (APIClassRegistry::isClass($class)){// extracting class name 80 $classname = APIClassRegistry::extractClassName($class); 81 // loadclass 82 $path .= '.php'; 83 if (isset($path) && is_file($path)){// register 84 APIClassRegistry::register($packagename, $classname); 85 include($path); 86 } 87 } 88 } 89 90 /** 91 * 92 * 93 * @access private 94 * @since 1.1 95 * @update 06/06/2002 96 */ 97 function _debug(){ 98 APIClassRegistry::_debug(); 99 } // end func 100 101 /** 102 * 103 * 104 * @access private 105 * @since 1.1 106 * @update 06/06/2002 107 */ 108 function isRegistered($class){ 109 return APIClassRegistry::isRegistered($class); 110 } // end func 111 112 /** 113 * 114 * Méthode static d'instanciation de class / object; 115 * 116 * 117 * 118 * @param string $class nom de class à charger et à instancier ; espace de nommage identique a celle utilisée en java. 119 * @param array $parameters parametres de la class s'il y en a. 120 * @param boolean $new_class indique si, lorsque la class est déjà dans le registre, on doit en instancier une nouvelle. 121 * @return object un pointeur sur la class instancié 122 * @access public 123 * @since 1.1 124 * @update 06/06/2002 125 */ 126 function &loadClass($class, $parameters=NULL, $new_class=FALSE, $module=NULL){ 127 128 APIC::import("org.apicnet.io.File"); 129 130 if ($new_class){ 131 // echo(" OK <br>"); 132 $classname = APIClassRegistry::extractClassName($class); 133 if (!APIClassRegistry::isClass($class) || !APIClassRegistry::isRegistered($class)){ 134 $path = new File(APIClassRegistry::convertToPath($class, $module).'.php'); 135 // echo($path->getFilePath()."<br>"); 136 if ($path->exists()){ 137 APIC::import($class, $module); 138 } else{ 139 die("Class ".$class." cannot be found"); 140 } 141 } 142 143 $params = ''; 144 if ($parameters!=NULL && is_array($parameters)){ 145 $plen = count($parameters); 146 if ($plen>0){ 147 for ($i=0; $i < $plen; $i++){ 148 $params .= '$parameters['.$i.']'; 149 if ($i<($plen-1)){ 150 $params .= ', '; 151 } 152 } 153 } 154 } 155 $obj = NULL; 156 eval('$obj = new '.$classname.'('.$params.');'); 157 APIClassRegistry::registerClass($class, $obj); 158 return $obj; 159 160 } else { // fin du if New_class 161 // APIC::_debug(); 162 if (APIClassRegistry::isRegistered($class)) { 163 // echo($class." loaded ..."); 164 return APIClassRegistry::loadClass($class, $parameters); 165 } else { 166 if (!APIClassRegistry::isClass($class) || !APIClassRegistry::isRegistered($class)){ 167 $path = new File(APIClassRegistry::convertToPath($class, $module).'.php'); 168 // echo($path->getFilePath()."<br>"); 169 if ($path->exists()){ 170 // echo($class." instanciate ..."); 171 APIC::import($class, $module); 172 return APIC::loadClass($class, $parameters, TRUE, $module); 173 } else { 174 die("Class ".$class." cannot be found"); 175 } 176 } 177 } 178 } 179 } // end func 180 181 /** 182 * 183 * 184 * 185 * @access private 186 * @since 1.1 187 * @update 06/06/2002 188 */ 189 function _display_core_package(){ 190 print("<font style='font-family: Courier New; font-size: 9pt; color:#ff3300'>"); 191 print("<ol><li><strong>core</strong>"); 192 print("<ol>"); 193 APIC::listDir(JPHP_CORE_DIR); 194 print("</ol>"); 195 print("</li></ol>"); 196 print("</font>"); 197 } // end func 198 199 /** 200 * 201 * 202 * 203 * @access private 204 * @since 1.1 205 * @update 06/06/2002 206 */ 207 function _display_packages(){ 208 print("<font style='font-family: Courier New; font-size: 9pt; color:#006600'>"); 209 APIC::listDir(JPHP_LIBRARY_PATH); 210 print("</font>"); 211 } // end func 212 213 /** 214 * 215 * 216 * 217 * @param string $path chemin du répertoire à lister. 218 * @access public 219 * @since 1.1 220 * @update 06/06/2002 221 */ 222 function listDir($path){ 223 if (file_exists($path) && is_dir($path)){ 224 print("<ol>"); 225 $handle=opendir($path); 226 while ($file = readdir($handle)) { 227 if ($file!='.' && $file!='..'){ 228 $fullpath = $path . '/' . $file; 229 if (is_dir($fullpath)){ 230 print("<li><strong>".$file."</strong>"); 231 print("<ol>"); 232 APIC::listDir($fullpath); 233 print("</ol>"); 234 } else if (preg_match('/(\.php)$/i', $file)>0){ 235 print("<li>".str_replace('.php','',$file)."</li>"); 236 } 237 } 238 } 239 print("</ol>"); 240 } else { 241 print("<li>classes library directory cannot be found</li>"); 242 } 243 } // end func 244}// end class 245