Bitrix-D7  20.5.0
Класс Application

Base class for any application. Подробнее...

Граф наследования:Application:
HttpApplication Application

Открытые члены

 initializeBasicKernel ()
 Does minimally possible kernel initialization. Подробнее...
 
 initializeExtendedKernel (array $params)
 Does full kernel initialization. Подробнее...
 
 getRouter ()
 
 setRouter (Router $router)
 
 getCurrentRoute ()
 
 setCurrentRoute (Route $currentRoute)
 
 start ()
 Starts request execution. Подробнее...
 
 run ()
 Runs controller and its action and sends response to the output. Подробнее...
 
 end ($status=0, Response $response=null)
 Ends work of application. Подробнее...
 
 terminate ($status=0)
 Terminates application by invoking exit(). Подробнее...
 
 createExceptionHandlerLog ()
 
 createExceptionHandlerOutput ()
 
 getExceptionHandler ()
 
 getConnectionPool ()
 Returns database connections pool object. Подробнее...
 
 getContext ()
 Returns context of the current request. Подробнее...
 
 setContext (Context $context)
 Modifies context of the current request. Подробнее...
 
 getCache ()
 Returns new instance of the Cache object. Подробнее...
 
 getManagedCache ()
 Returns manager of the managed cache. Подробнее...
 
 getTaggedCache ()
 Returns manager of the managed cache. Подробнее...
 
 getSessionLocalStorageManager ()
 
 getLocalSession ($name)
 
 getKernelSession ()
 
 getSession ()
 
 getCompositeSessionManager ()
 
 addBackgroundJob (callable $job, array $args=[], $priority=self::JOB_PRIORITY_NORMAL)
 Adds a job to do after the response was sent. Подробнее...
 
 isExtendedKernelInitialized ()
 

Открытые статические члены

static getInstance ()
 Returns current instance of the Application. Подробнее...
 
static getConnection ($name="")
 Static method returns database connection for the specified name. Подробнее...
 
static getUserTypeManager ()
 Returns UF manager. Подробнее...
 
static isUtfMode ()
 Returns true id server is in utf-8 mode. Подробнее...
 
static getDocumentRoot ()
 Returns server document root. Подробнее...
 
static getPersonalRoot ()
 Returns personal root directory (relative to document root) Подробнее...
 
static resetAccelerator ()
 Resets accelerator if any. Подробнее...
 

Поля данных

const JOB_PRIORITY_NORMAL = 100
 
const JOB_PRIORITY_LOW = 50
 

Защищенные члены

 __construct ()
 Creates new application instance. Подробнее...
 
 initializeContext (array $params)
 Initializes context of the current request. Подробнее...
 
 handleResponseBeforeSend (Response $response)
 
 initializeExceptionHandler ()
 Exception handler can be initialized through the Config\Configuration (.settings.php file). Подробнее...
 
 createDatabaseConnection ()
 Creates database connection pool. Подробнее...
 
 initializeCache ()
 
 runBackgroundJobs ()
 

Защищенные данные

 $isBasicKernelInitialized = false
 
 $isExtendedKernelInitialized = false
 
 $context
 
 $router
 
 $currentRoute
 
 $connectionPool
 
 $managedCache
 
 $taggedCache
 
 $session
 
 $kernelSession
 
 $compositeSessionManager
 
 $sessionLocalStorageManager
 
 $backgroundJobs
 

Статические защищенные данные

static $instance = null
 

Подробное описание

Base class for any application.

См. определение в файле main/lib/application.php строка 25

Конструктор(ы)

◆ __construct()

__construct ( )
protected

Creates new application instance.

Переопределяется в HttpApplication.

См. определение в файле main/lib/application.php строка 86

87  {
88  $this->backgroundJobs = new \SplPriorityQueue();
89  }

Методы

◆ addBackgroundJob()

addBackgroundJob ( callable  $job,
array  $args = [],
  $priority = self::JOB_PRIORITY_NORMAL 
)

Adds a job to do after the response was sent.

Аргументы
callable$job
array$args
int$priority
Возвращает
$this

