Bitrix-D7 22.2
Загрузка...
Поиск...
Не найдено
Класс Application
+ Граф наследования:Application:

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

 initializeBasicKernel ()
 
 initializeExtendedKernel (array $params)
 
 getRouter ()
 
 setRouter (Router $router)
 
 getCurrentRoute ()
 
 setCurrentRoute (Route $currentRoute)
 
 start ()
 
 run ()
 
 end ($status=0, Response $response=null)
 
 terminate ($status=0)
 
 createExceptionHandlerLog ()
 
 createExceptionHandlerOutput ()
 
 getExceptionHandler ()
 
 getConnectionPool ()
 
 getContext ()
 
 setContext (Context $context)
 
 getLicense ()
 
 getCache ()
 
 getManagedCache ()
 
 getTaggedCache ()
 
 getSessionLocalStorageManager ()
 
 getLocalSession ($name)
 
 getKernelSession ()
 
 getSession ()
 
 getCompositeSessionManager ()
 
 addBackgroundJob (callable $job, array $args=[], $priority=self::JOB_PRIORITY_NORMAL)
 
 isInitialized ()
 

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

static getInstance ()
 
static hasInstance ()
 
static getConnection ($name="")
 
static getUserTypeManager ()
 
static isUtfMode ()
 
static getDocumentRoot ()
 
static getPersonalRoot ()
 
static resetAccelerator ()
 

Поля данных

const JOB_PRIORITY_NORMAL = 100
 
const JOB_PRIORITY_LOW = 50
 

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

 __construct ()
 
 initializeContext (array $params)
 
 handleResponseBeforeSend (Response $response)
 
 initializeExceptionHandler ()
 
 createDatabaseConnection ()
 
 initializeCache ()
 
 runBackgroundJobs ()
 

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

bool $initialized = false
 
 $context
 
 $router
 
 $currentRoute
 
 $connectionPool
 
 $managedCache
 
 $taggedCache
 
 $session
 
 $kernelSession
 
 $compositeSessionManager
 
 $sessionLocalStorageManager
 
 $backgroundJobs
 
 $license
 

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

static $instance
 

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

Base class for any application.

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

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

◆ __construct()

__construct ( )
protected

Creates new application instance.

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

88 {
89 ServiceLocator::getInstance()->registerByGlobalSettings();
90 $this->backgroundJobs = new \SplPriorityQueue();
92 $this->initializeCache();
94 }

Методы

◆ 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

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

684 {
685 $this->backgroundJobs->insert([$job, $args], $priority);
686
687 return $this;
688 }

◆ createDatabaseConnection()

createDatabaseConnection ( )
protected

Creates database connection pool.

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

433 {
434 $this->connectionPool = new Data\ConnectionPool();
435 }

◆ createExceptionHandlerLog()

createExceptionHandlerLog ( )

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

376 {
377 $exceptionHandling = Config\Configuration::getValue("exception_handling");
378
379 if (!is_array($exceptionHandling) || !isset($exceptionHandling["log"]) || !is_array($exceptionHandling["log"]))
380 {
381 return null;
382 }
383
384 $options = $exceptionHandling["log"];
385
386 $log = null;
387
388 if (isset($options["class_name"]) && !empty($options["class_name"]))
389 {
390 if (isset($options["extension"]) && !empty($options["extension"]) && !extension_loaded($options["extension"]))
391 {
392 return null;
393 }
394
395 if (isset($options["required_file"]) && !empty($options["required_file"]) && ($requiredFile = Loader::getLocal($options["required_file"])) !== false)
396 {
397 require_once($requiredFile);
398 }
399
400 $className = $options["class_name"];
401 if (!class_exists($className))
402 {
403 return null;
404 }
405
406 $log = new $className();
407 }
408 elseif (isset($options["settings"]) && is_array($options["settings"]))
409 {
410 $log = new Diag\FileExceptionHandlerLog();
411 }
412 else
413 {
414 return null;
415 }
416
417 $log->initialize(
418 isset($options["settings"]) && is_array($options["settings"]) ? $options["settings"] : array()
419 );
420
421 return $log;
422 }
static getLocal($path, $root=null)
Definition: loader.php:523

