/** * Get core path of class * NOTE: unused * * @param string $className class name * @return string full file name of class */ private static function _getCoreLibFilePath($className) { return BizClassLoader::getCoreLibFilePath($className); }
/** * Construct an instance of an object * * @param string $objName object name * @param array $xmlArr xml array * @return object the instance of the object */ protected function constructObject($objName, &$xmlArr = null) { if (!$xmlArr) { $xmlFile = BizSystem::GetXmlFileWithPath($objName); if (!$xmlFile) { $dotPos = strrpos($objName, "."); $package = $dotPos > 0 ? substr($objName, 0, $dotPos) : null; $class = $dotPos > 0 ? substr($objName, $dotPos + 1) : $objName; } else { $xmlArr = BizSystem::getXmlArray($xmlFile); } } if ($xmlArr) { $keys = array_keys($xmlArr); $root = $keys[0]; // add by mr_a_ton , atrubut name must match with object name $dotPos = strrpos($objName, "."); $shortObjectName = $dotPos > 0 ? substr($objName, $dotPos + 1) : $objName; if ($xmlArr[$root]["ATTRIBUTES"]["NAME"] == "") { $xmlArr[$root]["ATTRIBUTES"]["NAME"] = $shortObjectName; } else { if ($shortObjectName != $xmlArr[$root]["ATTRIBUTES"]["NAME"]) { trigger_error("Metadata file parsing error for object {$objName}. Name attribut [" . $xmlArr[$root]["ATTRIBUTES"]["NAME"] . "] not same with object name. Please double check your metadata xml file again.", E_USER_ERROR); } } //$package = $xmlArr[$root]["ATTRIBUTES"]["PACKAGE"]; $class = $xmlArr[$root]["ATTRIBUTES"]["CLASS"]; // if class has package name as prefix, change the package to the prefix $dotPos = strrpos($class, "."); $classPrefix = $dotPos > 0 ? substr($class, 0, $dotPos) : null; $classPackage = $classPrefix ? $classPrefix : null; if ($classPrefix) { $class = substr($class, $dotPos + 1); } // set object package $dotPos = strrpos($objName, "."); $package = $dotPos > 0 ? substr($objName, 0, $dotPos) : null; if (strpos($package, '@') === 0) { $package = substr($package, 1); } if (!$classPackage) { $classPackage = $package; } $xmlArr[$root]["ATTRIBUTES"]["PACKAGE"] = $package; } if ($class == "BizObj") { // convert BizObj to BizDataObj, support <1.2 version $class = "BizDataObj"; } if (!class_exists($class, false)) { $classFile = BizClassLoader::getLibFileWithPath($class, $classPackage); if (!$classFile) { if ($package) { trigger_error("Cannot find the class with name as {$package}.{$class}", E_USER_ERROR); } else { trigger_error("Cannot find the class with name as {$class} of {$objName}", E_USER_ERROR); } exit; } include_once $classFile; } if (class_exists($class, false)) { //if ($objName == "collab.calendar.form.EventListForm") { print_r($xmlArr); exit; } $obj_ref = new $class($xmlArr); if ($obj_ref) { return $obj_ref; } } else { if (function_exists("ioncube_read_file")) { $data = ioncube_read_file($classFile); if (!strpos($data, "ionCube Loader")) { trigger_error("Cannot find the class with name as {$class} in {$classFile}", E_USER_ERROR); } else { } } } return null; }
/** * Get core path of class * * @param string $className class name * @return string full file name of class */ public static function getCoreLibFilePath($className) { return BizClassLoader::getCoreLibFilePath($className); }
/** * Contructor of class * * @param array $xmlArr * @param string $childClassName * @param object $parentObj * @return void */ public function __construct(&$xmlArr, $childClassName, $parentObj = null) { //if (is_array($array)) $this->var = $array; $this->m_prtObj = $parentObj; if (!$xmlArr) { return; } if (isset($xmlArr["ATTRIBUTES"])) { $className = isset($xmlArr["ATTRIBUTES"]['CLASS']) ? $xmlArr["ATTRIBUTES"]['CLASS'] : $childClassName; if ((bool) strpos($className, ".")) { $a_package_name = explode(".", $className); $className = array_pop($a_package_name); //require_once(BizSystem::getLibFileWithPath($className, implode(".", $a_package_name))); $clsLoaded = BizClassLoader::loadMetadataClass($className, implode(".", $a_package_name)); } //if (!$clsLoaded) trigger_error("Cannot find the load class $className", E_USER_ERROR); $obj = new $className($xmlArr, $parentObj); $this->m_var[$obj->m_Name] = $obj; } else { foreach ($xmlArr as $child) { $className = isset($child["ATTRIBUTES"]['CLASS']) ? $child["ATTRIBUTES"]['CLASS'] : $childClassName; /** * If a '.' is found within className we need to require such class * and then get the className after the last dot * ex. shared.dataobjs.FieldName, in this case FieldName is the class, shared/dataobjs the path * * The best solution to this is enable object factory to specify its resulting object constructor parameters */ if ($className) { //bug fixed by jixian for resolve load an empty classname if ((bool) strpos($className, ".")) { $a_package_name = explode(".", $className); $className = array_pop($a_package_name); //require_once(BizSystem::getLibFileWithPath($className, implode(".", $a_package_name))); $clsLoaded = BizClassLoader::loadMetadataClass($className, implode(".", $a_package_name)); } elseif ($parentObj->m_Package) { /* if(is_file(BizSystem::getLibFileWithPath($className, $parentObj->m_Package))){ require_once(BizSystem::getLibFileWithPath($className, $parentObj->m_Package)); }; */ $clsLoaded = BizClassLoader::loadMetadataClass($className, $parentObj->m_Package); } //if (!$clsLoaded) trigger_error("Cannot find the load class $className", E_USER_ERROR); $obj = new $className($child, $parentObj); $this->m_var[$obj->m_Name] = $obj; } } } }
public static function registerClassMap($classMap) { self::$classMap = array_merge(self::$classMap, $classMap); }
/** * Search for the php file required to load the class * * @package openbiz.bin * @param string $className * @return void * */ function __autoload_openbiz($className) { BizClassLoader::autoload($className); }