Fatal error: Call to undefined method DB::quoteIdentifier() in /home/www-master/www/apps/HostSystem/SharedApps/moonlite13.cmf/.stable/Include/classes/BaseObjects/class.BaseExtendedNamedObject.php on line 97
Произошла ошибка! @artel-profi.ru __Shutdown_Processor::_DislpayErrorReport
Ошибка типа [1]: [
Call to undefined method DB::quoteIdentifier()
] в файле [/home/www-master/www/apps/HostSystem/SharedApps/moonlite13.cmf/.stable/Include/classes/BaseObjects/class.BaseExtendedNamedObject.php] в строке [97]

Текущее(реальное) использование памяти [3'470'592] (3'670'016) из [1024M] разрешённых
Участок с ошибкой:
00093:
        //$this->LoadBy('name',$name,'=');
00094:
        $query  = sprintf(
00095:
            "SELECT * FROM %s \n"
00096:
            ."\t WHERE \n"
00097:            ,$this->getDB()->quoteIdentifier($this->tblName)
00098:
            );
00099:
        
00100:
        $query  .=  sprintf("\t\t %s = %s\n"
00101:
            ,$this->getDB()->quoteIdentifier("Name")
00102:
            ,$this->getDB()->quoteString($name)
00103:
        );


Файл целиком:
<?php
/**
 * Основной базовый именованый класс
 * 
 * @todo: переименование $TypeGUID => $ClassName (EntityClassName)
 * @todo: способ перезаписи имени класса, способ фиксации имени класса)
 *
 * @property string                     $Name           Имя объекта
 * @property string                     $TypeGUID       Тип объекта (имя класса или GUID)
 *
 *
 *
 * @package BaseObjects
 * @author  Premier13
 *
 */
