commit basic
This commit is contained in:
53
config/config.php
Executable file
53
config/config.php
Executable file
@@ -0,0 +1,53 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
// Basic error reporting (keep strict in dev)
|
||||
ini_set('display_errors', '1');
|
||||
ini_set('display_startup_errors', '1');
|
||||
error_reporting(E_ALL);
|
||||
|
||||
// Pick config set: first try root files, otherwise fall back to env dir (prod/staging/...)
|
||||
$appEnvFromEnv = getenv('APP_ENV') ?: 'prod';
|
||||
$envDir = rtrim(__DIR__, '/\\') . '/' . $appEnvFromEnv;
|
||||
|
||||
foreach (['domaindata.php','settings.php'] as $cfgFile) {
|
||||
$rootPath = __DIR__ . '/' . $cfgFile;
|
||||
$envPath = $envDir . '/' . $cfgFile;
|
||||
|
||||
if (file_exists($rootPath)) {
|
||||
require_once $rootPath;
|
||||
} elseif (file_exists($envPath)) {
|
||||
require_once $envPath;
|
||||
} else {
|
||||
throw new \RuntimeException("Missing required config file: $cfgFile (looked for $rootPath or $envPath)");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Environment: staging|prod|local (example)
|
||||
if (!defined('APP_ENV')) {
|
||||
define('APP_ENV', 'local');
|
||||
}
|
||||
|
||||
// Asset versioning
|
||||
if (!defined('ASSET_VERSION')) {
|
||||
define('ASSET_VERSION', 'dev-' . date('Ymd-His'));
|
||||
}
|
||||
|
||||
// Primary domain + URL
|
||||
if (!defined('APP_DOMAIN_PRIMARY')) {
|
||||
define('APP_DOMAIN_PRIMARY', APP_DOMAIN_NAME);
|
||||
}
|
||||
if (!defined('APP_URL_PRIMARY')) {
|
||||
define('APP_URL_PRIMARY', 'https://' . APP_DOMAIN_PRIMARY);
|
||||
}
|
||||
|
||||
// API base (example)
|
||||
if (!defined('APP_API_BASE')) {
|
||||
define('APP_API_BASE', 'https://api.' . APP_DOMAIN_PRIMARY);
|
||||
}
|
||||
|
||||
// Feature toggles
|
||||
if (!defined('APP_DB_ENABLED')) {
|
||||
define('APP_DB_ENABLED', false); // set true to enable DB connection
|
||||
}
|
||||
41
config/fileload.php
Executable file
41
config/fileload.php
Executable file
@@ -0,0 +1,41 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
// 1) Load config (constants, env, domains)
|
||||
require_once __DIR__ . '/config.php';
|
||||
|
||||
// 2) Composer Autoloader (falls vorhanden)
|
||||
$composerAutoload = __DIR__ . '/../vendor/autoload.php';
|
||||
if (file_exists($composerAutoload)) {
|
||||
require_once $composerAutoload;
|
||||
} else {
|
||||
// 2b) Fallback: minimaler Autoloader
|
||||
spl_autoload_register(function (string $class): void {
|
||||
$prefix = 'App\\';
|
||||
if (!str_starts_with($class, $prefix)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$rel = substr($class, strlen($prefix));
|
||||
$path = __DIR__ . '/../src/App/' . str_replace('\\', '/', $rel) . '.php';
|
||||
|
||||
if (file_exists($path)) {
|
||||
require_once $path;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// 3) Global helper functions (tpl(), t(), asset_*())
|
||||
require_once __DIR__ . '/../src/helpers.php';
|
||||
|
||||
// 4) Initialize App (services)
|
||||
$config = \App\Config::fromPhpConstants(__DIR__ . '/../config');
|
||||
\App\App::init($config);
|
||||
|
||||
// 5) Start session + create client-id cookie
|
||||
$app = \App\App::get();
|
||||
$app->session()->start();
|
||||
$clientId = $app->session()->ensureClientId();
|
||||
|
||||
// Optionally expose a single global for templates if desired
|
||||
$GLOBALS['client_id'] = $clientId;
|
||||
96
config/prod/db.php
Executable file
96
config/prod/db.php
Executable file
@@ -0,0 +1,96 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
/**
|
||||
* config/db.php
|
||||
*
|
||||
* - Choose ONE driver below (others stay commented).
|
||||
* - Each driver has its own config section.
|
||||
* - The file returns ONE normalized array used by Database::createPdo().
|
||||
*/
|
||||
|
||||
// ------------------------------------------------------------
|
||||
// 1) Driver selection (choose one)
|
||||
// ------------------------------------------------------------
|
||||
$driver = 'pgsql';
|
||||
// $driver = 'mysql';
|
||||
// $driver = 'sqlite';
|
||||
|
||||
// ------------------------------------------------------------
|
||||
// 2) Driver-specific configuration sections
|
||||
// ------------------------------------------------------------
|
||||
|
||||
// ---- PostgreSQL (PDO driver: pgsql) -------------------------
|
||||
$pgsql = [
|
||||
'driver' => 'pgsql',
|
||||
'host' => 'localhost',
|
||||
'port' => 5432,
|
||||
'dbname' => 'mydb',
|
||||
|
||||
// optional: schema/search_path (commonly "public")
|
||||
'schema' => 'public',
|
||||
|
||||
'user' => 'myuser',
|
||||
'password' => 'secret',
|
||||
|
||||
'options' => [
|
||||
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
|
||||
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
|
||||
],
|
||||
];
|
||||
|
||||
// ---- MySQL / MariaDB (PDO driver: mysql) -------------------
|
||||
$mysql = [
|
||||
'driver' => 'mysql',
|
||||
'host' => 'localhost',
|
||||
'port' => 3306,
|
||||
'dbname' => 'd0453540',
|
||||
'charset' => 'utf8mb4',
|
||||
|
||||
// Alternative to host/port:
|
||||
// 'unix_socket' => '/var/run/mysqld/mysqld.sock',
|
||||
|
||||
'user' => 'd0453540',
|
||||
'password' => 'P6jGRrSaX8QSiBMEJBL7',
|
||||
|
||||
'options' => [
|
||||
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
|
||||
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
|
||||
PDO::ATTR_EMULATE_PREPARES => false,
|
||||
],
|
||||
];
|
||||
|
||||
// ---- SQLite (PDO driver: sqlite) ---------------------------
|
||||
$sqlite = [
|
||||
'driver' => 'sqlite',
|
||||
|
||||
// Use an absolute path in production, e.g. /var/app/data/app.sqlite
|
||||
// For demo/dev you can use a relative path.
|
||||
'path' => __DIR__ . '/../var/app.sqlite',
|
||||
|
||||
// SQLite ignores host/port/user/pass
|
||||
'options' => [
|
||||
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
|
||||
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
|
||||
],
|
||||
];
|
||||
|
||||
// ------------------------------------------------------------
|
||||
// 3) Select and return config
|
||||
// ------------------------------------------------------------
|
||||
switch ($driver) {
|
||||
case 'pgsql':
|
||||
return $pgsql;
|
||||
|
||||
case 'mysql':
|
||||
return $mysql;
|
||||
|
||||
case 'sqlite':
|
||||
return $sqlite;
|
||||
|
||||
default:
|
||||
throw new RuntimeException('Unsupported DB driver in config/db.php: ' . $driver);
|
||||
}
|
||||
|
||||
],
|
||||
];
|
||||
12
config/prod/domaindata.php
Executable file
12
config/prod/domaindata.php
Executable file
@@ -0,0 +1,12 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
// Example: a single "brand" domain name.
|
||||
// In real deployments you might derive this from ENV or hostnames.
|
||||
if (!defined('APP_DOMAIN_NAME')) {
|
||||
define('APP_DOMAIN_NAME', 'example.test');
|
||||
}
|
||||
|
||||
if (!defined('APP_PREFIX')) {
|
||||
define('APP_PREFIX', 'miniapp');
|
||||
}
|
||||
8
config/prod/settings.php
Executable file
8
config/prod/settings.php
Executable file
@@ -0,0 +1,8 @@
|
||||
<?php
|
||||
define('APP_ENV', 'local');
|
||||
define('ASSET_VERSION', 'dev-' . date('Ymd-His'));
|
||||
define('APP_DOMAIN_PRIMARY', APP_DOMAIN_NAME);
|
||||
define('APP_URL_PRIMARY', 'https://' . APP_DOMAIN_PRIMARY);
|
||||
define('APP_API_BASE', 'https://api.' . APP_DOMAIN_PRIMARY);
|
||||
define('APP_DB_ENABLED', false); // set true to enable DB connection
|
||||
|
||||
93
config/staging/db.php
Executable file
93
config/staging/db.php
Executable file
@@ -0,0 +1,93 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
/**
|
||||
* config/db.php
|
||||
*
|
||||
* - Choose ONE driver below (others stay commented).
|
||||
* - Each driver has its own config section.
|
||||
* - The file returns ONE normalized array used by Database::createPdo().
|
||||
*/
|
||||
|
||||
// ------------------------------------------------------------
|
||||
// 1) Driver selection (choose one)
|
||||
// ------------------------------------------------------------
|
||||
$driver = 'pgsql';
|
||||
// $driver = 'mysql';
|
||||
// $driver = 'sqlite';
|
||||
|
||||
// ------------------------------------------------------------
|
||||
// 2) Driver-specific configuration sections
|
||||
// ------------------------------------------------------------
|
||||
|
||||
// ---- PostgreSQL (PDO driver: pgsql) -------------------------
|
||||
$pgsql = [
|
||||
'driver' => 'pgsql',
|
||||
'host' => 'localhost',
|
||||
'port' => 5432,
|
||||
'dbname' => 'mydb',
|
||||
|
||||
// optional: schema/search_path (commonly "public")
|
||||
'schema' => 'public',
|
||||
|
||||
'user' => 'myuser',
|
||||
'password' => 'secret',
|
||||
|
||||
'options' => [
|
||||
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
|
||||
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
|
||||
],
|
||||
];
|
||||
|
||||
// ---- MySQL / MariaDB (PDO driver: mysql) -------------------
|
||||
$mysql = [
|
||||
'driver' => 'mysql',
|
||||
'host' => 'localhost',
|
||||
'port' => 3306,
|
||||
'dbname' => 'd0453540',
|
||||
'charset' => 'utf8mb4',
|
||||
|
||||
// Alternative to host/port:
|
||||
// 'unix_socket' => '/var/run/mysqld/mysqld.sock',
|
||||
|
||||
'user' => 'd0453540',
|
||||
'password' => 'P6jGRrSaX8QSiBMEJBL7',
|
||||
|
||||
'options' => [
|
||||
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
|
||||
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
|
||||
PDO::ATTR_EMULATE_PREPARES => false,
|
||||
],
|
||||
];
|
||||
|
||||
// ---- SQLite (PDO driver: sqlite) ---------------------------
|
||||
$sqlite = [
|
||||
'driver' => 'sqlite',
|
||||
|
||||
// Use an absolute path in production, e.g. /var/app/data/app.sqlite
|
||||
// For demo/dev you can use a relative path.
|
||||
'path' => __DIR__ . '/../var/app.sqlite',
|
||||
|
||||
// SQLite ignores host/port/user/pass
|
||||
'options' => [
|
||||
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
|
||||
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
|
||||
],
|
||||
];
|
||||
|
||||
// ------------------------------------------------------------
|
||||
// 3) Select and return config
|
||||
// ------------------------------------------------------------
|
||||
switch ($driver) {
|
||||
case 'pgsql':
|
||||
return $pgsql;
|
||||
|
||||
case 'mysql':
|
||||
return $mysql;
|
||||
|
||||
case 'sqlite':
|
||||
return $sqlite;
|
||||
|
||||
default:
|
||||
throw new RuntimeException('Unsupported DB driver in config/db.php: ' . $driver);
|
||||
}
|
||||
12
config/staging/domaindata.php
Executable file
12
config/staging/domaindata.php
Executable file
@@ -0,0 +1,12 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
// Example: a single "brand" domain name.
|
||||
// In real deployments you might derive this from ENV or hostnames.
|
||||
if (!defined('APP_DOMAIN_NAME')) {
|
||||
define('APP_DOMAIN_NAME', 'example.test');
|
||||
}
|
||||
|
||||
if (!defined('APP_PREFIX')) {
|
||||
define('APP_PREFIX', 'miniapp');
|
||||
}
|
||||
8
config/staging/settings.php
Executable file
8
config/staging/settings.php
Executable file
@@ -0,0 +1,8 @@
|
||||
<?php
|
||||
define('APP_ENV', 'local');
|
||||
define('ASSET_VERSION', 'dev-' . date('Ymd-His'));
|
||||
define('APP_DOMAIN_PRIMARY', APP_DOMAIN_NAME);
|
||||
define('APP_URL_PRIMARY', 'https://' . APP_DOMAIN_PRIMARY);
|
||||
define('APP_API_BASE', 'https://api.' . APP_DOMAIN_PRIMARY);
|
||||
define('APP_DB_ENABLED', false); // set true to enable DB connection
|
||||
|
||||
Reference in New Issue
Block a user