◆ createExceptionHandlerOutput()

createExceptionHandlerOutput ( )

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

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

425 {
426 return new Diag\ExceptionHandlerOutput();
427 }

◆ 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

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

246 {
247 if($response === null)
248 {
249 //use default response
250 $response = $this->context->getResponse();
251
252 //it's possible to have open buffers
253 $content = '';
254 $n = ob_get_level();
255 while(($c = ob_get_clean()) !== false && $n > 0)
256 {
257 $content .= $c;
258 $n--;
259 }
260
261 if($content <> '')
262 {
263 $response->appendContent($content);
264 }
265 }
266
267 $this->handleResponseBeforeSend($response);
268 //this is the last point of output - all output below will be ignored
269 $response->send();
270
271 $this->terminate($status);
272 }
handleResponseBeforeSend(Response $response)
appendContent($content)
Definition: response.php:52

◆ getCache()

getCache ( )

Returns new instance of the Cache object.

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

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

527 {
528 return Data\Cache::createInstance();
529 }

◆ getCompositeSessionManager()

getCompositeSessionManager ( )
final

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

581 : CompositeSessionManager
582 {
584 }

◆ 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

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

516 {
517 $pool = Application::getInstance()->getConnectionPool();
518 return $pool->getConnection($name);
519 }

◆ getConnectionPool()

getConnectionPool ( )

Returns database connections pool object.

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

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

473 {
475 }

◆ getContext()

getContext ( )

Returns context of the current request.

Возвращает
Context | HttpContext

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

483 {
484 return $this->context;
485 }

◆ getCurrentRoute()

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

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

◆ getDocumentRoot()

static getDocumentRoot ( )
static

Returns server document root.

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

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

620 {
621 static $documentRoot = null;
622 if ($documentRoot != null)
623 return $documentRoot;
624
625 $context = Application::getInstance()->getContext();
626 if ($context != null)
627 {
628 $server = $context->getServer();
629 if ($server != null)
630 return $documentRoot = $server->getDocumentRoot();
631 }
632
634 }
static getDocumentRoot()
Definition: loader.php:248

◆ getExceptionHandler()

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

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

463 {
464 return ServiceLocator::getInstance()->get('exceptionHandler');
465 }

◆ getInstance()

static getInstance ( )
static

Returns current instance of the Application.

Возвращает
Application | HttpApplication

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

102 {
103 if (!isset(static::$instance))
104 {
105 static::$instance = new static();
106 }
107 return static::$instance;
108 }

◆ getKernelSession()

getKernelSession ( )
final

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

571 : SessionInterface
572 {
574 }

◆ getLicense()

getLicense ( )

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

497 : License
498 {
499 if (!$this->license)
500 {
501 $this->license = new License();
502 }
503
504 return $this->license;
505 }

◆ getLocalSession()

getLocalSession (   $name)
final

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

566 : Data\LocalStorage\SessionLocalStorage
567 {
568 return $this->sessionLocalStorageManager->get($name);
569 }

◆ getManagedCache()

getManagedCache ( )

Returns manager of the managed cache.

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

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

537 {
538 if ($this->managedCache == null)
539 {
540 $this->managedCache = new Data\ManagedCache();
541 }
542
543 return $this->managedCache;
544 }

◆ getPersonalRoot()

static getPersonalRoot ( )
static

Returns personal root directory (relative to document root)

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

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

642 {
643 static $personalRoot = null;
644 if ($personalRoot != null)
645 return $personalRoot;
646
647 $context = Application::getInstance()->getContext();
648 if ($context != null)
649 {
650 $server = $context->getServer();
651 if ($server != null)
652 return $personalRoot = $server->getPersonalRoot();
653 }
654
655 return $_SERVER["BX_PERSONAL_ROOT"] ?? '/bitrix';
656 }

◆ getRouter()

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

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

◆ getSession()

getSession ( )
final

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

576 : SessionInterface
577 {
578 return $this->session;
579 }

◆ getSessionLocalStorageManager()

getSessionLocalStorageManager ( )
final

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

561 : Data\LocalStorage\SessionLocalStorageManager
562 {
564 }