См. определение в файле main/lib/application.php строка 654

655  {
656  $this->backgroundJobs->insert([$job, $args], $priority);
657 
658  return $this;
659  }

◆ createDatabaseConnection()

createDatabaseConnection ( )
protected

Creates database connection pool.

См. определение в файле main/lib/application.php строка 413

414  {
415  $this->connectionPool = new Data\ConnectionPool();
416  }

◆ createExceptionHandlerLog()

createExceptionHandlerLog ( )

См. определение в файле main/lib/application.php строка 365

366  {
367  $exceptionHandling = Config\Configuration::getValue("exception_handling");
368  if ($exceptionHandling === null || !is_array($exceptionHandling) || !isset($exceptionHandling["log"]) || !is_array($exceptionHandling["log"]))
369  return null;
370 
371  $options = $exceptionHandling["log"];
372 
373  $log = null;
374 
375  if (isset($options["class_name"]) && !empty($options["class_name"]))
376  {
377  if (isset($options["extension"]) && !empty($options["extension"]) && !extension_loaded($options["extension"]))
378  return null;
379 
380  if (isset($options["required_file"]) && !empty($options["required_file"]) && ($requiredFile = Loader::getLocal($options["required_file"])) !== false)
381  require_once($requiredFile);
382 
383  $className = $options["class_name"];
384  if (!class_exists($className))
385  return null;
386 
387  $log = new $className();
388  }
389  elseif (isset($options["settings"]) && is_array($options["settings"]))
390  {
391  $log = new Diag\FileExceptionHandlerLog();
392  }
393  else
394  {
395  return null;
396  }
397 
398  $log->initialize(
399  isset($options["settings"]) && is_array($options["settings"]) ? $options["settings"] : array()
400  );
401 
402  return $log;
403  }
static getLocal($path, $root=null)
Checks if file exists in /local or /bitrix directories.

◆ createExceptionHandlerOutput()

createExceptionHandlerOutput ( )

Переопределяется в HttpApplication.

См. определение в файле main/lib/application.php строка 405

406  {
407  return new Diag\ExceptionHandlerOutput();
408  }

◆ end()

end (   $status = 0,
Response  $response = null 
)

Ends work of application.

Sends response and then terminates execution. If there is no $response the method will use Context::$response.

Аргументы
int$status
Response | null$response
Возвращает
void

См. определение в файле main/lib/application.php строка 236

237  {
238  if($response === null)
239  {
240  //use default response
241  $response = $this->context->getResponse();
242 
243  //it's possible to have open buffers
244  $content = '';
245  while(($c = ob_get_clean()) !== false)
246  {
247  $content .= $c;
248  }
249 
250  if($content <> '')
251  {
252  $response->appendContent($content);
253  }
254  }
255 
256  $this->handleResponseBeforeSend($response);
257  //this is the last point of output - all output below will be ignored
258  $response->send();
259 
260  $this->terminate($status);
261  }
handleResponseBeforeSend(Response $response)
terminate($status=0)
Terminates application by invoking exit().

◆ getCache()

getCache ( )

Returns new instance of the Cache object.

Возвращает
Data\Cache

См. определение в файле main/lib/application.php строка 497

498  {
500  }
static createInstance($params=[])

◆ getCompositeSessionManager()

getCompositeSessionManager ( )
final

См. определение в файле main/lib/application.php строка 552

552  : CompositeSessionManager
553  {
555  }

◆ getConnection()

static getConnection (   $name = "")
static

Static method returns database connection for the specified name.

If name is empty - default connection is returned.

Аргументы
string$nameName of database connection. If empty - default connection.
Возвращает
Data\Connection|DB\Connection

См. определение в файле main/lib/application.php строка 486

487  {
488  $pool = Application::getInstance()->getConnectionPool();
489  return $pool->getConnection($name);
490  }
static getInstance()
Returns current instance of the Application.

◆ getConnectionPool()

getConnectionPool ( )

Returns database connections pool object.

Возвращает
Data\ConnectionPool

См. определение в файле main/lib/application.php строка 453

