PHP Classes

File: bootstrap/constant/sys-constant.php

Recommend this page to a friend!
  Classes of Francisco Núñez   Catalyst   bootstrap/constant/sys-constant.php   Download  
File: bootstrap/constant/sys-constant.php
Role: Auxiliary script
Content type: text/plain
Description: Configuration script
Class: Catalyst
Framework to develop MVC-based PHP applications
Author: By
Last change:
Date: 2 days ago
Size: 4,821 bytes
 

Contents

Class file image Download
<?php

declare(strict_types=1);

/**************************************************************************************
 *
 * Catalyst PHP Framework
 * PHP Version 8.3 (Required).
 *
 * @package Catalyst
 * @subpackage Public
 * @see https://github.com/arcanisgk/catalyst
 *
 * @author Walter Nuñez (arcanisgk/original founder) <[email protected]>
 * @copyright 2023 - 2025
 * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
 *
 * @note This program is distributed in the hope that it will be useful
 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
 * or FITNESS FOR A PARTICULAR PURPOSE.
 *
 * @category Framework
 * @filesource
 *
 * @link https://catalyst.dock Local development URL
 *
 */

/**
 * Check PHP version requirement
 */
if (!version_compare(phpversion(), '8.3', '>=')) {
    die(
"This project requires PHP version 8.3 or higher");
}

/**
 * Set default timezone for the application
 */
date_default_timezone_set('America/Panama');


if (!
defined('LOADED_SYS_CONSTANT')) {


   
// Runtime start constants
   
if (!defined('RUNTIME_START')) {
       
/**
         * Defines a constant with runtime performance metrics
         */
       
define('RUNTIME_START', [
           
'TIME' => microtime(true),
           
'MEMORY' => memory_get_usage(),
           
'MEMORY_PEAK' => memory_get_peak_usage(),
        ]);
    }

    if (!
defined('DS')) {
       
define('DS', DIRECTORY_SEPARATOR);
    }


   
// Path constants
   
$path = implode(DS, array_slice(explode(DS, dirname(__DIR__)), 0, -1));
    if (!
defined('PD')) {
       
/**
         * Project Directory
         */
       
define('PD', $path);
    }

    if (!
defined('WD') && isset($_SERVER['DOCUMENT_ROOT'])) {
       
/**
         * Web Directory
         */
       
define('WD', trim($_SERVER['DOCUMENT_ROOT'], '/\\') . DS);
    }

   
// Time constants
   
if (!defined('CT')) {
       
/**
         * Current time
         */
       
define('CT', time());
    }

   
// CLI detection
   
if (!defined('IS_CLI')) {
       
$isCLI = defined('STDIN')
            ||
php_sapi_name() === 'cli'
           
|| (stristr(PHP_SAPI, 'cgi') && getenv('TERM'))
            || (empty(
$_SERVER['REMOTE_ADDR']) && !isset($_SERVER['HTTP_USER_AGENT']) && count($_SERVER['argv']) > 0);

       
/**
         * Determines if the current PHP script is running in CLI mode
         */
       
define('IS_CLI', $isCLI);
    }

   
// Terminal constants
   
if (!defined('TW') && IS_CLI) {
       
/**
         * Terminal Width
         */
       
$termWidth = null;

        if (
str_contains(PHP_OS, 'WIN')) {
           
$termWidth = shell_exec('mode con');
           
preg_match('/CON.*:(\n[^|]+?){3}(?<cols>\d+)/', $termWidth, $match);
           
$termWidth = isset($match['cols']) ? (int)$match['cols'] : null;
        } elseif (
function_exists('shell_exec')) {
           
$termResponse = shell_exec('tput cols 2> /dev/tty');
            if (
$termResponse !== null) {
               
$termWidth = trim($termResponse) ?? null;
                if (
$termWidth !== null) {
                   
$termWidth = (int)$termWidth;
                }
            }
        }

        if (
$termWidth === null) {
           
$termWidth = 80;
        }

       
define('TW', $termWidth);
    }

    if (!
defined('NL')) {
       
$nl = defined('STDIN')
            ||
php_sapi_name() === "cli"
           
|| (stristr(PHP_SAPI, 'cgi') && getenv('TERM'))
            || (empty(
$_SERVER['REMOTE_ADDR']) && !isset($_SERVER['HTTP_USER_AGENT']) && count($_SERVER['argv']) > 0);

       
/**
         * New Line
         */
       
define('NL', $nl ? PHP_EOL : trim(nl2br(PHP_EOL)));
    }

   
// Request constants
   
if (!defined('RQ') && isset($_SERVER['REQUEST_METHOD'])) {
       
/**
         * HTTP Request Method
         */
       
define('RQ', $_SERVER['REQUEST_METHOD']);
    }

    if (!
defined('UR') && isset($_SERVER['REQUEST_URI'])) {
       
/**
         * HTTP Request URI
         */
       
define('UR', $_SERVER['REQUEST_URI']);
    }

   
// Theme/Application constants
   
if (!defined('THEME_PATH')) {
       
/**
         * Path to theme-specific views
         */
       
define('THEME_PATH', implode(DS, [PD, 'bootstrap', 'template']));
    }

    if (!
defined('DEFAULT_LAYOUT')) {
       
/**
         * Default layout template name
         */
       
define('DEFAULT_LAYOUT', 'default');
    }

   
// Log constants
   
if (!defined('LOG_DIR')) {
       
/**
         * Log Directory
         */
       
define('LOG_DIR', implode(DS, [PD, 'logs']));
    }

    if (!
defined('DISPLAY_LOGS')) {
       
/**
         * Display Logs setting
         */
       
define('DISPLAY_LOGS', false);
    }

   
define('LOADED_SYS_CONSTANT', true);
}