-
Notifications
You must be signed in to change notification settings - Fork 6
/
autoload.php
89 lines (77 loc) · 2.69 KB
/
autoload.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
<?php
/*
*
* SimpleFramework
*
* Copyright (C) 2016-2022 iTX Technologies
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
namespace iTXTech\SimpleFramework {
use iTXTech\SimpleFramework\Console\Terminal;
if(!defined("SF_LOADER_AUTO_INIT") or SF_LOADER_AUTO_INIT){
Initializer::loadSimpleFramework();
Initializer::initClassLoader();
Framework::init();
//backward compatibility
$classLoader = Initializer::getClassLoader();
}
abstract class Initializer{
/** @var \ClassLoader */
private static $classLoader;
public static function loadSimpleFramework(string $phar = "SimpleFramework.phar",
string $workingDir = __DIR__){
$workingDir .= DIRECTORY_SEPARATOR;
if(\Phar::running(true) !== ""
and (new \Phar(\Phar::running()))->getMetadata()["name"] == "SimpleFramework"){
define("iTXTech\SimpleFramework\PATH", \Phar::running(true) . "/");
}elseif(file_exists($phar)){
define("iTXTech\SimpleFramework\PATH", "phar://" . $phar . DIRECTORY_SEPARATOR);
}elseif(file_exists($workingDir . $phar)){
define("iTXTech\SimpleFramework\PATH", "phar://" . $workingDir . $phar . DIRECTORY_SEPARATOR);
}else{
define("iTXTech\SimpleFramework\PATH", $workingDir);
}
require_once(PATH . "src/iTXTech/SimpleFramework/Util/ClassLoader.php");
}
public static function initClassLoader(){
self::$classLoader = new \ClassLoader();
self::$classLoader->addPath(PATH . "src");
self::$classLoader->register(true);
}
public static function getClassLoader() : \ClassLoader{
return self::$classLoader;
}
public static function setSingleThread(bool $bool = false){
@define('iTXTech\SimpleFramework\SINGLE_THREAD', $bool);
if(!$bool){
ThreadManager::init();
}
}
/**
* Initiate Terminal
*
* @param bool|null $formattingCodes
*/
public static function initTerminal(?bool $formattingCodes = null){
Terminal::$formattingCodes = $formattingCodes;
Terminal::init();
}
public static function loadCli(){
global $argv;
require_once PATH . "src/iTXTech/SimpleFramework/SimpleFramework.php";
}
}
}