454  {
455  return $this->connectionPool;
456  }

◆ getContext()

getContext ( )

Returns context of the current request.

Возвращает
Context

См. определение в файле main/lib/application.php строка 463

464  {
465  return $this->context;
466  }

◆ getCurrentRoute()

getCurrentRoute ( )
Возвращает
Route

См. определение в файле main/lib/application.php строка 190

190  : Route
191  {
192  return $this->currentRoute;
193  }

◆ getDocumentRoot()

static getDocumentRoot ( )
static

Returns server document root.

Возвращает
null|string

См. определение в файле main/lib/application.php строка 590

591  {
592  static $documentRoot = null;
593  if ($documentRoot != null)
594  return $documentRoot;
595 
596  $context = Application::getInstance()->getContext();
597  if ($context != null)
598  {
599  $server = $context->getServer();
600  if ($server != null)
601  return $documentRoot = $server->getDocumentRoot();
602  }
603 
604  return Loader::getDocumentRoot();
605  }
static getDocumentRoot()
Returns document root.

◆ getExceptionHandler()

getExceptionHandler ( )
Возвращает
\Bitrix\Main\Diag\ExceptionHandler

См. определение в файле main/lib/application.php строка 443

444  {
445  return ServiceLocator::getInstance()->get('exceptionHandler');
446  }

◆ getInstance()

static getInstance ( )
static

Returns current instance of the Application.

Возвращает
Application

См. определение в файле main/lib/application.php строка 96

97  {
98  if (!isset(static::$instance))
99  static::$instance = new static();
100 
101  return static::$instance;
102  }

◆ getKernelSession()

getKernelSession ( )
final

См. определение в файле main/lib/application.php строка 542

542  : SessionInterface
543  {
544  return $this->kernelSession;
545  }

◆ getLocalSession()

getLocalSession (   $name)
final

См. определение в файле main/lib/application.php строка 537

537  : Data\LocalStorage\SessionLocalStorage
538  {
539  return $this->sessionLocalStorageManager->get($name);
540  }

◆ getManagedCache()

getManagedCache ( )

Returns manager of the managed cache.

Возвращает
Data\ManagedCache

См. определение в файле main/lib/application.php строка 507

508  {
509  if ($this->managedCache == null)
510  {
511  $this->managedCache = new Data\ManagedCache();
512  }
513 
514  return $this->managedCache;
515  }

◆ getPersonalRoot()

static getPersonalRoot ( )
static

Returns personal root directory (relative to document root)

Возвращает
null|string

См. определение в файле main/lib/application.php строка 612

613  {
614  static $personalRoot = null;
615  if ($personalRoot != null)
616  return $personalRoot;
617 
618  $context = Application::getInstance()->getContext();
619  if ($context != null)
620  {
621  $server = $context->getServer();
622  if ($server != null)
623  return $personalRoot = $server->getPersonalRoot();
624  }
625 
626  return isset($_SERVER["BX_PERSONAL_ROOT"]) ? $_SERVER["BX_PERSONAL_ROOT"] : "/bitrix";
627  }

◆ getRouter()

getRouter ( )
Возвращает
Router

См. определение в файле main/lib/application.php строка 174

174  : Router
175  {
176  return $this->router;
177  }

◆ getSession()

getSession ( )
final

См. определение в файле main/lib/application.php строка 547

547  : SessionInterface
548  {
549  return $this->session;
550  }

◆ getSessionLocalStorageManager()

getSessionLocalStorageManager ( )
final

См. определение в файле main/lib/application.php строка 532

532  : Data\LocalStorage\SessionLocalStorageManager
533  {
535  }

◆ getTaggedCache()

getTaggedCache ( )

Returns manager of the managed cache.

Возвращает
Data\TaggedCache

См. определение в файле main/lib/application.php строка 522

523  {
524  if ($this->taggedCache == null)
525  {
526  $this->taggedCache = new Data\TaggedCache();
527  }
528 
529  return $this->taggedCache;
530  }

◆ getUserTypeManager()

static getUserTypeManager ( )
static

Returns UF manager.

Возвращает
\CUserTypeManager