◆ getTaggedCache()

getTaggedCache ( )

Returns manager of the managed cache.

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

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

552 {
553 if ($this->taggedCache == null)
554 {
555 $this->taggedCache = new Data\TaggedCache();
556 }
557
558 return $this->taggedCache;
559 }

◆ getUserTypeManager()

static getUserTypeManager ( )
static

Returns UF manager.

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

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

592 {
593 global $USER_FIELD_MANAGER;
594 return $USER_FIELD_MANAGER;
595 }

◆ handleResponseBeforeSend()

handleResponseBeforeSend ( Response  $response)
protected

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

274 : void
275 {
277 if (!($kernelSession instanceof KernelSessionProxy) && $kernelSession->isStarted())
278 {
279 //save session data in cookies
280 $kernelSession->getSessionHandler()->setResponse($response);
281 $kernelSession->save();
282 }
283 }

◆ hasInstance()

static hasInstance ( )
static
Возвращает
bool

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

114 {
115 return isset(static::$instance);
116 }

◆ initializeBasicKernel()

initializeBasicKernel ( )
Уст.:
Does nothing, will be removed soon.

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

123 {
124 }

◆ initializeCache()

initializeCache ( )
protected

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

438 {
439 //TODO: Should be transfered to where GET parameter is defined in future
440 //magic parameters: show cache usage statistics
441 $show_cache_stat = "";
442 if (isset($_GET["show_cache_stat"]))
443 {
444 $show_cache_stat = (strtoupper($_GET["show_cache_stat"]) == "Y" ? "Y" : "");
445 @setcookie("show_cache_stat", $show_cache_stat, false, "/");
446 }
447 elseif (isset($_COOKIE["show_cache_stat"]))
448 {
449 $show_cache_stat = $_COOKIE["show_cache_stat"];
450 }
451 Data\Cache::setShowCacheStat($show_cache_stat === "Y");
452
453 if (isset($_GET["clear_cache_session"]))
454 Data\Cache::setClearCacheSession($_GET["clear_cache_session"] === 'Y');
455 if (isset($_GET["clear_cache"]))
456 Data\Cache::setClearCache($_GET["clear_cache"] === 'Y');
457 }

◆ 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 extend 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, ),

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

341 {
342 $exceptionHandler = new Diag\ExceptionHandler();
343
344 $exceptionHandling = Config\Configuration::getValue("exception_handling");
345 if ($exceptionHandling == null)
346 $exceptionHandling = array();
347
348 if (!isset($exceptionHandling["debug"]) || !is_bool($exceptionHandling["debug"]))
349 $exceptionHandling["debug"] = false;
350 $exceptionHandler->setDebugMode($exceptionHandling["debug"]);
351
352 if (isset($exceptionHandling["handled_errors_types"]) && is_int($exceptionHandling["handled_errors_types"]))
353 $exceptionHandler->setHandledErrorsTypes($exceptionHandling["handled_errors_types"]);
354
355 if (isset($exceptionHandling["exception_errors_types"]) && is_int($exceptionHandling["exception_errors_types"]))
356 $exceptionHandler->setExceptionErrorsTypes($exceptionHandling["exception_errors_types"]);
357
358 if (isset($exceptionHandling["ignore_silence"]) && is_bool($exceptionHandling["ignore_silence"]))
359 $exceptionHandler->setIgnoreSilence($exceptionHandling["ignore_silence"]);
360
361 if (isset($exceptionHandling["assertion_throws_exception"]) && is_bool($exceptionHandling["assertion_throws_exception"]))
362 $exceptionHandler->setAssertionThrowsException($exceptionHandling["assertion_throws_exception"]);
363
364 if (isset($exceptionHandling["assertion_error_type"]) && is_int($exceptionHandling["assertion_error_type"]))
365 $exceptionHandler->setAssertionErrorType($exceptionHandling["assertion_error_type"]);
366
367 $exceptionHandler->initialize(
368 array($this, "createExceptionHandlerOutput"),
369 array($this, "createExceptionHandlerLog")
370 );
371
372 ServiceLocator::getInstance()->addInstance('exceptionHandler', $exceptionHandler);
373 }

