Internal: keep track of class declaration source files

SVN:trunk[1217]
This commit is contained in:
Romain Quetiez
2011-04-19 12:22:32 +00:00
parent 6e685feb9f
commit ab3fd7f1b4

View File

@@ -129,9 +129,17 @@ abstract class MetaModel
//
///////////////////////////////////////////////////////////////////////////
private static $m_bTraceSourceFiles = false;
private static $m_aClassToFile = array();
public static function GetClassFiles()
{
return self::$m_aClassToFile;
}
// Purpose: workaround the following limitation = PHP5 does not allow to know the class (derived from the current one)
// from which a static function is called (__CLASS__ and self are interpreted during parsing)
private static function GetCallersPHPClass($sExpectedFunctionName = null)
private static function GetCallersPHPClass($sExpectedFunctionName = null, $bRecordSourceFile = false)
{
//var_dump(debug_backtrace());
$aBacktrace = debug_backtrace();
@@ -142,6 +150,10 @@ abstract class MetaModel
{
assert('$aBacktrace[2]["function"] == $sExpectedFunctionName');
}
if ($bRecordSourceFile)
{
self::$m_aClassToFile[$aBacktrace[2]["class"]] = $aBacktrace[1]["file"];
}
return $aBacktrace[2]["class"];
}
@@ -1333,7 +1345,7 @@ abstract class MetaModel
"db_finalclass_field" => "database field wich is the reference to the actual class of the object, considering that this will be a compound class",
);
$sClass = self::GetCallersPHPClass("Init");
$sClass = self::GetCallersPHPClass("Init", self::$m_bTraceSourceFiles);
foreach($aMandatParams as $sParamName=>$sParamDesc)
{
@@ -3559,8 +3571,10 @@ abstract class MetaModel
}
}
public static function Startup($sConfigFile, $bModelOnly = false, $bAllowCache = true)
public static function Startup($sConfigFile, $bModelOnly = false, $bAllowCache = true, $bTraceSourceFiles = false)
{
self::$m_bTraceSourceFiles = $bTraceSourceFiles;
self::LoadConfig($sConfigFile, $bAllowCache);
if ($bModelOnly) return;