См. определение в файле main/lib/application.php строка 562

563  {
564  global $USER_FIELD_MANAGER;
565  return $USER_FIELD_MANAGER;
566  }

◆ handleResponseBeforeSend()

handleResponseBeforeSend ( Response  $response)
protected

См. определение в файле main/lib/application.php строка 263

263  : void
264  {
265  $kernelSession = $this->getKernelSession();
266  if (!($kernelSession instanceof KernelSessionProxy) && $kernelSession->isStarted())
267  {
268  //save session data in cookies
269  $kernelSession->getSessionHandler()->setResponse($response);
270  $kernelSession->save();
271  }
272  }

◆ initializeBasicKernel()

initializeBasicKernel ( )

Does minimally possible kernel initialization.

См. определение в файле main/lib/application.php строка 107

108  {
109  if ($this->isBasicKernelInitialized)
110  return;
111  $this->isBasicKernelInitialized = true;
112 
113  ServiceLocator::getInstance()->registerByGlobalSettings();
115  $this->initializeCache();
116  $this->createDatabaseConnection();
117  }
initializeExceptionHandler()
Exception handler can be initialized through the Config\Configuration (.settings.php file).
createDatabaseConnection()
Creates database connection pool.

◆ initializeCache()

initializeCache ( )
protected

См. определение в файле main/lib/application.php строка 418

419  {
420  //TODO: Should be transfered to where GET parameter is defined in future
421  //magic parameters: show cache usage statistics
422  $show_cache_stat = "";
423  if (isset($_GET["show_cache_stat"]))
424  {
425  $show_cache_stat = (mb_strtoupper($_GET["show_cache_stat"]) == "Y" ? "Y" : "");
426  @setcookie("show_cache_stat", $show_cache_stat, false, "/");
427  }
428  elseif (isset($_COOKIE["show_cache_stat"]))
429  {
430  $show_cache_stat = $_COOKIE["show_cache_stat"];
431  }
432  Data\Cache::setShowCacheStat($show_cache_stat === "Y");
433 
434  if (isset($_GET["clear_cache_session"]))
435  Data\Cache::setClearCacheSession($_GET["clear_cache_session"] === 'Y');
436  if (isset($_GET["clear_cache"]))
437  Data\Cache::setClearCache($_GET["clear_cache"] === 'Y');
438  }
static setClearCacheSession($clearCacheSession)
A privileged user wants to skip cache on this session.
static setClearCache($clearCache)
A privileged user wants to skip cache on this hit.
static setShowCacheStat($showCacheStat)

◆ initializeContext()

initializeContext ( array  $params)
abstractprotected

Initializes context of the current request.

Should be implemented in subclass.

Аргументы
array$params

Переопределяется в HttpApplication.

◆ initializeExceptionHandler()

initializeExceptionHandler ( )
protected

Exception handler can be initialized through the Config\Configuration (.settings.php file).