◆ initializeExtendedKernel()

initializeExtendedKernel ( array  $params)

Does full kernel initialization. Should be called somewhere after initializeBasicKernel().

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

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

132 {
133 $this->initializeContext($params);
134
135 if (!$this->initialized)
136 {
137 $this->initializeSessions();
138 $this->initializeSessionLocalStorage();
139
140 $this->initialized = true;
141 }
142 }
initializeContext(array $params)

◆ isInitialized()

isInitialized ( )

Returns true if the application is fully initialized.

Возвращает
bool

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

731 {
732 return $this->initialized;
733 }

◆ isUtfMode()

static isUtfMode ( )
static

Returns true id server is in utf-8 mode. False - otherwise.

Возвращает
bool

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

603 {
604 static $isUtfMode = null;
605 if ($isUtfMode === null)
606 {
607 $isUtfMode = Config\Configuration::getValue("utf_mode");
608 if ($isUtfMode === null)
609 $isUtfMode = false;
610 }
611 return $isUtfMode;
612 }

◆ resetAccelerator()

static resetAccelerator ( )
static

Resets accelerator if any.

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

662 {
663 if (defined("BX_NO_ACCELERATOR_RESET"))
664 return;
665
666 $fl = Config\Configuration::getValue("no_accelerator_reset");
667 if ($fl)
668 return;
669
670 if (function_exists("accelerator_reset"))
671 accelerator_reset();
672 elseif (function_exists("wincache_refresh_if_changed"))
673 wincache_refresh_if_changed();
674 }

◆ 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

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

232 {
233 }

◆ runBackgroundJobs()

runBackgroundJobs ( )
protected

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

691 {
692 $lastException = null;
693 $exceptionHandler = $this->getExceptionHandler();
694
695 //jobs can be added from jobs
696 while($this->backgroundJobs->valid())
697 {
698 //clear the queue
699 $jobs = [];
700 foreach ($this->backgroundJobs as $job)
701 {
702 $jobs[] = $job;
703 }
704
705 //do job
706 foreach ($jobs as $job)
707 {
708 try
709 {
710 call_user_func_array($job[0], $job[1]);
711 }
712 catch (\Throwable $exception)
713 {
714 $lastException = $exception;
715 $exceptionHandler->writeToLog($exception);
716 }
717 }
718 }
719
720 if ($lastException !== null)
721 {
722 throw $lastException;
723 }
724 }

◆ setContext()

setContext ( Context  $context)

Modifies context of the current request.

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

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

493 {
494 $this->context = $context;
495 }

◆ setCurrentRoute()

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

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

207 : void
208 {
209 $this->currentRoute = $currentRoute;
210 }

◆ setRouter()

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

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

191 : void
192 {
193 $this->router = $router;
194 }

◆ 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

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

293 {
294 //old kernel staff
295 \CMain::RunFinalActionsInternal();
296
297 //Release session
298 session_write_close();
299
300 $pool = $this->getConnectionPool();
301
302 $pool->useMasterOnly(true);
303
304 $this->runBackgroundJobs();
305
306 $pool->useMasterOnly(false);
307
308 Data\ManagedCache::finalize();
309
310 $pool->disconnect();
311
312 exit($status);
313 }

Поля

◆ $backgroundJobs

$backgroundJobs
protected

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

◆ $compositeSessionManager

$compositeSessionManager
protected

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

◆ $connectionPool

$connectionPool
protected

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

◆ $context

$context
protected

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

◆ $currentRoute

$currentRoute
protected

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

◆ $initialized

bool $initialized = false
protected

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

◆ $instance

$instance
staticprotected

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

◆ $kernelSession

$kernelSession
protected

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

◆ $license

$license
protected

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

◆ $managedCache

$managedCache
protected

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

◆ $router

$router
protected

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

◆ $session

$session
protected

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

◆ $sessionLocalStorageManager

$sessionLocalStorageManager
protected

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

◆ $taggedCache

$taggedCache
protected

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

◆ JOB_PRIORITY_LOW

const JOB_PRIORITY_LOW = 50

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

◆ JOB_PRIORITY_NORMAL

const JOB_PRIORITY_NORMAL = 100

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


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