class BaseExtendedNamedObject  extends BaseExtendedObject
{
    
/**
     * Свойства-сущности
     * 
     * @var array
     */
    
var $_LinkedEntitiesProperties;
    
    
    
    
/**
     * Конструктор по умолчанию
     *
     */
    
function __construct()
    {
        
parent::__construct();
        
//
        //
        
        //
        // [Задание свойств объекта]
        //
        
$this->RegisterProperty("Name"          ,""                     ,"STRING"               ,""                     ,0  ,0);
        
$this->RegisterProperty("TypeGUID"      ,""                     ,"GUID"                 ,""                     ,0  ,0);
        
//
        // [/Задание свойств объекта]
        //
        
        //
        // [Установка и инициализация простых свойств]
        //
        
$this->SetPropertyValue("TypeGUID",get_class($this));   //{0 <=> unknow;}
        //
        // [/Установка и инициализация простых свойств]
        //
        
    
}
    
/**
     * Деструктор
     *
     */
    
function __destruct()
    {
        if(
$this->___local_debug)
        {
            echo 
sprintf("{%s^%s::%s}",get_class($this),__CLASS__,"__destruct");
        }
        
parent::__destruct();
    }
    
/**
     * Получить имя (путь) файла где декларирован данный класс
     * <b>необходимо переопределять в каждом потомке!</b>
     *
     * @return string
     */
    
static function getDeclarationFileLocation()
    {
        return 
__FILE__;
    }
    
    
/**
     * Загрузка объекта по имени (и GUID родительского объекта)
     *
     * @param unknown_type $name
     * @param unknown_type $parent_guid
     * @return unknown
     */
    
function LoadByName($name='',$parent_guid='')
    {
        if(!
strlen($name))          {$name          =$this->Name;}
        if(!
strlen($parent_guid))   {$parent_guid   =$this->ParentGUID;}
        
        
        
        
//$this->LoadBy('name',$name,'=');
        
$query  sprintf(
            
"SELECT * FROM %s \n"
            
."\t WHERE \n"
            
,$this->getDB()->quoteIdentifier($this->tblName)
            );
        
        
$query  .=  sprintf("\t\t %s = %s\n"
            
,$this->getDB()->quoteIdentifier("Name")
            ,
$this->getDB()->quoteString($name)
        );
        
        if(
mb_strlen($parent_guid))
        {
            
$query  .=  sprintf("\t\t %s %s = %s\n"
                
,"\n\t\t\t AND\n"
                
,$this->getDB()->quoteIdentifier("ParentGUID")
                ,
$this->getDB()->quoteString($parent_guid)
                );
        }
        
$query  .=" ;";
        
//
        
$result $this->Load_FromQueryResult($query);
        
//
        
if(!$this->isLoaded())
        {
            
//die (sprintf("[%s]",$name));
            //die ($query);
        
}
        
//
        
return $result;
    }
    
/**
     * Сохранение объекта
     *
     * @return bolean|array|struct
     */
    
function Save()
    {
        
$result =   parent::Save();
        
//
        
if(is_array($result))
        {
            
$result             =   array();
            
//
            
$result['GUID']     =   $this->GUID;
            
$result['Name']     =   $this->Name;
            
$result['TypeGUID'] =   $this->TypeGUID;
            
//
            
return $result;
        }
        return 
true;
    }
    
/**
     * Печать информации из структуры после процедуры сохранения
     *
     * @param unknown_type $result
     */
    
function PrintInfo_SaveResults($result)
    {
        if(
is_array($result))
        {
            if(
is_callable("Bootstrap_TemplateHelper::renderAlertBox"))
            {
                
//
                
echo Bootstrap_TemplateHelper::renderAlertBox(
                    
sprintf(
                         
"New GUID created:<br />"
                        
."GUID:[<strong>%s</strong>]<br />"
                        
."for object named as [<strong>%s</strong>] with Type: [<strong>%s</strong>]<br />"
                        
,$result['GUID']
                        ,
$result['Name']
                        ,
$result['TypeGUID']
                    )
                    ,
"success"
                    
,true
                
);
                
//
            
}
            else
            {
                echo 
sprintf("New GUID created:<br />");
                echo 
sprintf(
                     
"GUID:[<strong>%s</strong>]<br />"
                    
,$result['GUID']
                );
                echo 
sprintf(
                     
"for object named as [<strong>%s</strong>] with Type: [<strong>%s</strong>]<br />"
                    
,$result['Name']
                    ,
$result['TypeGUID']
                );
            }
            
            
            
            
        }
    }
    
    
    
/**
     * Получить имя реального класса (может не совпадать с текущим)
     *
     * @return string
     */
    
function getRealClass()
    {
        return 
$this->TypeGUID;
    }
    
    
    
    
    
    
    
    
    
    
    
    
/**
     * Очистка внутренних объектов и ссылок как на внутренние,
     *  так и внешние объекты (т.к. в PHP деструктор не вызывается до этого! даже при unset(...)
     * (деструктор вызывается ТОЛЬКО если ссылок на объект нет!)
     *
     * @return boolean|integer
     */
    
function MemoryCleanUp($_clear_dep=true)
    {
        
parent::MemoryCleanUp();
        
//
        
if($_clear_dep)
        {
            if(
is_array($this->_LinkedEntitiesProperties))
            {
                
//
                
global $engine;
                
//
                
foreach($this->_LinkedEntitiesProperties as $key => $value)
                {
                    
$_DO_MemoryCleanUp false// ИСПОЛЬЗУЕТСЯ РЕЕСТР ОБЪЕКТОВ!!!! Перед очисткой проверять есть ли объект там! 
                    
                    
                    
                    
                    // TODO: Вести свой учёт ссылок!!!
                    
if($_DO_MemoryCleanUp AND is_a($this->_LinkedEntitiesProperties[$key],"BaseExtendedObject"))
                    {
                        
$engine->getRegistry()->UnRegisterObject($this->_LinkedEntitiesProperties[$key]->GUID);
                        
//
                        
if($this->_LinkedEntitiesProperties[$key])
                        {
                            
$this->_LinkedEntitiesProperties[$key]->MemoryCleanUp();
                        }
                        
//
                    
}
                    
//
                    
$this->_LinkedEntitiesProperties[$key]  =   NULL;
                }
                
//
            
}
            
//
        
}
        
//unset($this->_properties);
        //
        
return true;
    }
    
    
    
    
/**
     * Сбросить локальный кеш линкованного объекта-свойства
     * @param string $PropertyName
     * @return BaseExtendedNamedObject
     */
    
function &resetLinkedEntityObjectPropertyCache($PropertyName)
    {
        
$this->_LinkedEntitiesProperties[$PropertyName] = NULL;
        unset(
$this->_LinkedEntitiesProperties[$PropertyName]);
        
//
        
return $this;
    }
    
    
    
/**
     * Получить ссылку на линкованный объект-свойство
     * 
     *      <b>PropertyName</b>_GUID
     *      <b>PropertyName</b>_POUUID
     *      <b>PropertyName</b>_ClassName
     * 
     * @param string    $PropertyName
     * @param boolean   $local_object_cache
     * @param string    $defaultClassName
     * @return BaseExtendedObject
     */
    
function &getLinkedEntityObjectProperty($PropertyName,$local_object_cache=false ,$defaultClassName=NULL)
    {
        global 
$engine;
        
//
        
$result NULL;
        
//
        //
        
if(
            
$local_object_cache
            
AND
            isset(
$this->_LinkedEntitiesProperties[$PropertyName])
            AND
            
$this->_LinkedEntitiesProperties[$PropertyName] !== NULL
        
)
        {
            return 
$this->_LinkedEntitiesProperties[$PropertyName];
        }
        
//
        
$_ClassName $this->{$PropertyName."_ClassName"};
        
//
        
if(!mb_strlen($_ClassName,Engine::$DefaultCharset))
        {
            
$_ClassName $defaultClassName;
        }
        
//
        //if($PropertyName == "Depository")        {            die(sprintf("[%s] [%s]",$_ClassName,$this->{$PropertyName."_GUID"}));        }
        //
        
        
        
        
        
        
        
if($_ClassName)
        {
            if(
$this->{$PropertyName."_GUID"} != "")
            {
                
$result =   $engine->getRegistry()->getObject(
                     
$this->{$PropertyName."_GUID"}
                    ,
$_ClassName
                    
,60
                
);
            }
            else
            {
                if(
$local_object_cache// создание объектов пока только при вкл. кешировании
                
{
                    
//$result = new $_ClassName ();
                    //
                    //$this->setLinkedEntityObjectProperty($PropertyName, $result);
                    //
                    // 
                
}
            }
        }
        else
        {
            
// throw new Exception();
        
}
        
//
        
if($local_object_cache AND $result !== NULL)
        {
            
$this->_LinkedEntitiesProperties[$PropertyName] = $result;
        }
        
//
        
return $result;
    }
    
    
    
    
    
/**
     * Установить значение  линкованного объекта-свойство
     * 
     * @todo - переписать вызывающие функции, а конкренее - передачу параметра $DuplicatedProperties
     * 
     * @param string                    $PropertyName
     * @param BaseExtendedNamedObject   $PropertyValue
     * @param string                    $BaseClassName
     * @param array                     $DuplicatedProperties
     * @throws Exception
     * @return BaseExtendedNamedObject
     */
    
function &setLinkedEntityObjectProperty($PropertyName,$PropertyValue,$BaseClassName=NULL,$DuplicatedProperties=NULL)
    {
        
//
        
if($BaseClassName === NULL)
        {
            if(isset(
$this->_LinkedEntitiesMetadata[$PropertyName]["BaseClassName"]))
            {
                
$BaseClassName $this->_LinkedEntitiesMetadata[$PropertyName]["BaseClassName"];
            }
            else
            {
                
$BaseClassName "BaseExtendedNamedObject";
            }
        }
        
//
        
if(isset($this->_LinkedEntitiesMetadata[$PropertyName]["DuplicatedProperties"]))
        {
            
$DuplicatedProperties $this->_LinkedEntitiesMetadata[$PropertyName]["DuplicatedProperties"];
        }
        
//
        
        //
        
if(is_object($PropertyValue) AND is_a($PropertyValue$BaseClassName))
        {
            
//
            
$this->{$PropertyName."_GUID"}                        = $PropertyValue->GUID;
            
$this->{$PropertyName."_POUUID"}                      = $PropertyValue->POUUID;
            
//
            
$this->{$PropertyName."_ClassName"}                   = $PropertyValue->getRealClass();
            
//
            
foreach($DuplicatedProperties as $key => $value)
            {
                
$this->{$PropertyName."_".$value}                 = $PropertyValue->{$value};
            }
            
//
        
}
        elseif(
$PropertyValue == NULL)
        {
            
//
            
$this->{$PropertyName."_GUID"}                        = NULL;
            
$this->{$PropertyName."_POUUID"}                      = NULL;
            
//
            
$this->{$PropertyName."_ClassName"}                   = NULL;
            
//
            //System::PrintArray($DuplicatedProperties);
            //
            
foreach($DuplicatedProperties as $key => $value)
            {
                
$this->{$PropertyName."_".$value}                 = NULL;
            }
            
//
        
}
        else
        {
            throw new 
Exception ("Некорректное значение свойства [{$PropertyName}]!");
        }
        
        
//
        
return $this;
    }
    
};
?>

[Debug::Bugtrace] - не определена!

#0  __Shutdown_Processor->_DislpayErrorReport(Array ([type] => 1,[message] => Call to undefined method DB::quoteIdentifier(),[file] => /home/www-master/www/apps/HostSystem/SharedApps/moonlite13.cmf/.stable/Include/classes/BaseObjects/class.BaseExtendedNamedObject.php,[line] => 97), html, 1) called at [/home/www-master/www/vhosts/htdocs/www.artel-profi.ru/.preload/classes/class.__Shutdown_Processor.php:252]
#1  __Shutdown_Processor->Shutdown(int)

Информация о данных текущего запроса


SERVER

Array
(
    [UNIQUE_ID] => WQUcwrI-LJAAAHEBUIsAAAA6
    [CMF_ML13_MAIN_URL] => http://www.artel-profi.ru/
    [ml13_PathTo_HostSystem] => /home/www-master/www/apps/HostSystem
    [ml13_PathTo_SharedApps] => /home/www-master/www/apps/HostSystem/SharedApps
    [ml13_SystemFilesLocationPath] => /home/www-master/www/apps/HostSystem/SharedApps/moonlite13.cmf/.stable
    [CMF_ML13_SharedCoreMode] => 1
    [HTTP_HOST] => artel-profi.ru
    [HTTP_ACCEPT_ENCODING] => x-gzip, gzip, deflate
    [HTTP_USER_AGENT] => CCBot/2.0 (http://commoncrawl.org/faq/)
    [HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    [PATH] => /usr/local/bin:/usr/bin:/bin
    [SERVER_SIGNATURE] => 
    [SERVER_SOFTWARE] => Apache
    [SERVER_NAME] => artel-profi.ru
    [SERVER_ADDR] => 138.201.177.165
    [SERVER_PORT] => 80
    [REMOTE_ADDR] => 54.224.225.228
    [DOCUMENT_ROOT] => /home/www-master/www/vhosts/htdocs/www.artel-profi.ru
    [SERVER_ADMIN] => [no address given]
    [SCRIPT_FILENAME] => /home/www-master/www/vhosts/htdocs/www.artel-profi.ru/index.php
    [REMOTE_PORT] => 39119
    [GATEWAY_INTERFACE] => CGI/1.1
    [SERVER_PROTOCOL] => HTTP/1.0
    [REQUEST_METHOD] => GET
    [QUERY_STRING] => 
    [REQUEST_URI] => /
    [SCRIPT_NAME] => /index.php
    [PHP_SELF] => /index.php
    [REQUEST_TIME] => 1493507266
    [argv] => Array
        (
        )

    [argc] => 0
)

GET

Array
(
)

POST

Array
(
)

FILES

Array
(
)

COOKIE

Array
(
)