'exception_handling' => array( 'value' => array( 'debug' => true, // output exception on screen 'handled_errors_types' => E_ALL & ~E_STRICT & ~E_NOTICE, // catchable error types, printed to log 'exception_errors_types' => E_ALL & ~E_NOTICE & ~E_STRICT, // error types from catchable which throws exceptions 'ignore_silence' => false, // ignore @ 'assertion_throws_exception' => true, // assertion throws exception 'assertion_error_type' => 256, 'log' => array( 'class_name' => 'MyLog', // custom log class, must extends ExceptionHandlerLog; can be omited, in this case default Diag\FileExceptionHandlerLog will be used 'extension' => 'MyLogExt', // php extension, is used only with 'class_name' 'required_file' => 'modules/mylog.module/mylog.php' // included file, is used only with 'class_name' 'settings' => array( // any settings for 'class_name' 'file' => 'bitrix/modules/error.log', 'log_size' => 1000000, ), ), ), 'readonly' => false, ),

См. определение в файле main/lib/application.php строка 330

331  {
332  $exceptionHandler = new Diag\ExceptionHandler();
333 
334  $exceptionHandling = Config\Configuration::getValue("exception_handling");
335  if ($exceptionHandling == null)
336  $exceptionHandling = array();
337 
338  if (!isset($exceptionHandling["debug"]) || !is_bool($exceptionHandling["debug"]))
339  $exceptionHandling["debug"] = false;
340  $exceptionHandler->setDebugMode($exceptionHandling["debug"]);
341 
342  if (isset($exceptionHandling["handled_errors_types"]) && is_int($exceptionHandling["handled_errors_types"]))
343  $exceptionHandler->setHandledErrorsTypes($exceptionHandling["handled_errors_types"]);
344 
345  if (isset($exceptionHandling["exception_errors_types"]) && is_int($exceptionHandling["exception_errors_types"]))
346  $exceptionHandler->setExceptionErrorsTypes($exceptionHandling["exception_errors_types"]);
347 
348  if (isset($exceptionHandling["ignore_silence"]) && is_bool($exceptionHandling["ignore_silence"]))
349  $exceptionHandler->setIgnoreSilence($exceptionHandling["ignore_silence"]);
350 
351  if (isset($exceptionHandling["assertion_throws_exception"]) && is_bool($exceptionHandling["assertion_throws_exception"]))
352  $exceptionHandler->setAssertionThrowsException($exceptionHandling["assertion_throws_exception"]);
353 
354  if (isset($exceptionHandling["assertion_error_type"]) && is_int($exceptionHandling["assertion_error_type"]))
355  $exceptionHandler->setAssertionErrorType($exceptionHandling["assertion_error_type"]);
356 
357  $exceptionHandler->initialize(
358  array($this, "createExceptionHandlerOutput"),
359  array($this, "createExceptionHandlerLog")
360  );
361 
362  ServiceLocator::getInstance()->addInstance('exceptionHandler', $exceptionHandler);
363  }

◆ initializeExtendedKernel()

initializeExtendedKernel ( array  $params)

Does full kernel initialization.

Should be called somewhere after initializeBasicKernel().

Аргументы
array$paramsParameters of the current request (depends on application type)

См. определение в файле main/lib/application.php строка 124

125  {
126  if ($this->isExtendedKernelInitialized)
127  return;
128  $this->isExtendedKernelInitialized = true;
129 
130  $this->initializeSessions();
131  $this->initializeContext($params);
132  $this->initializeSessionLocalStorage();
133  }
initializeContext(array $params)
Initializes context of the current request.

◆ isExtendedKernelInitialized()

isExtendedKernelInitialized ( )

См. определение в файле main/lib/application.php строка 697

697  : bool
698  {
700  }

◆ isUtfMode()

static isUtfMode ( )
static

Returns true id server is in utf-8 mode.

False - otherwise.

Возвращает
bool

См. определение в файле main/lib/application.php строка 573

574  {
575  static $isUtfMode = null;
576  if ($isUtfMode === null)
577  {
578  $isUtfMode = Config\Configuration::getValue("utf_mode");
579  if ($isUtfMode === null)
580  $isUtfMode = false;
581  }
582  return $isUtfMode;
583  }

◆ resetAccelerator()

static resetAccelerator ( )
static

Resets accelerator if any.

См. определение в файле main/lib/application.php строка 632

633  {
634  if (defined("BX_NO_ACCELERATOR_RESET"))
635  return;
636 
637  $fl = Config\Configuration::getValue("no_accelerator_reset");
638  if ($fl)
639  return;
640 
641  if (function_exists("accelerator_reset"))
642  accelerator_reset();
643  elseif (function_exists("wincache_refresh_if_changed"))
644  wincache_refresh_if_changed();
645  }

◆ run()

run ( )

Runs controller and its action and sends response to the output.

It's a stub method and we can't mark it as abstract because there is compatibility.

Возвращает
void

Переопределяется в HttpApplication.

См. определение в файле main/lib/application.php строка 222

223  {
224  }

◆ runBackgroundJobs()

runBackgroundJobs ( )
protected

См. определение в файле main/lib/application.php строка 661

662  {
663  $lastException = null;
664  $exceptionHandler = $this->getExceptionHandler();
665 
666  //jobs can be added from jobs
667  while($this->backgroundJobs->valid())
668  {
669  //clear the queue
670  $jobs = [];
671  foreach ($this->backgroundJobs as $job)
672  {
673  $jobs[] = $job;
674  }
675 
676  //do jobs
677  foreach ($jobs as $job)
678  {
679  try
680  {
681  call_user_func_array($job[0], $job[1]);
682  }
683  catch (\Throwable $exception)
684  {
685  $lastException = $exception;
686  $exceptionHandler->writeToLog($exception);
687  }
688  }
689  }
690 
691  if ($lastException !== null)
692  {
693  throw $lastException;
694  }
695  }

◆ setContext()

setContext ( Context  $context)

Modifies context of the current request.

Аргументы
Context$context

См. определение в файле main/lib/application.php строка 473

474  {
475  $this->context = $context;
476  }

◆ setCurrentRoute()

setCurrentRoute ( Route  $currentRoute)
Аргументы
Route$currentRoute

См. определение в файле main/lib/application.php строка 198

198  : void
199  {
200  $this->currentRoute = $currentRoute;
201  }

◆ setRouter()

setRouter ( Router  $router)
Аргументы
Router$router

См. определение в файле main/lib/application.php строка 182

182  : void
183  {
184  $this->router = $router;
185  }

◆ start()

start ( )
abstract

Starts request execution.

Should be called after initialize. Should be implemented in subclass.

Переопределяется в HttpApplication.

◆ terminate()

terminate (   $status = 0)

Terminates application by invoking exit().

It's the right way to finish application.

Аргументы
int$status
Возвращает
void

См. определение в файле main/lib/application.php строка 281

282  {
283  global $DB;
284 
285  //old kernel staff
286  \CMain::RunFinalActionsInternal();
287 
288  //Release session
289  session_write_close();
290 
291  $this->getConnectionPool()->useMasterOnly(true);
292 
293  $this->runBackgroundJobs();
294 
295  $this->getConnectionPool()->useMasterOnly(false);
296 
298 
299  //todo: migrate to the d7 connection
300  $DB->Disconnect();
301 
302  exit($status);
303  }
getConnectionPool()
Returns database connections pool object.

Поля

◆ $backgroundJobs

$backgroundJobs
protected

См. определение в файле main/lib/application.php строка 81

◆ $compositeSessionManager

$compositeSessionManager
protected

См. определение в файле main/lib/application.php строка 74

◆ $connectionPool

$connectionPool
protected

См. определение в файле main/lib/application.php строка 55

◆ $context

$context
protected

См. определение в файле main/lib/application.php строка 43

◆ $currentRoute

$currentRoute
protected

См. определение в файле main/lib/application.php строка 49

◆ $instance

$instance = null
staticprotected

См. определение в файле main/lib/application.php строка 33

◆ $isBasicKernelInitialized

$isBasicKernelInitialized = false
protected

См. определение в файле main/lib/application.php строка 35

◆ $isExtendedKernelInitialized

$isExtendedKernelInitialized = false
protected

См. определение в файле main/lib/application.php строка 36

◆ $kernelSession

$kernelSession
protected

См. определение в файле main/lib/application.php строка 72

◆ $managedCache

$managedCache
protected

См. определение в файле main/lib/application.php строка 61

◆ $router

$router
protected

См. определение в файле main/lib/application.php строка 46

◆ $session

$session
protected

См. определение в файле main/lib/application.php строка 70

◆ $sessionLocalStorageManager

$sessionLocalStorageManager
protected

См. определение в файле main/lib/application.php строка 76

◆ $taggedCache

$taggedCache
protected

См. определение в файле main/lib/application.php строка 67

◆ JOB_PRIORITY_LOW

const JOB_PRIORITY_LOW = 50

См. определение в файле main/lib/application.php строка 28

◆ JOB_PRIORITY_NORMAL

const JOB_PRIORITY_NORMAL = 100

См. определение в файле main/lib/application.php строка 27


Объявления и описания членов класса находятся в файле: