Code Clean up, more testing
Remove unused code and classes. Clean up code to remove all named constant from them and throw deprecation alerts if used. Add basic psalm setup in root folder and remove from www folder
This commit is contained in:
22
4dev/composer/sync-to-composer-all-folder.sh
Normal file
22
4dev/composer/sync-to-composer-all-folder.sh
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
#!/bin/env bash
|
||||||
|
|
||||||
|
# syncs
|
||||||
|
# 4dev/tests/
|
||||||
|
# www/lib/CoreLibs/
|
||||||
|
#
|
||||||
|
# to the composer corelibs all repo
|
||||||
|
|
||||||
|
GO="${1}";
|
||||||
|
DRY_RUN="";
|
||||||
|
if [ "${GO}" != "go" ]; then
|
||||||
|
DRY_RUN="-n ";
|
||||||
|
fi;
|
||||||
|
|
||||||
|
BASE="/storage/var/www/html/developers/clemens/core_data/";
|
||||||
|
SOURCE="${BASE}php_libraries/trunk/"
|
||||||
|
TARGET="${BASE}composer-packages/CoreLibs-Composer-All/"
|
||||||
|
|
||||||
|
rsync ${DRY_RUN}-Plzvrupt --stats --delete ${SOURCE}4dev/tests/ ${TARGET}test/phpunit/
|
||||||
|
rsync ${DRY_RUN}-Plzvrupt --stats --delete ${SOURCE}www/lib/CoreLibs/ ${TARGET}src/
|
||||||
|
|
||||||
|
# __END__
|
||||||
@@ -120,8 +120,6 @@ final class CoreLibsACLLoginTest extends TestCase
|
|||||||
// define('LOGIN_DB_SCHEMA', '');
|
// define('LOGIN_DB_SCHEMA', '');
|
||||||
|
|
||||||
// SHOULD SET
|
// SHOULD SET
|
||||||
// PASSWORD_MIN_LENGTH (d9)
|
|
||||||
// PASSWORD_MAX_LENGTH (d255)
|
|
||||||
// DEFAULT_ACL_LEVEL (d80)
|
// DEFAULT_ACL_LEVEL (d80)
|
||||||
|
|
||||||
// OPT:
|
// OPT:
|
||||||
@@ -1106,7 +1104,21 @@ final class CoreLibsACLLoginTest extends TestCase
|
|||||||
|
|
||||||
/** @var \CoreLibs\ACL\Login&MockObject */
|
/** @var \CoreLibs\ACL\Login&MockObject */
|
||||||
$login_mock = $this->getMockBuilder(\CoreLibs\ACL\Login::class)
|
$login_mock = $this->getMockBuilder(\CoreLibs\ACL\Login::class)
|
||||||
->setConstructorArgs([self::$db, self::$log, $session_mock, false])
|
->setConstructorArgs([
|
||||||
|
self::$db,
|
||||||
|
self::$log,
|
||||||
|
$session_mock,
|
||||||
|
[
|
||||||
|
'auto_login' => false,
|
||||||
|
'default_acl_level' => 80,
|
||||||
|
'logout_target' => '',
|
||||||
|
'site_locale' => 'en_US.UTF-8',
|
||||||
|
'site_domain' => 'admin',
|
||||||
|
'locale_path' => __DIR__ . DIRECTORY_SEPARATOR
|
||||||
|
. 'includes' . DIRECTORY_SEPARATOR
|
||||||
|
. 'locale' . DIRECTORY_SEPARATOR,
|
||||||
|
]
|
||||||
|
])
|
||||||
->onlyMethods(['loginTerminate', 'loginReadPageName', 'loginPrintLogin'])
|
->onlyMethods(['loginTerminate', 'loginReadPageName', 'loginPrintLogin'])
|
||||||
->getMock();
|
->getMock();
|
||||||
$login_mock->expects($this->any())
|
$login_mock->expects($this->any())
|
||||||
@@ -1774,7 +1786,21 @@ final class CoreLibsACLLoginTest extends TestCase
|
|||||||
);
|
);
|
||||||
/** @var \CoreLibs\ACL\Login&MockObject */
|
/** @var \CoreLibs\ACL\Login&MockObject */
|
||||||
$login_mock = $this->getMockBuilder(\CoreLibs\ACL\Login::class)
|
$login_mock = $this->getMockBuilder(\CoreLibs\ACL\Login::class)
|
||||||
->setConstructorArgs([self::$db, self::$log, $session_mock, false])
|
->setConstructorArgs([
|
||||||
|
self::$db,
|
||||||
|
self::$log,
|
||||||
|
$session_mock,
|
||||||
|
[
|
||||||
|
'auto_login' => false,
|
||||||
|
'default_acl_level' => 80,
|
||||||
|
'logout_target' => '',
|
||||||
|
'site_locale' => 'en_US.UTF-8',
|
||||||
|
'site_domain' => 'admin',
|
||||||
|
'locale_path' => __DIR__ . DIRECTORY_SEPARATOR
|
||||||
|
. 'includes' . DIRECTORY_SEPARATOR
|
||||||
|
. 'locale' . DIRECTORY_SEPARATOR,
|
||||||
|
]
|
||||||
|
])
|
||||||
->onlyMethods(['loginTerminate'])
|
->onlyMethods(['loginTerminate'])
|
||||||
->getMock();
|
->getMock();
|
||||||
$login_mock->expects($this->any())
|
$login_mock->expects($this->any())
|
||||||
@@ -1873,7 +1899,21 @@ final class CoreLibsACLLoginTest extends TestCase
|
|||||||
);
|
);
|
||||||
/** @var \CoreLibs\ACL\Login&MockObject */
|
/** @var \CoreLibs\ACL\Login&MockObject */
|
||||||
$login_mock = $this->getMockBuilder(\CoreLibs\ACL\Login::class)
|
$login_mock = $this->getMockBuilder(\CoreLibs\ACL\Login::class)
|
||||||
->setConstructorArgs([self::$db, self::$log, $session_mock, false])
|
->setConstructorArgs([
|
||||||
|
self::$db,
|
||||||
|
self::$log,
|
||||||
|
$session_mock,
|
||||||
|
[
|
||||||
|
'auto_login' => false,
|
||||||
|
'default_acl_level' => 80,
|
||||||
|
'logout_target' => '',
|
||||||
|
'site_locale' => 'en_US.UTF-8',
|
||||||
|
'site_domain' => 'admin',
|
||||||
|
'locale_path' => __DIR__ . DIRECTORY_SEPARATOR
|
||||||
|
. 'includes' . DIRECTORY_SEPARATOR
|
||||||
|
. 'locale' . DIRECTORY_SEPARATOR,
|
||||||
|
]
|
||||||
|
])
|
||||||
->onlyMethods(['loginTerminate'])
|
->onlyMethods(['loginTerminate'])
|
||||||
->getMock();
|
->getMock();
|
||||||
$login_mock->expects($this->any())
|
$login_mock->expects($this->any())
|
||||||
@@ -1946,7 +1986,21 @@ final class CoreLibsACLLoginTest extends TestCase
|
|||||||
);
|
);
|
||||||
/** @var \CoreLibs\ACL\Login&MockObject */
|
/** @var \CoreLibs\ACL\Login&MockObject */
|
||||||
$login_mock = $this->getMockBuilder(\CoreLibs\ACL\Login::class)
|
$login_mock = $this->getMockBuilder(\CoreLibs\ACL\Login::class)
|
||||||
->setConstructorArgs([self::$db, self::$log, $session_mock, false])
|
->setConstructorArgs([
|
||||||
|
self::$db,
|
||||||
|
self::$log,
|
||||||
|
$session_mock,
|
||||||
|
[
|
||||||
|
'auto_login' => false,
|
||||||
|
'default_acl_level' => 80,
|
||||||
|
'logout_target' => '',
|
||||||
|
'site_locale' => 'en_US.UTF-8',
|
||||||
|
'site_domain' => 'admin',
|
||||||
|
'locale_path' => __DIR__ . DIRECTORY_SEPARATOR
|
||||||
|
. 'includes' . DIRECTORY_SEPARATOR
|
||||||
|
. 'locale' . DIRECTORY_SEPARATOR,
|
||||||
|
]
|
||||||
|
])
|
||||||
->onlyMethods(['loginTerminate'])
|
->onlyMethods(['loginTerminate'])
|
||||||
->getMock();
|
->getMock();
|
||||||
$login_mock->expects($this->any())
|
$login_mock->expects($this->any())
|
||||||
@@ -2027,7 +2081,21 @@ final class CoreLibsACLLoginTest extends TestCase
|
|||||||
);
|
);
|
||||||
/** @var \CoreLibs\ACL\Login&MockObject */
|
/** @var \CoreLibs\ACL\Login&MockObject */
|
||||||
$login_mock = $this->getMockBuilder(\CoreLibs\ACL\Login::class)
|
$login_mock = $this->getMockBuilder(\CoreLibs\ACL\Login::class)
|
||||||
->setConstructorArgs([self::$db, self::$log, $session_mock, false])
|
->setConstructorArgs([
|
||||||
|
self::$db,
|
||||||
|
self::$log,
|
||||||
|
$session_mock,
|
||||||
|
[
|
||||||
|
'auto_login' => false,
|
||||||
|
'default_acl_level' => 80,
|
||||||
|
'logout_target' => '',
|
||||||
|
'site_locale' => 'en_US.UTF-8',
|
||||||
|
'site_domain' => 'admin',
|
||||||
|
'locale_path' => __DIR__ . DIRECTORY_SEPARATOR
|
||||||
|
. 'includes' . DIRECTORY_SEPARATOR
|
||||||
|
. 'locale' . DIRECTORY_SEPARATOR,
|
||||||
|
]
|
||||||
|
])
|
||||||
->onlyMethods(['loginTerminate'])
|
->onlyMethods(['loginTerminate'])
|
||||||
->getMock();
|
->getMock();
|
||||||
$login_mock->expects($this->any())
|
$login_mock->expects($this->any())
|
||||||
|
|||||||
1
4dev/tests/ACL/includes
Symbolic link
1
4dev/tests/ACL/includes
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
../AAASetupData/includes
|
||||||
@@ -738,7 +738,7 @@ final class CoreLibsCombinedArrayHandlerTest extends TestCase
|
|||||||
$warning = array_shift($arrays);
|
$warning = array_shift($arrays);
|
||||||
|
|
||||||
// phpunit 10.0 compatible
|
// phpunit 10.0 compatible
|
||||||
$this->expectExceptionMessage(($warning));
|
$this->expectExceptionMessage($warning);
|
||||||
|
|
||||||
\CoreLibs\Combined\ArrayHandler::arrayMergeRecursive(...$arrays);
|
\CoreLibs\Combined\ArrayHandler::arrayMergeRecursive(...$arrays);
|
||||||
|
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ use PHPUnit\Framework\TestCase;
|
|||||||
*/
|
*/
|
||||||
final class CoreLibsDebugLoggingTest extends TestCase
|
final class CoreLibsDebugLoggingTest extends TestCase
|
||||||
{
|
{
|
||||||
|
private const LOG_FOLDER = __DIR__ . DIRECTORY_SEPARATOR . 'log' . DIRECTORY_SEPARATOR;
|
||||||
/**
|
/**
|
||||||
* test set for options BASIC
|
* test set for options BASIC
|
||||||
*
|
*
|
||||||
@@ -33,7 +34,8 @@ final class CoreLibsDebugLoggingTest extends TestCase
|
|||||||
return [
|
return [
|
||||||
'log folder set' => [
|
'log folder set' => [
|
||||||
[
|
[
|
||||||
'log_folder' => DIRECTORY_SEPARATOR . 'tmp'
|
'log_folder' => DIRECTORY_SEPARATOR . 'tmp',
|
||||||
|
'file_id' => 'testClassInit'
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'log_folder' => DIRECTORY_SEPARATOR . 'tmp' . DIRECTORY_SEPARATOR,
|
'log_folder' => DIRECTORY_SEPARATOR . 'tmp' . DIRECTORY_SEPARATOR,
|
||||||
@@ -43,7 +45,9 @@ final class CoreLibsDebugLoggingTest extends TestCase
|
|||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
'nothing set' => [
|
'nothing set' => [
|
||||||
null,
|
[
|
||||||
|
'file_id' => 'testClassInit'
|
||||||
|
],
|
||||||
[
|
[
|
||||||
'log_folder' => getcwd() . DIRECTORY_SEPARATOR,
|
'log_folder' => getcwd() . DIRECTORY_SEPARATOR,
|
||||||
'debug_all' => false,
|
'debug_all' => false,
|
||||||
@@ -51,8 +55,10 @@ final class CoreLibsDebugLoggingTest extends TestCase
|
|||||||
],
|
],
|
||||||
[]
|
[]
|
||||||
],
|
],
|
||||||
'no options set, constant set' => [
|
'no options set, constant set [DEPRECATED]' => [
|
||||||
null,
|
[
|
||||||
|
'file_id' => 'testClassInit'
|
||||||
|
],
|
||||||
[
|
[
|
||||||
'log_folder' => str_replace(DIRECTORY_SEPARATOR . 'configs', '', __DIR__)
|
'log_folder' => str_replace(DIRECTORY_SEPARATOR . 'configs', '', __DIR__)
|
||||||
. DIRECTORY_SEPARATOR . 'log' . DIRECTORY_SEPARATOR,
|
. DIRECTORY_SEPARATOR . 'log' . DIRECTORY_SEPARATOR,
|
||||||
@@ -70,6 +76,7 @@ final class CoreLibsDebugLoggingTest extends TestCase
|
|||||||
'standard test set' => [
|
'standard test set' => [
|
||||||
[
|
[
|
||||||
'log_folder' => DIRECTORY_SEPARATOR . 'tmp',
|
'log_folder' => DIRECTORY_SEPARATOR . 'tmp',
|
||||||
|
'file_id' => 'testClassInit',
|
||||||
'debug_all' => true,
|
'debug_all' => true,
|
||||||
'print_all' => true,
|
'print_all' => true,
|
||||||
],
|
],
|
||||||
@@ -89,12 +96,12 @@ final class CoreLibsDebugLoggingTest extends TestCase
|
|||||||
* @dataProvider optionsProvider
|
* @dataProvider optionsProvider
|
||||||
* @testdox init test [$_dataName]
|
* @testdox init test [$_dataName]
|
||||||
*
|
*
|
||||||
* @param array|null $options
|
* @param array $options
|
||||||
* @param array $expected
|
* @param array $expected
|
||||||
* @param array $override
|
* @param array $override
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function testClassInit(?array $options, array $expected, array $override): void
|
public function testClassInit(array $options, array $expected, array $override): void
|
||||||
{
|
{
|
||||||
if (!empty($override['constant'])) {
|
if (!empty($override['constant'])) {
|
||||||
foreach ($override['constant'] as $var => $value) {
|
foreach ($override['constant'] as $var => $value) {
|
||||||
@@ -116,11 +123,24 @@ final class CoreLibsDebugLoggingTest extends TestCase
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ($options === null) {
|
// if not log folder and constant set -> expect E_USER_DEPRECATION
|
||||||
$log = new \CoreLibs\Debug\Logging();
|
if (!empty($override['constant']) && empty($options['log_folder'])) {
|
||||||
} else {
|
// the deprecation message
|
||||||
$log = new \CoreLibs\Debug\Logging($options);
|
$deprecation_message = 'options: log_folder must be set. '
|
||||||
|
. 'Setting via BASE and LOG constants is deprecated';
|
||||||
|
// convert E_USER_DEPRECATED to a exception
|
||||||
|
set_error_handler(
|
||||||
|
static function (int $errno, string $errstr): never {
|
||||||
|
throw new \Exception($errstr, $errno);
|
||||||
|
},
|
||||||
|
E_USER_DEPRECATED
|
||||||
|
);
|
||||||
|
// catch this with the message
|
||||||
|
$this->expectExceptionMessage($deprecation_message);
|
||||||
}
|
}
|
||||||
|
$log = new \CoreLibs\Debug\Logging($options);
|
||||||
|
// reset error handler
|
||||||
|
restore_error_handler();
|
||||||
// check that settings match
|
// check that settings match
|
||||||
$this->assertEquals(
|
$this->assertEquals(
|
||||||
$expected['log_folder'],
|
$expected['log_folder'],
|
||||||
@@ -152,17 +172,23 @@ final class CoreLibsDebugLoggingTest extends TestCase
|
|||||||
// 0: options
|
// 0: options
|
||||||
// 1: expected
|
// 1: expected
|
||||||
// 2: override
|
// 2: override
|
||||||
|
// 3: exception message
|
||||||
return [
|
return [
|
||||||
'no log id set' => [
|
'no log id set' => [
|
||||||
null,
|
[
|
||||||
|
'log_folder' => self::LOG_FOLDER,
|
||||||
|
],
|
||||||
[
|
[
|
||||||
'log_file_id' => ''
|
'log_file_id' => ''
|
||||||
],
|
],
|
||||||
[]
|
[],
|
||||||
|
null
|
||||||
],
|
],
|
||||||
// set log id manually afterwards
|
// set log id manually afterwards
|
||||||
'set log id manually' => [
|
'set log id manually' => [
|
||||||
null,
|
[
|
||||||
|
'log_folder' => self::LOG_FOLDER,
|
||||||
|
],
|
||||||
[
|
[
|
||||||
'log_file_id' => '',
|
'log_file_id' => '',
|
||||||
'set_log_file_id' => 'abc123',
|
'set_log_file_id' => 'abc123',
|
||||||
@@ -172,21 +198,26 @@ final class CoreLibsDebugLoggingTest extends TestCase
|
|||||||
'values' => [
|
'values' => [
|
||||||
'log_file_id' => 'abc123'
|
'log_file_id' => 'abc123'
|
||||||
]
|
]
|
||||||
]
|
],
|
||||||
|
null
|
||||||
],
|
],
|
||||||
// set log id from options
|
// set log id from options
|
||||||
'set log id via options' => [
|
'set log id via options' => [
|
||||||
[
|
[
|
||||||
'file_id' => 'abc456',
|
'file_id' => 'abc456',
|
||||||
|
'log_folder' => self::LOG_FOLDER,
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'log_file_id' => 'abc456'
|
'log_file_id' => 'abc456'
|
||||||
],
|
],
|
||||||
[]
|
[],
|
||||||
|
null
|
||||||
],
|
],
|
||||||
// set log id from GLOBALS [DEPRECATED]
|
// set log id from GLOBALS [DEPRECATED]
|
||||||
'set log id via globals' => [
|
'set log id via globals [DEPRECATED]' => [
|
||||||
null,
|
[
|
||||||
|
'log_folder' => self::LOG_FOLDER,
|
||||||
|
],
|
||||||
[
|
[
|
||||||
'log_file_id' => 'def123'
|
'log_file_id' => 'def123'
|
||||||
],
|
],
|
||||||
@@ -194,11 +225,14 @@ final class CoreLibsDebugLoggingTest extends TestCase
|
|||||||
'globals' => [
|
'globals' => [
|
||||||
'LOG_FILE_ID' => 'def123'
|
'LOG_FILE_ID' => 'def123'
|
||||||
]
|
]
|
||||||
]
|
],
|
||||||
|
'options: file_id must be set. Setting via LOG_FILE_ID global variable is deprecated'
|
||||||
],
|
],
|
||||||
// set log id from CONSTANT [DEPRECATED]
|
// set log id from CONSTANT [DEPRECATED]
|
||||||
'set log id via constant' => [
|
'set log id via constant [DEPRECATED]' => [
|
||||||
null,
|
[
|
||||||
|
'log_folder' => self::LOG_FOLDER,
|
||||||
|
],
|
||||||
[
|
[
|
||||||
'log_file_id' => 'ghi123'
|
'log_file_id' => 'ghi123'
|
||||||
],
|
],
|
||||||
@@ -210,12 +244,14 @@ final class CoreLibsDebugLoggingTest extends TestCase
|
|||||||
'constant' => [
|
'constant' => [
|
||||||
'LOG_FILE_ID' => 'ghi123'
|
'LOG_FILE_ID' => 'ghi123'
|
||||||
]
|
]
|
||||||
]
|
],
|
||||||
|
'options: file_id must be set. Setting via LOG_FILE_ID constant is deprecated'
|
||||||
],
|
],
|
||||||
// invalid, keep previous set
|
// invalid, keep previous set
|
||||||
'invalid log id' => [
|
'invalid log id' => [
|
||||||
[
|
[
|
||||||
'file_id' => 'jkl456'
|
'file_id' => 'jkl456',
|
||||||
|
'log_folder' => self::LOG_FOLDER,
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'log_file_id' => 'jkl456',
|
'log_file_id' => 'jkl456',
|
||||||
@@ -225,7 +261,8 @@ final class CoreLibsDebugLoggingTest extends TestCase
|
|||||||
'values' => [
|
'values' => [
|
||||||
'log_file_id' => './#'
|
'log_file_id' => './#'
|
||||||
]
|
]
|
||||||
]
|
],
|
||||||
|
null
|
||||||
]
|
]
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
@@ -237,13 +274,18 @@ final class CoreLibsDebugLoggingTest extends TestCase
|
|||||||
* @dataProvider logIdOptionsProvider
|
* @dataProvider logIdOptionsProvider
|
||||||
* @testdox log id set/get tests [$_dataName]
|
* @testdox log id set/get tests [$_dataName]
|
||||||
*
|
*
|
||||||
* @param array|null $options
|
* @param array $options
|
||||||
* @param array $expected
|
* @param array $expected
|
||||||
* @param array $override
|
* @param array $override
|
||||||
|
* @param string|null $deprecation_message until we remove the old code
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function testLogId(?array $options, array $expected, array $override): void
|
public function testLogId(
|
||||||
{
|
array $options,
|
||||||
|
array $expected,
|
||||||
|
array $override,
|
||||||
|
?string $deprecation_message
|
||||||
|
): void {
|
||||||
// we need to set with file_id option, globals LOG_FILE_ID, constant LOG_FILE_ID
|
// we need to set with file_id option, globals LOG_FILE_ID, constant LOG_FILE_ID
|
||||||
if (!empty($override['constant'])) {
|
if (!empty($override['constant'])) {
|
||||||
foreach ($override['constant'] as $var => $value) {
|
foreach ($override['constant'] as $var => $value) {
|
||||||
@@ -255,11 +297,20 @@ final class CoreLibsDebugLoggingTest extends TestCase
|
|||||||
$GLOBALS[$var] = $value;
|
$GLOBALS[$var] = $value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ($options === null) {
|
if (!empty($override['constant']) || !empty($override['globals'])) {
|
||||||
$log = new \CoreLibs\Debug\Logging();
|
// convert E_USER_DEPRECATED to a exception
|
||||||
} else {
|
set_error_handler(
|
||||||
$log = new \CoreLibs\Debug\Logging($options);
|
static function (int $errno, string $errstr): never {
|
||||||
|
throw new \Exception($errstr, $errno);
|
||||||
|
},
|
||||||
|
E_USER_DEPRECATED
|
||||||
|
);
|
||||||
|
// catch this with the message
|
||||||
|
$this->expectExceptionMessage($deprecation_message);
|
||||||
}
|
}
|
||||||
|
$log = new \CoreLibs\Debug\Logging($options);
|
||||||
|
// reset error handler
|
||||||
|
restore_error_handler();
|
||||||
// check current
|
// check current
|
||||||
$this->assertEquals(
|
$this->assertEquals(
|
||||||
$log->getLogId(),
|
$log->getLogId(),
|
||||||
@@ -334,7 +385,10 @@ final class CoreLibsDebugLoggingTest extends TestCase
|
|||||||
bool $expected_get
|
bool $expected_get
|
||||||
): void {
|
): void {
|
||||||
// neutral start with default
|
// neutral start with default
|
||||||
$log = new \CoreLibs\Debug\Logging();
|
$log = new \CoreLibs\Debug\Logging([
|
||||||
|
'file_id' => 'testSetGetLogLevelAll',
|
||||||
|
'log_folder' => self::LOG_FOLDER
|
||||||
|
]);
|
||||||
// set and check
|
// set and check
|
||||||
$this->assertEquals(
|
$this->assertEquals(
|
||||||
$log->setLogLevelAll($type, $flag),
|
$log->setLogLevelAll($type, $flag),
|
||||||
@@ -456,7 +510,10 @@ final class CoreLibsDebugLoggingTest extends TestCase
|
|||||||
$expected_get
|
$expected_get
|
||||||
): void {
|
): void {
|
||||||
// neutral start with default
|
// neutral start with default
|
||||||
$log = new \CoreLibs\Debug\Logging();
|
$log = new \CoreLibs\Debug\Logging([
|
||||||
|
'file_id' => 'testSetGetLogLevel',
|
||||||
|
'log_folder' => self::LOG_FOLDER
|
||||||
|
]);
|
||||||
// set
|
// set
|
||||||
$this->assertEquals(
|
$this->assertEquals(
|
||||||
$log->setLogLevel($type, $flag, $debug_on),
|
$log->setLogLevel($type, $flag, $debug_on),
|
||||||
@@ -535,7 +592,10 @@ final class CoreLibsDebugLoggingTest extends TestCase
|
|||||||
bool $expected_get
|
bool $expected_get
|
||||||
): void {
|
): void {
|
||||||
// neutral start with default
|
// neutral start with default
|
||||||
$log = new \CoreLibs\Debug\Logging();
|
$log = new \CoreLibs\Debug\Logging([
|
||||||
|
'file_id' => 'testSetGetLogPer',
|
||||||
|
'log_folder' => self::LOG_FOLDER
|
||||||
|
]);
|
||||||
// set and check
|
// set and check
|
||||||
$this->assertEquals(
|
$this->assertEquals(
|
||||||
$log->setLogPer($type, $set),
|
$log->setLogPer($type, $set),
|
||||||
@@ -564,7 +624,10 @@ final class CoreLibsDebugLoggingTest extends TestCase
|
|||||||
public function testSetGetLogPrintFileDate(bool $input, bool $expected_set, bool $expected_get): void
|
public function testSetGetLogPrintFileDate(bool $input, bool $expected_set, bool $expected_get): void
|
||||||
{
|
{
|
||||||
// neutral start with default
|
// neutral start with default
|
||||||
$log = new \CoreLibs\Debug\Logging();
|
$log = new \CoreLibs\Debug\Logging([
|
||||||
|
'file_id' => 'testSetGetLogPrintFileDate',
|
||||||
|
'log_folder' => self::LOG_FOLDER
|
||||||
|
]);
|
||||||
// set and check
|
// set and check
|
||||||
$this->assertEquals(
|
$this->assertEquals(
|
||||||
$log->setGetLogPrintFileDate($input),
|
$log->setGetLogPrintFileDate($input),
|
||||||
@@ -630,7 +693,10 @@ final class CoreLibsDebugLoggingTest extends TestCase
|
|||||||
*/
|
*/
|
||||||
public function testPrAr(array $input, string $expected): void
|
public function testPrAr(array $input, string $expected): void
|
||||||
{
|
{
|
||||||
$log = new \CoreLibs\Debug\Logging();
|
$log = new \CoreLibs\Debug\Logging([
|
||||||
|
'file_id' => 'testPrAr',
|
||||||
|
'log_folder' => self::LOG_FOLDER
|
||||||
|
]);
|
||||||
$this->assertEquals(
|
$this->assertEquals(
|
||||||
$log->prAr($input),
|
$log->prAr($input),
|
||||||
$expected
|
$expected
|
||||||
@@ -691,7 +757,10 @@ final class CoreLibsDebugLoggingTest extends TestCase
|
|||||||
*/
|
*/
|
||||||
public function testPrBl(bool $input, ?string $true, ?string $false, string $expected): void
|
public function testPrBl(bool $input, ?string $true, ?string $false, string $expected): void
|
||||||
{
|
{
|
||||||
$log = new \CoreLibs\Debug\Logging();
|
$log = new \CoreLibs\Debug\Logging([
|
||||||
|
'file_id' => 'testPrBl',
|
||||||
|
'log_folder' => self::LOG_FOLDER
|
||||||
|
]);
|
||||||
$return = '';
|
$return = '';
|
||||||
if ($true === null && $false === null) {
|
if ($true === null && $false === null) {
|
||||||
$return = $log->prBl($input);
|
$return = $log->prBl($input);
|
||||||
@@ -977,9 +1046,16 @@ final class CoreLibsDebugLoggingTest extends TestCase
|
|||||||
public function testLogUniqueId(bool $option, bool $override): void
|
public function testLogUniqueId(bool $option, bool $override): void
|
||||||
{
|
{
|
||||||
if ($option === true) {
|
if ($option === true) {
|
||||||
$log = new \CoreLibs\Debug\Logging(['per_run' => $option]);
|
$log = new \CoreLibs\Debug\Logging([
|
||||||
|
'file_id' => 'testLogUniqueId',
|
||||||
|
'log_folder' => self::LOG_FOLDER,
|
||||||
|
'per_run' => $option
|
||||||
|
]);
|
||||||
} else {
|
} else {
|
||||||
$log = new \CoreLibs\Debug\Logging();
|
$log = new \CoreLibs\Debug\Logging([
|
||||||
|
'file_id' => 'testLogUniqueId',
|
||||||
|
'log_folder' => self::LOG_FOLDER
|
||||||
|
]);
|
||||||
$log->setLogUniqueId();
|
$log->setLogUniqueId();
|
||||||
}
|
}
|
||||||
$per_run_id = $log->getLogUniqueId();
|
$per_run_id = $log->getLogUniqueId();
|
||||||
|
|||||||
@@ -134,6 +134,16 @@ final class CoreLibsGetDotEnvTest extends TestCase
|
|||||||
$old_chmod = fileperms($folder . DIRECTORY_SEPARATOR . $file);
|
$old_chmod = fileperms($folder . DIRECTORY_SEPARATOR . $file);
|
||||||
chmod($folder . DIRECTORY_SEPARATOR . $file, octdec($chmod));
|
chmod($folder . DIRECTORY_SEPARATOR . $file, octdec($chmod));
|
||||||
}
|
}
|
||||||
|
$message = '\CoreLibs\Get\DotEnv is deprecated in favor for '
|
||||||
|
. 'composer package gullevek\dotenv which is a copy of this';
|
||||||
|
// convert E_USER_DEPRECATED to a exception
|
||||||
|
set_error_handler(
|
||||||
|
static function (int $errno, string $errstr): never {
|
||||||
|
throw new \Exception($errstr, $errno);
|
||||||
|
},
|
||||||
|
E_USER_DEPRECATED
|
||||||
|
);
|
||||||
|
$this->expectExceptionMessage($message);
|
||||||
if ($folder !== null && $file !== null) {
|
if ($folder !== null && $file !== null) {
|
||||||
$status = DotEnv::readEnvFile($folder, $file);
|
$status = DotEnv::readEnvFile($folder, $file);
|
||||||
} elseif ($folder !== null) {
|
} elseif ($folder !== null) {
|
||||||
@@ -141,6 +151,7 @@ final class CoreLibsGetDotEnvTest extends TestCase
|
|||||||
} else {
|
} else {
|
||||||
$status = DotEnv::readEnvFile();
|
$status = DotEnv::readEnvFile();
|
||||||
}
|
}
|
||||||
|
restore_error_handler();
|
||||||
$this->assertEquals(
|
$this->assertEquals(
|
||||||
$status,
|
$status,
|
||||||
$expected_status,
|
$expected_status,
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ final class CoreLibsLanguageGetLocaleTest extends TestCase
|
|||||||
/**
|
/**
|
||||||
* all the test data
|
* all the test data
|
||||||
*
|
*
|
||||||
* @return array
|
* @return array<mixed>
|
||||||
*/
|
*/
|
||||||
public function setLocaleProvider(): array
|
public function setLocaleProvider(): array
|
||||||
{
|
{
|
||||||
@@ -72,6 +72,7 @@ final class CoreLibsLanguageGetLocaleTest extends TestCase
|
|||||||
// 4: SESSION: DEFAULT_LOCALE
|
// 4: SESSION: DEFAULT_LOCALE
|
||||||
// 5: SESSION: DEFAULT_CHARSET
|
// 5: SESSION: DEFAULT_CHARSET
|
||||||
// 6: expected array
|
// 6: expected array
|
||||||
|
// 7: deprecation message
|
||||||
'no params, all default constants' => [
|
'no params, all default constants' => [
|
||||||
// lang, domain, encoding, path
|
// lang, domain, encoding, path
|
||||||
null, null, null, null,
|
null, null, null, null,
|
||||||
@@ -85,6 +86,7 @@ final class CoreLibsLanguageGetLocaleTest extends TestCase
|
|||||||
'encoding' => 'UTF-8',
|
'encoding' => 'UTF-8',
|
||||||
'path' => "/^\/(.*\/)?includes\/locale\/$/",
|
'path' => "/^\/(.*\/)?includes\/locale\/$/",
|
||||||
],
|
],
|
||||||
|
'setLocale: Unset $locale or unset SESSION locale is deprecated',
|
||||||
],
|
],
|
||||||
'no params, session charset and lang' => [
|
'no params, session charset and lang' => [
|
||||||
// lang, domain, encoding, path
|
// lang, domain, encoding, path
|
||||||
@@ -99,6 +101,7 @@ final class CoreLibsLanguageGetLocaleTest extends TestCase
|
|||||||
'encoding' => 'UTF-8',
|
'encoding' => 'UTF-8',
|
||||||
'path' => "/^\/(.*\/)?includes\/locale\/$/",
|
'path' => "/^\/(.*\/)?includes\/locale\/$/",
|
||||||
],
|
],
|
||||||
|
'setLocale: Unset $domain is deprecated'
|
||||||
],
|
],
|
||||||
'no params, session charset and lang short' => [
|
'no params, session charset and lang short' => [
|
||||||
// lang, domain, encoding, path
|
// lang, domain, encoding, path
|
||||||
@@ -113,6 +116,7 @@ final class CoreLibsLanguageGetLocaleTest extends TestCase
|
|||||||
'encoding' => 'UTF-8',
|
'encoding' => 'UTF-8',
|
||||||
'path' => "/^\/(.*\/)?includes\/locale\/$/",
|
'path' => "/^\/(.*\/)?includes\/locale\/$/",
|
||||||
],
|
],
|
||||||
|
'setLocale: Unset $domain is deprecated',
|
||||||
],
|
],
|
||||||
// param lang (no sessions)
|
// param lang (no sessions)
|
||||||
'locale param only, no sessions' => [
|
'locale param only, no sessions' => [
|
||||||
@@ -128,6 +132,7 @@ final class CoreLibsLanguageGetLocaleTest extends TestCase
|
|||||||
'encoding' => 'UTF-8',
|
'encoding' => 'UTF-8',
|
||||||
'path' => "/^\/(.*\/)?includes\/locale\/$/",
|
'path' => "/^\/(.*\/)?includes\/locale\/$/",
|
||||||
],
|
],
|
||||||
|
'setLocale: Unset $domain is deprecated',
|
||||||
],
|
],
|
||||||
// different locale setting
|
// different locale setting
|
||||||
'locale complex param only, no sessions' => [
|
'locale complex param only, no sessions' => [
|
||||||
@@ -143,6 +148,7 @@ final class CoreLibsLanguageGetLocaleTest extends TestCase
|
|||||||
'encoding' => 'SJIS',
|
'encoding' => 'SJIS',
|
||||||
'path' => "/^\/(.*\/)?includes\/locale\/$/",
|
'path' => "/^\/(.*\/)?includes\/locale\/$/",
|
||||||
],
|
],
|
||||||
|
'setLocale: Unset $domain is deprecated',
|
||||||
],
|
],
|
||||||
// param lang and domain (no override)
|
// param lang and domain (no override)
|
||||||
'locale, domain params, no sessions' => [
|
'locale, domain params, no sessions' => [
|
||||||
@@ -158,6 +164,7 @@ final class CoreLibsLanguageGetLocaleTest extends TestCase
|
|||||||
'encoding' => 'UTF-8',
|
'encoding' => 'UTF-8',
|
||||||
'path' => "/^\/(.*\/)?includes\/locale\/$/",
|
'path' => "/^\/(.*\/)?includes\/locale\/$/",
|
||||||
],
|
],
|
||||||
|
'setLocale: Unset $path is deprecated',
|
||||||
],
|
],
|
||||||
// param lang and domain (no override)
|
// param lang and domain (no override)
|
||||||
'locale, domain, encoding params, no sessions' => [
|
'locale, domain, encoding params, no sessions' => [
|
||||||
@@ -173,6 +180,7 @@ final class CoreLibsLanguageGetLocaleTest extends TestCase
|
|||||||
'encoding' => 'UTF-8',
|
'encoding' => 'UTF-8',
|
||||||
'path' => "/^\/(.*\/)?includes\/locale\/$/",
|
'path' => "/^\/(.*\/)?includes\/locale\/$/",
|
||||||
],
|
],
|
||||||
|
'setLocale: Unset $path is deprecated'
|
||||||
],
|
],
|
||||||
// lang, domain, path (no override)
|
// lang, domain, path (no override)
|
||||||
'locale, domain and path, no sessions' => [
|
'locale, domain and path, no sessions' => [
|
||||||
@@ -188,6 +196,7 @@ final class CoreLibsLanguageGetLocaleTest extends TestCase
|
|||||||
'encoding' => 'UTF-8',
|
'encoding' => 'UTF-8',
|
||||||
'path' => "/^\/(.*\/)?locale_other\/$/",
|
'path' => "/^\/(.*\/)?locale_other\/$/",
|
||||||
],
|
],
|
||||||
|
null
|
||||||
],
|
],
|
||||||
// all params set (no override)
|
// all params set (no override)
|
||||||
'all parameter, no sessions' => [
|
'all parameter, no sessions' => [
|
||||||
@@ -203,6 +212,7 @@ final class CoreLibsLanguageGetLocaleTest extends TestCase
|
|||||||
'encoding' => 'UTF-8',
|
'encoding' => 'UTF-8',
|
||||||
'path' => "/^\/(.*\/)?locale_other\/$/",
|
'path' => "/^\/(.*\/)?locale_other\/$/",
|
||||||
],
|
],
|
||||||
|
null
|
||||||
],
|
],
|
||||||
// param lang and domain (no override)
|
// param lang and domain (no override)
|
||||||
'long locale, domain, encoding params, no sessions' => [
|
'long locale, domain, encoding params, no sessions' => [
|
||||||
@@ -218,6 +228,7 @@ final class CoreLibsLanguageGetLocaleTest extends TestCase
|
|||||||
'encoding' => 'UTF-8',
|
'encoding' => 'UTF-8',
|
||||||
'path' => "/^\/(.*\/)?includes\/locale\/$/",
|
'path' => "/^\/(.*\/)?includes\/locale\/$/",
|
||||||
],
|
],
|
||||||
|
'setLocale: Unset $path is deprecated',
|
||||||
],
|
],
|
||||||
// TODO invalid params (bad path) (no override)
|
// TODO invalid params (bad path) (no override)
|
||||||
// TODO param calls, but with override set
|
// TODO param calls, but with override set
|
||||||
@@ -225,14 +236,22 @@ final class CoreLibsLanguageGetLocaleTest extends TestCase
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Undocumented function
|
* Undocumented function
|
||||||
*
|
*
|
||||||
* @covers ::setLocale
|
* @covers ::setLocale
|
||||||
* @dataProvider setLocaleProvider
|
* @dataProvider setLocaleProvider
|
||||||
* @testdox lang settings lang $language, domain $domain, encoding $encoding, path $path; session lang: $SESSION_DEFAULT_LOCALE, session char: $SESSION_DEFAULT_CHARSET [$_dataName]
|
* @testdox lang settings lang $language, domain $domain, encoding $encoding, path $path; session lang: $SESSION_DEFAULT_LOCALE, session char: $SESSION_DEFAULT_CHARSET [$_dataName]
|
||||||
*
|
*
|
||||||
* @return void
|
* @param string|null $language
|
||||||
*/
|
* @param string|null $domain
|
||||||
|
* @param string|null $encoding
|
||||||
|
* @param string|null $path
|
||||||
|
* @param string|null $SESSION_DEFAULT_LOCALE
|
||||||
|
* @param string|null $SESSION_DEFAULT_CHARSET
|
||||||
|
* @param array<mixed> $expected
|
||||||
|
* @param string|null $deprecation_message
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
public function testsetLocale(
|
public function testsetLocale(
|
||||||
?string $language,
|
?string $language,
|
||||||
?string $domain,
|
?string $domain,
|
||||||
@@ -240,7 +259,8 @@ final class CoreLibsLanguageGetLocaleTest extends TestCase
|
|||||||
?string $path,
|
?string $path,
|
||||||
?string $SESSION_DEFAULT_LOCALE,
|
?string $SESSION_DEFAULT_LOCALE,
|
||||||
?string $SESSION_DEFAULT_CHARSET,
|
?string $SESSION_DEFAULT_CHARSET,
|
||||||
array $expected
|
array $expected,
|
||||||
|
?string $deprecation_message
|
||||||
): void {
|
): void {
|
||||||
$return_lang_settings = [];
|
$return_lang_settings = [];
|
||||||
global $_SESSION;
|
global $_SESSION;
|
||||||
@@ -251,19 +271,41 @@ final class CoreLibsLanguageGetLocaleTest extends TestCase
|
|||||||
if ($SESSION_DEFAULT_CHARSET !== null) {
|
if ($SESSION_DEFAULT_CHARSET !== null) {
|
||||||
$_SESSION['DEFAULT_CHARSET'] = $SESSION_DEFAULT_CHARSET;
|
$_SESSION['DEFAULT_CHARSET'] = $SESSION_DEFAULT_CHARSET;
|
||||||
}
|
}
|
||||||
|
if ($deprecation_message !== null) {
|
||||||
|
set_error_handler(
|
||||||
|
static function (int $errno, string $errstr): never {
|
||||||
|
throw new \Exception($errstr, $errno);
|
||||||
|
},
|
||||||
|
E_USER_DEPRECATED
|
||||||
|
);
|
||||||
|
// catch this with the message
|
||||||
|
$this->expectExceptionMessage($deprecation_message);
|
||||||
|
}
|
||||||
// function call
|
// function call
|
||||||
if ($language === null && $domain === null && $encoding === null && $path === null) {
|
if (
|
||||||
|
$language === null && $domain === null &&
|
||||||
|
$encoding === null && $path === null
|
||||||
|
) {
|
||||||
$return_lang_settings = \CoreLibs\Language\GetLocale::setLocale();
|
$return_lang_settings = \CoreLibs\Language\GetLocale::setLocale();
|
||||||
} elseif ($language !== null && $domain === null && $encoding === null && $path === null) {
|
} elseif (
|
||||||
|
$language !== null && $domain === null &&
|
||||||
|
$encoding === null && $path === null
|
||||||
|
) {
|
||||||
$return_lang_settings = \CoreLibs\Language\GetLocale::setLocale(
|
$return_lang_settings = \CoreLibs\Language\GetLocale::setLocale(
|
||||||
$language
|
$language
|
||||||
);
|
);
|
||||||
} elseif ($language !== null && $domain !== null && $encoding === null && $path === null) {
|
} elseif (
|
||||||
|
$language !== null && $domain !== null &&
|
||||||
|
$encoding === null && $path === null
|
||||||
|
) {
|
||||||
$return_lang_settings = \CoreLibs\Language\GetLocale::setLocale(
|
$return_lang_settings = \CoreLibs\Language\GetLocale::setLocale(
|
||||||
$language,
|
$language,
|
||||||
$domain
|
$domain
|
||||||
);
|
);
|
||||||
} elseif ($language !== null && $domain !== null && $encoding !== null && $path === null) {
|
} elseif (
|
||||||
|
$language !== null && $domain !== null &&
|
||||||
|
$encoding !== null && $path === null
|
||||||
|
) {
|
||||||
$return_lang_settings = \CoreLibs\Language\GetLocale::setLocale(
|
$return_lang_settings = \CoreLibs\Language\GetLocale::setLocale(
|
||||||
$language,
|
$language,
|
||||||
$domain,
|
$domain,
|
||||||
@@ -277,6 +319,7 @@ final class CoreLibsLanguageGetLocaleTest extends TestCase
|
|||||||
$path
|
$path
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
restore_error_handler();
|
||||||
// print "RETURN: " . print_r($return_lang_settings, true) . "\n";
|
// print "RETURN: " . print_r($return_lang_settings, true) . "\n";
|
||||||
|
|
||||||
foreach (
|
foreach (
|
||||||
|
|||||||
@@ -22,37 +22,16 @@ final class CoreLibsLanguageL10nTest extends TestCase
|
|||||||
*/
|
*/
|
||||||
public static function setUpBeforeClass(): void
|
public static function setUpBeforeClass(): void
|
||||||
{
|
{
|
||||||
// default web page encoding setting
|
// for deprecation test only, will be removed
|
||||||
if (!defined('DEFAULT_ENCODING')) {
|
|
||||||
define('DEFAULT_ENCODING', 'UTF-8');
|
|
||||||
}
|
|
||||||
if (!defined('DEFAULT_LOCALE')) {
|
|
||||||
// default lang + encoding
|
|
||||||
define('DEFAULT_LOCALE', 'en_US.UTF-8');
|
|
||||||
}
|
|
||||||
// site
|
|
||||||
if (!defined('SITE_ENCODING')) {
|
|
||||||
define('SITE_ENCODING', DEFAULT_ENCODING);
|
|
||||||
}
|
|
||||||
if (!defined('SITE_LOCALE')) {
|
|
||||||
define('SITE_LOCALE', DEFAULT_LOCALE);
|
|
||||||
}
|
|
||||||
// just set
|
|
||||||
if (!defined('BASE')) {
|
if (!defined('BASE')) {
|
||||||
define('BASE', str_replace('/configs', '', __DIR__) . DIRECTORY_SEPARATOR);
|
define('BASE', str_replace(DIRECTORY_SEPARATOR . 'configs', '', __DIR__) . DIRECTORY_SEPARATOR);
|
||||||
}
|
}
|
||||||
if (!defined('INCLUDES')) {
|
if (!defined('INCLUDES')) {
|
||||||
define('INCLUDES', 'includes' . DIRECTORY_SEPARATOR);
|
define('INCLUDES', 'includes' . DIRECTORY_SEPARATOR);
|
||||||
}
|
}
|
||||||
if (!defined('LANG')) {
|
|
||||||
define('LANG', 'lang' . DIRECTORY_SEPARATOR);
|
|
||||||
}
|
|
||||||
if (!defined('LOCALE')) {
|
if (!defined('LOCALE')) {
|
||||||
define('LOCALE', 'locale' . DIRECTORY_SEPARATOR);
|
define('LOCALE', 'locale' . DIRECTORY_SEPARATOR);
|
||||||
}
|
}
|
||||||
if (!defined('CONTENT_PATH')) {
|
|
||||||
define('CONTENT_PATH', 'frontend' . DIRECTORY_SEPARATOR);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -110,59 +89,90 @@ final class CoreLibsLanguageL10nTest extends TestCase
|
|||||||
// 3: path
|
// 3: path
|
||||||
// 4: locale expected
|
// 4: locale expected
|
||||||
// 5: locale set expected
|
// 5: locale set expected
|
||||||
// 6: domain exepcted
|
// 6: lang expected
|
||||||
// 7: context (null for none)
|
// 7: encoding expected
|
||||||
// 8: test string in
|
// 8: domain exepcted
|
||||||
// 9: test translated
|
// 9: context (null for none)
|
||||||
|
// 10: test string in
|
||||||
|
// 11: test translated
|
||||||
|
// 12: deprecation message (until removed)
|
||||||
// new style load
|
// new style load
|
||||||
'gettext load en' => [
|
'gettext load en' => [
|
||||||
'en_US.UTF-8',
|
'en_US.UTF-8',
|
||||||
'frontend',
|
'frontend',
|
||||||
__DIR__ . 'includes/locale/',
|
__DIR__ . DIRECTORY_SEPARATOR . 'includes' . DIRECTORY_SEPARATOR . 'locale' . DIRECTORY_SEPARATOR,
|
||||||
//
|
//
|
||||||
'en_US.UTF-8',
|
'en_US.UTF-8',
|
||||||
'en_US',
|
'en_US',
|
||||||
|
'en_US',
|
||||||
|
'UTF-8',
|
||||||
'frontend',
|
'frontend',
|
||||||
null,
|
null,
|
||||||
'Original',
|
'Original',
|
||||||
'Translated frontend en_US',
|
'Translated frontend en_US',
|
||||||
|
null,
|
||||||
],
|
],
|
||||||
'gettext load en' => [
|
'gettext load en' => [
|
||||||
'en_US.UTF-8',
|
'en_US.UTF-8',
|
||||||
'frontend',
|
'frontend',
|
||||||
__DIR__ . 'includes/locale/',
|
__DIR__ . DIRECTORY_SEPARATOR . 'includes' . DIRECTORY_SEPARATOR . 'locale' . DIRECTORY_SEPARATOR,
|
||||||
//
|
//
|
||||||
'en_US.UTF-8',
|
'en_US.UTF-8',
|
||||||
'en_US',
|
'en_US',
|
||||||
|
'en_US',
|
||||||
|
'UTF-8',
|
||||||
'frontend',
|
'frontend',
|
||||||
'context',
|
'context',
|
||||||
'Original',
|
'Original',
|
||||||
'Original context frontend en_US',
|
'Original context frontend en_US',
|
||||||
|
null,
|
||||||
],
|
],
|
||||||
'gettext load ja' => [
|
'gettext load ja' => [
|
||||||
'ja_JP.UTF-8',
|
'ja_JP.UTF-8',
|
||||||
'admin',
|
'admin',
|
||||||
__DIR__ . 'includes/locale/',
|
__DIR__ . DIRECTORY_SEPARATOR . 'includes' . DIRECTORY_SEPARATOR . 'locale' . DIRECTORY_SEPARATOR,
|
||||||
//
|
//
|
||||||
'ja_JP.UTF-8',
|
'ja_JP.UTF-8',
|
||||||
'ja_JP',
|
'ja_JP',
|
||||||
|
'ja_JP',
|
||||||
|
'UTF-8',
|
||||||
'admin',
|
'admin',
|
||||||
null,
|
null,
|
||||||
'Original',
|
'Original',
|
||||||
'Translated admin ja_JP',
|
'Translated admin ja_JP',
|
||||||
|
null,
|
||||||
],
|
],
|
||||||
// mixed path and domain
|
// mixed path and domain [DEPRECATED]
|
||||||
'mixed path and domain' => [
|
'mixed path and domain [DEPRECATED]' => [
|
||||||
'en_US.UTF-8',
|
'en_US.UTF-8',
|
||||||
__DIR__ . 'includes/locale/',
|
__DIR__ . DIRECTORY_SEPARATOR . 'includes' . DIRECTORY_SEPARATOR . 'locale' . DIRECTORY_SEPARATOR,
|
||||||
'frontend',
|
'frontend',
|
||||||
//
|
//
|
||||||
'en_US.UTF-8',
|
'en_US.UTF-8',
|
||||||
'en_US',
|
'en_US',
|
||||||
|
'en_US',
|
||||||
|
'UTF-8',
|
||||||
'frontend',
|
'frontend',
|
||||||
'context',
|
'context',
|
||||||
'Original',
|
'Original',
|
||||||
'Original context frontend en_US',
|
'Original context frontend en_US',
|
||||||
|
'L10n constructor parameter switch is no longer supported. domain is 2nd, path is 3rd parameter'
|
||||||
|
],
|
||||||
|
// unset path
|
||||||
|
'unset path with locale and domain [DEPRECATED]' => [
|
||||||
|
'ja_JP.UTF-8',
|
||||||
|
'admin',
|
||||||
|
null,
|
||||||
|
//
|
||||||
|
'ja_JP.UTF-8',
|
||||||
|
'ja_JP',
|
||||||
|
'ja_JP',
|
||||||
|
'UTF-8',
|
||||||
|
'admin',
|
||||||
|
null,
|
||||||
|
'Original',
|
||||||
|
'Translated admin ja_JP',
|
||||||
|
'Empty path parameter is no longer allowed if locale and domain are set',
|
||||||
],
|
],
|
||||||
// null set
|
// null set
|
||||||
'empty load new ' => [
|
'empty load new ' => [
|
||||||
@@ -173,9 +183,12 @@ final class CoreLibsLanguageL10nTest extends TestCase
|
|||||||
'',
|
'',
|
||||||
'',
|
'',
|
||||||
'',
|
'',
|
||||||
|
'',
|
||||||
|
'',
|
||||||
null,
|
null,
|
||||||
'Original',
|
'Original',
|
||||||
'Original',
|
'Original',
|
||||||
|
null,
|
||||||
]
|
]
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
@@ -192,10 +205,13 @@ final class CoreLibsLanguageL10nTest extends TestCase
|
|||||||
* @param string|null $path
|
* @param string|null $path
|
||||||
* @param string $locale_expected
|
* @param string $locale_expected
|
||||||
* @param string $locale_set_expected
|
* @param string $locale_set_expected
|
||||||
|
* @param string $lang_expected
|
||||||
|
* @param string $encoding_expected
|
||||||
* @param string $domain_expected
|
* @param string $domain_expected
|
||||||
* @param ?string $context
|
* @param string|null $context
|
||||||
* @param string $original
|
* @param string $original
|
||||||
* @param string $translated
|
* @param string $translated
|
||||||
|
* @param string|null $deprecation_message
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function testL10nObject(
|
public function testL10nObject(
|
||||||
@@ -204,20 +220,36 @@ final class CoreLibsLanguageL10nTest extends TestCase
|
|||||||
?string $path,
|
?string $path,
|
||||||
string $locale_expected,
|
string $locale_expected,
|
||||||
string $locale_set_expected,
|
string $locale_set_expected,
|
||||||
|
string $lang_expected,
|
||||||
|
string $encoding_expected,
|
||||||
string $domain_expected,
|
string $domain_expected,
|
||||||
?string $context,
|
?string $context,
|
||||||
string $original,
|
string $original,
|
||||||
string $translated
|
string $translated,
|
||||||
|
?string $deprecation_message
|
||||||
): void {
|
): void {
|
||||||
|
if ($deprecation_message !== null) {
|
||||||
|
set_error_handler(
|
||||||
|
static function (int $errno, string $errstr): never {
|
||||||
|
throw new \Exception($errstr, $errno);
|
||||||
|
},
|
||||||
|
E_USER_DEPRECATED
|
||||||
|
);
|
||||||
|
// catch this with the message
|
||||||
|
$this->expectExceptionMessage($deprecation_message);
|
||||||
|
}
|
||||||
if ($locale === null) {
|
if ($locale === null) {
|
||||||
$l10n = new \CoreLibs\Language\L10n();
|
$l10n = new \CoreLibs\Language\L10n();
|
||||||
} elseif ($domain === null) {
|
} elseif ($domain === null) {
|
||||||
|
// same as if locale is null
|
||||||
$l10n = new \CoreLibs\Language\L10n($locale);
|
$l10n = new \CoreLibs\Language\L10n($locale);
|
||||||
} elseif ($path === null) {
|
} elseif ($path === null) {
|
||||||
|
// deprecated, path must be set
|
||||||
$l10n = new \CoreLibs\Language\L10n($locale, $domain);
|
$l10n = new \CoreLibs\Language\L10n($locale, $domain);
|
||||||
} else {
|
} else {
|
||||||
$l10n = new \CoreLibs\Language\L10n($locale, $domain, $path);
|
$l10n = new \CoreLibs\Language\L10n($locale, $domain, $path);
|
||||||
}
|
}
|
||||||
|
restore_error_handler();
|
||||||
// print "LOC: " . $locale . ", " . $l10n->getLocale() . ", " . $locale_expected . "\n";
|
// print "LOC: " . $locale . ", " . $l10n->getLocale() . ", " . $locale_expected . "\n";
|
||||||
// print "MO: " . $l10n->getMoFile() . "\n";
|
// print "MO: " . $l10n->getMoFile() . "\n";
|
||||||
$this->assertEquals(
|
$this->assertEquals(
|
||||||
@@ -248,6 +280,19 @@ final class CoreLibsLanguageL10nTest extends TestCase
|
|||||||
'Translated string assert failed in context: ' . $context
|
'Translated string assert failed in context: ' . $context
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
// test get locel as array
|
||||||
|
$locale = $l10n->getLocaleAsArray();
|
||||||
|
$this->assertEquals(
|
||||||
|
[
|
||||||
|
'locale' => $locale_expected,
|
||||||
|
'lang' => $lang_expected,
|
||||||
|
'domain' => $domain_expected,
|
||||||
|
'encoding' => $encoding_expected,
|
||||||
|
'path' => $path
|
||||||
|
],
|
||||||
|
$locale,
|
||||||
|
'getLocaleAsArray mismatch'
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
// l10nReloadMOfile and getTranslator
|
// l10nReloadMOfile and getTranslator
|
||||||
@@ -283,7 +328,7 @@ final class CoreLibsLanguageL10nTest extends TestCase
|
|||||||
// set 0-2
|
// set 0-2
|
||||||
'en_US.UTF-8',
|
'en_US.UTF-8',
|
||||||
'frontend',
|
'frontend',
|
||||||
__DIR__ . 'includes/locale/',
|
__DIR__ . DIRECTORY_SEPARATOR . 'includes' . DIRECTORY_SEPARATOR . 'locale' . DIRECTORY_SEPARATOR,
|
||||||
// status 3
|
// status 3
|
||||||
false,
|
false,
|
||||||
// to translate 4
|
// to translate 4
|
||||||
@@ -296,7 +341,7 @@ final class CoreLibsLanguageL10nTest extends TestCase
|
|||||||
// set new 8-10
|
// set new 8-10
|
||||||
'ja_JP.UTF-8',
|
'ja_JP.UTF-8',
|
||||||
'frontend',
|
'frontend',
|
||||||
__DIR__ . 'includes/locale/',
|
__DIR__ . DIRECTORY_SEPARATOR . 'includes' . DIRECTORY_SEPARATOR . 'locale' . DIRECTORY_SEPARATOR,
|
||||||
// status new 11
|
// status new 11
|
||||||
false,
|
false,
|
||||||
// check new setter 12-14
|
// check new setter 12-14
|
||||||
@@ -322,7 +367,7 @@ final class CoreLibsLanguageL10nTest extends TestCase
|
|||||||
// set new 8-10
|
// set new 8-10
|
||||||
'en_US.UTF-8',
|
'en_US.UTF-8',
|
||||||
'frontend',
|
'frontend',
|
||||||
__DIR__ . 'includes/locale/',
|
__DIR__ . DIRECTORY_SEPARATOR . 'includes' . DIRECTORY_SEPARATOR . 'locale' . DIRECTORY_SEPARATOR,
|
||||||
// status new 11
|
// status new 11
|
||||||
false,
|
false,
|
||||||
// check new setter 12-14
|
// check new setter 12-14
|
||||||
@@ -387,12 +432,8 @@ final class CoreLibsLanguageL10nTest extends TestCase
|
|||||||
string $domain_expected_b,
|
string $domain_expected_b,
|
||||||
string $translated_b
|
string $translated_b
|
||||||
): void {
|
): void {
|
||||||
if ($locale === null) {
|
if ($locale === null || $domain === null || $path === null) {
|
||||||
$l10n = new \CoreLibs\Language\L10n();
|
$l10n = new \CoreLibs\Language\L10n();
|
||||||
} elseif ($domain === null) {
|
|
||||||
$l10n = new \CoreLibs\Language\L10n($locale);
|
|
||||||
} elseif ($path === null) {
|
|
||||||
$l10n = new \CoreLibs\Language\L10n($locale, $domain);
|
|
||||||
} else {
|
} else {
|
||||||
$l10n = new \CoreLibs\Language\L10n($locale, $domain, $path);
|
$l10n = new \CoreLibs\Language\L10n($locale, $domain, $path);
|
||||||
}
|
}
|
||||||
@@ -494,16 +535,16 @@ final class CoreLibsLanguageL10nTest extends TestCase
|
|||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
// 0: locale
|
// 0: locale
|
||||||
// 1: path
|
// 1: domain
|
||||||
// 2: domain
|
// 2: path
|
||||||
// 3: context (null for none)
|
// 3: context (null for none)
|
||||||
// 4: single string
|
// 4: single string
|
||||||
// 5: plural string
|
// 5: plural string
|
||||||
// 6: array for each n value expected string
|
// 6: array for each n value expected string
|
||||||
'plural text en' => [
|
'plural text en' => [
|
||||||
'en_US',
|
'en_US',
|
||||||
__DIR__ . 'includes/locale/',
|
|
||||||
'admin',
|
'admin',
|
||||||
|
__DIR__ . DIRECTORY_SEPARATOR . 'includes' . DIRECTORY_SEPARATOR . 'locale' . DIRECTORY_SEPARATOR,
|
||||||
// context
|
// context
|
||||||
null,
|
null,
|
||||||
// text single/multi in
|
// text single/multi in
|
||||||
@@ -518,8 +559,8 @@ final class CoreLibsLanguageL10nTest extends TestCase
|
|||||||
],
|
],
|
||||||
'plural text context en' => [
|
'plural text context en' => [
|
||||||
'en_US',
|
'en_US',
|
||||||
__DIR__ . 'includes/locale/',
|
|
||||||
'admin',
|
'admin',
|
||||||
|
__DIR__ . DIRECTORY_SEPARATOR . 'includes' . DIRECTORY_SEPARATOR . 'locale' . DIRECTORY_SEPARATOR,
|
||||||
// context
|
// context
|
||||||
'context',
|
'context',
|
||||||
// text single/multi in
|
// text single/multi in
|
||||||
@@ -544,8 +585,8 @@ final class CoreLibsLanguageL10nTest extends TestCase
|
|||||||
* @testdox plural string test for locale $locale and domain $domain with $context [$_dataName]
|
* @testdox plural string test for locale $locale and domain $domain with $context [$_dataName]
|
||||||
*
|
*
|
||||||
* @param string $locale
|
* @param string $locale
|
||||||
* @param string $path
|
|
||||||
* @param string $domain
|
* @param string $domain
|
||||||
|
* @param string $path
|
||||||
* @param ?string $context
|
* @param ?string $context
|
||||||
* @param string $original_single
|
* @param string $original_single
|
||||||
* @param string $original_plural
|
* @param string $original_plural
|
||||||
@@ -555,8 +596,8 @@ final class CoreLibsLanguageL10nTest extends TestCase
|
|||||||
public function testNgettext(
|
public function testNgettext(
|
||||||
// config 0-3
|
// config 0-3
|
||||||
string $locale,
|
string $locale,
|
||||||
string $path,
|
|
||||||
string $domain,
|
string $domain,
|
||||||
|
string $path,
|
||||||
// context string
|
// context string
|
||||||
?string $context,
|
?string $context,
|
||||||
// input strings
|
// input strings
|
||||||
@@ -565,7 +606,7 @@ final class CoreLibsLanguageL10nTest extends TestCase
|
|||||||
// expected
|
// expected
|
||||||
array $expected_strings
|
array $expected_strings
|
||||||
): void {
|
): void {
|
||||||
$l10n = new \CoreLibs\Language\L10n($locale, $path, $domain, false);
|
$l10n = new \CoreLibs\Language\L10n($locale, $domain, $path);
|
||||||
|
|
||||||
foreach ($expected_strings as $n => $expected) {
|
foreach ($expected_strings as $n => $expected) {
|
||||||
if (empty($context)) {
|
if (empty($context)) {
|
||||||
@@ -981,7 +1022,7 @@ final class CoreLibsLanguageL10nTest extends TestCase
|
|||||||
'standard en' => [
|
'standard en' => [
|
||||||
'en_US.UTF-8',
|
'en_US.UTF-8',
|
||||||
'frontend',
|
'frontend',
|
||||||
__DIR__ . 'includes/locale/',
|
__DIR__ . DIRECTORY_SEPARATOR . 'includes' . DIRECTORY_SEPARATOR . 'locale' . DIRECTORY_SEPARATOR,
|
||||||
'UTF-8',
|
'UTF-8',
|
||||||
'Original',
|
'Original',
|
||||||
'Translated frontend en_US',
|
'Translated frontend en_US',
|
||||||
@@ -989,7 +1030,7 @@ final class CoreLibsLanguageL10nTest extends TestCase
|
|||||||
'standard ja' => [
|
'standard ja' => [
|
||||||
'ja_JP.UTF-8',
|
'ja_JP.UTF-8',
|
||||||
'admin',
|
'admin',
|
||||||
__DIR__ . 'includes/locale/',
|
__DIR__ . DIRECTORY_SEPARATOR . 'includes' . DIRECTORY_SEPARATOR . 'locale' . DIRECTORY_SEPARATOR,
|
||||||
'UTF-8',
|
'UTF-8',
|
||||||
'Original',
|
'Original',
|
||||||
'Translated admin ja_JP',
|
'Translated admin ja_JP',
|
||||||
@@ -1030,6 +1071,7 @@ final class CoreLibsLanguageL10nTest extends TestCase
|
|||||||
_textdomain($domain);
|
_textdomain($domain);
|
||||||
_bindtextdomain($domain, $path);
|
_bindtextdomain($domain, $path);
|
||||||
_bind_textdomain_codeset($domain, $encoding);
|
_bind_textdomain_codeset($domain, $encoding);
|
||||||
|
|
||||||
$this->assertEquals(
|
$this->assertEquals(
|
||||||
$translated,
|
$translated,
|
||||||
__($original),
|
__($original),
|
||||||
|
|||||||
11
README.md
11
README.md
@@ -4,7 +4,6 @@
|
|||||||
|
|
||||||
* Uses PSR-12
|
* Uses PSR-12
|
||||||
* tab indent instead of 4 spaces indent
|
* tab indent instead of 4 spaces indent
|
||||||
* Warning at 120 character length, error at 240 character length
|
|
||||||
|
|
||||||
## General information
|
## General information
|
||||||
|
|
||||||
@@ -24,9 +23,9 @@ There are three branches:
|
|||||||
### master
|
### master
|
||||||
|
|
||||||
The active branch, which is the namespace branch.
|
The active branch, which is the namespace branch.
|
||||||
Currently compatible with PHP 7.4 and 8.0
|
Compatible with PHP 8.1 or higher
|
||||||
|
|
||||||
### legacy
|
### legacy (deprecated)
|
||||||
|
|
||||||
The old non namepsace format layout.
|
The old non namepsace format layout.
|
||||||
This is fully deprecated and will no longer be maintaned.
|
This is fully deprecated and will no longer be maintaned.
|
||||||
@@ -39,17 +38,17 @@ Any current development is done here
|
|||||||
## Static checks
|
## Static checks
|
||||||
|
|
||||||
With phpstan (`4dev/checking/phpstan.sh`)
|
With phpstan (`4dev/checking/phpstan.sh`)
|
||||||
`phpstan`
|
`vendor/bin/phpstan`
|
||||||
|
|
||||||
With phan (`4dev/checking/phan.sh`)
|
With phan (`4dev/checking/phan.sh`)
|
||||||
`phan --progress-bar -C --analyze-twice`
|
`vendor/bin/phan --progress-bar -C --analyze-twice`
|
||||||
|
|
||||||
pslam is setup but not configured
|
pslam is setup but not configured
|
||||||
|
|
||||||
## Unit tests
|
## Unit tests
|
||||||
|
|
||||||
With phpunit (`4dev/checking/phpunit.sh`)
|
With phpunit (`4dev/checking/phpunit.sh`)
|
||||||
`phpunit -c $phpunit.xml 4dev/tests/`
|
`www/vendor/bin/phpunit -c $phpunit.xml 4dev/tests/`
|
||||||
|
|
||||||
## Other Notes
|
## Other Notes
|
||||||
|
|
||||||
|
|||||||
80
composer.lock
generated
80
composer.lock
generated
@@ -4,7 +4,7 @@
|
|||||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||||
"This file is @generated automatically"
|
"This file is @generated automatically"
|
||||||
],
|
],
|
||||||
"content-hash": "e0be39c8d67ae1599bb76d055debab50",
|
"content-hash": "d84c6906d304080e843d28d1b447cf8c",
|
||||||
"packages": [],
|
"packages": [],
|
||||||
"packages-dev": [
|
"packages-dev": [
|
||||||
{
|
{
|
||||||
@@ -272,16 +272,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "microsoft/tolerant-php-parser",
|
"name": "microsoft/tolerant-php-parser",
|
||||||
"version": "v0.1.1",
|
"version": "v0.1.2",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/microsoft/tolerant-php-parser.git",
|
"url": "https://github.com/microsoft/tolerant-php-parser.git",
|
||||||
"reference": "6a965617cf484355048ac6d2d3de7b6ec93abb16"
|
"reference": "3eccfd273323aaf69513e2f1c888393f5947804b"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/microsoft/tolerant-php-parser/zipball/6a965617cf484355048ac6d2d3de7b6ec93abb16",
|
"url": "https://api.github.com/repos/microsoft/tolerant-php-parser/zipball/3eccfd273323aaf69513e2f1c888393f5947804b",
|
||||||
"reference": "6a965617cf484355048ac6d2d3de7b6ec93abb16",
|
"reference": "3eccfd273323aaf69513e2f1c888393f5947804b",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -311,9 +311,9 @@
|
|||||||
"description": "Tolerant PHP-to-AST parser designed for IDE usage scenarios",
|
"description": "Tolerant PHP-to-AST parser designed for IDE usage scenarios",
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/microsoft/tolerant-php-parser/issues",
|
"issues": "https://github.com/microsoft/tolerant-php-parser/issues",
|
||||||
"source": "https://github.com/microsoft/tolerant-php-parser/tree/v0.1.1"
|
"source": "https://github.com/microsoft/tolerant-php-parser/tree/v0.1.2"
|
||||||
},
|
},
|
||||||
"time": "2021-07-16T21:28:12+00:00"
|
"time": "2022-10-05T17:30:19+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "netresearch/jsonmapper",
|
"name": "netresearch/jsonmapper",
|
||||||
@@ -368,16 +368,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phan/phan",
|
"name": "phan/phan",
|
||||||
"version": "5.4.1",
|
"version": "5.4.2",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/phan/phan.git",
|
"url": "https://github.com/phan/phan.git",
|
||||||
"reference": "fef40178a952bcfcc3f69b76989dd613c3d5c759"
|
"reference": "4f2870ed6fea320f62f3c3c63f3274d357a7980e"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/phan/phan/zipball/fef40178a952bcfcc3f69b76989dd613c3d5c759",
|
"url": "https://api.github.com/repos/phan/phan/zipball/4f2870ed6fea320f62f3c3c63f3274d357a7980e",
|
||||||
"reference": "fef40178a952bcfcc3f69b76989dd613c3d5c759",
|
"reference": "4f2870ed6fea320f62f3c3c63f3274d357a7980e",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -387,7 +387,7 @@
|
|||||||
"ext-json": "*",
|
"ext-json": "*",
|
||||||
"ext-tokenizer": "*",
|
"ext-tokenizer": "*",
|
||||||
"felixfbecker/advanced-json-rpc": "^3.0.4",
|
"felixfbecker/advanced-json-rpc": "^3.0.4",
|
||||||
"microsoft/tolerant-php-parser": "0.1.1",
|
"microsoft/tolerant-php-parser": "0.1.2",
|
||||||
"netresearch/jsonmapper": "^1.6.0|^2.0|^3.0|^4.0",
|
"netresearch/jsonmapper": "^1.6.0|^2.0|^3.0|^4.0",
|
||||||
"php": "^7.2.0|^8.0.0",
|
"php": "^7.2.0|^8.0.0",
|
||||||
"sabre/event": "^5.1.3",
|
"sabre/event": "^5.1.3",
|
||||||
@@ -441,9 +441,9 @@
|
|||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/phan/phan/issues",
|
"issues": "https://github.com/phan/phan/issues",
|
||||||
"source": "https://github.com/phan/phan/tree/5.4.1"
|
"source": "https://github.com/phan/phan/tree/5.4.2"
|
||||||
},
|
},
|
||||||
"time": "2022-08-26T00:49:07+00:00"
|
"time": "2023-03-03T17:20:24+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpdocumentor/reflection-common",
|
"name": "phpdocumentor/reflection-common",
|
||||||
@@ -884,16 +884,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/console",
|
"name": "symfony/console",
|
||||||
"version": "v6.2.5",
|
"version": "v6.2.7",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/console.git",
|
"url": "https://github.com/symfony/console.git",
|
||||||
"reference": "3e294254f2191762c1d137aed4b94e966965e985"
|
"reference": "cbad09eb8925b6ad4fb721c7a179344dc4a19d45"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/console/zipball/3e294254f2191762c1d137aed4b94e966965e985",
|
"url": "https://api.github.com/repos/symfony/console/zipball/cbad09eb8925b6ad4fb721c7a179344dc4a19d45",
|
||||||
"reference": "3e294254f2191762c1d137aed4b94e966965e985",
|
"reference": "cbad09eb8925b6ad4fb721c7a179344dc4a19d45",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -960,7 +960,7 @@
|
|||||||
"terminal"
|
"terminal"
|
||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"source": "https://github.com/symfony/console/tree/v6.2.5"
|
"source": "https://github.com/symfony/console/tree/v6.2.7"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -976,20 +976,20 @@
|
|||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2023-01-01T08:38:09+00:00"
|
"time": "2023-02-25T17:00:03+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/deprecation-contracts",
|
"name": "symfony/deprecation-contracts",
|
||||||
"version": "v3.2.0",
|
"version": "v3.2.1",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/deprecation-contracts.git",
|
"url": "https://github.com/symfony/deprecation-contracts.git",
|
||||||
"reference": "1ee04c65529dea5d8744774d474e7cbd2f1206d3"
|
"reference": "e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/1ee04c65529dea5d8744774d474e7cbd2f1206d3",
|
"url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e",
|
||||||
"reference": "1ee04c65529dea5d8744774d474e7cbd2f1206d3",
|
"reference": "e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -1027,7 +1027,7 @@
|
|||||||
"description": "A generic function and convention to trigger deprecation notices",
|
"description": "A generic function and convention to trigger deprecation notices",
|
||||||
"homepage": "https://symfony.com",
|
"homepage": "https://symfony.com",
|
||||||
"support": {
|
"support": {
|
||||||
"source": "https://github.com/symfony/deprecation-contracts/tree/v3.2.0"
|
"source": "https://github.com/symfony/deprecation-contracts/tree/v3.2.1"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -1043,7 +1043,7 @@
|
|||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2022-11-25T10:21:52+00:00"
|
"time": "2023-03-01T10:25:55+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/polyfill-ctype",
|
"name": "symfony/polyfill-ctype",
|
||||||
@@ -1460,16 +1460,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/service-contracts",
|
"name": "symfony/service-contracts",
|
||||||
"version": "v3.2.0",
|
"version": "v3.2.1",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/service-contracts.git",
|
"url": "https://github.com/symfony/service-contracts.git",
|
||||||
"reference": "aac98028c69df04ee77eb69b96b86ee51fbf4b75"
|
"reference": "a8c9cedf55f314f3a186041d19537303766df09a"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/service-contracts/zipball/aac98028c69df04ee77eb69b96b86ee51fbf4b75",
|
"url": "https://api.github.com/repos/symfony/service-contracts/zipball/a8c9cedf55f314f3a186041d19537303766df09a",
|
||||||
"reference": "aac98028c69df04ee77eb69b96b86ee51fbf4b75",
|
"reference": "a8c9cedf55f314f3a186041d19537303766df09a",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -1525,7 +1525,7 @@
|
|||||||
"standards"
|
"standards"
|
||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"source": "https://github.com/symfony/service-contracts/tree/v3.2.0"
|
"source": "https://github.com/symfony/service-contracts/tree/v3.2.1"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -1541,20 +1541,20 @@
|
|||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2022-11-25T10:21:52+00:00"
|
"time": "2023-03-01T10:32:47+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/string",
|
"name": "symfony/string",
|
||||||
"version": "v6.2.5",
|
"version": "v6.2.7",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/string.git",
|
"url": "https://github.com/symfony/string.git",
|
||||||
"reference": "b2dac0fa27b1ac0f9c0c0b23b43977f12308d0b0"
|
"reference": "67b8c1eec78296b85dc1c7d9743830160218993d"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/string/zipball/b2dac0fa27b1ac0f9c0c0b23b43977f12308d0b0",
|
"url": "https://api.github.com/repos/symfony/string/zipball/67b8c1eec78296b85dc1c7d9743830160218993d",
|
||||||
"reference": "b2dac0fa27b1ac0f9c0c0b23b43977f12308d0b0",
|
"reference": "67b8c1eec78296b85dc1c7d9743830160218993d",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -1611,7 +1611,7 @@
|
|||||||
"utf8"
|
"utf8"
|
||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"source": "https://github.com/symfony/string/tree/v6.2.5"
|
"source": "https://github.com/symfony/string/tree/v6.2.7"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -1627,7 +1627,7 @@
|
|||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2023-01-01T08:38:09+00:00"
|
"time": "2023-02-24T10:42:00+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "tysonandre/var_representation_polyfill",
|
"name": "tysonandre/var_representation_polyfill",
|
||||||
@@ -1755,7 +1755,9 @@
|
|||||||
"stability-flags": [],
|
"stability-flags": [],
|
||||||
"prefer-stable": false,
|
"prefer-stable": false,
|
||||||
"prefer-lowest": false,
|
"prefer-lowest": false,
|
||||||
"platform": [],
|
"platform": {
|
||||||
|
"php": ">=8.1"
|
||||||
|
},
|
||||||
"platform-dev": [],
|
"platform-dev": [],
|
||||||
"plugin-api-version": "2.3.0"
|
"plugin-api-version": "2.3.0"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,5 +8,7 @@ $_SERVER['HTTP_HOST'] = 'soba.tokyo.tequila.jp';
|
|||||||
// for whatever reason it does not load that from the confing.master.php
|
// for whatever reason it does not load that from the confing.master.php
|
||||||
// for includes/admin_header.php
|
// for includes/admin_header.php
|
||||||
define('BASE_NAME', '');
|
define('BASE_NAME', '');
|
||||||
|
define('SITE_DOMAIN', '');
|
||||||
|
define('HOST_NAME', 'soba.tokyo.tequila.jp');
|
||||||
|
|
||||||
// __END__
|
// __END__
|
||||||
|
|||||||
@@ -19,12 +19,12 @@ parameters:
|
|||||||
- www/configs/config.master.php
|
- www/configs/config.master.php
|
||||||
# if composer.json autoloader defined, this is not needed
|
# if composer.json autoloader defined, this is not needed
|
||||||
# - www/lib/autoloader.php
|
# - www/lib/autoloader.php
|
||||||
- www/vendor/autoload.php
|
# - www/vendor/autoload.php
|
||||||
excludePaths:
|
excludePaths:
|
||||||
# do not check old qq file uploader tests
|
# do not check old qq file uploader tests
|
||||||
- www/admin/qq_file_upload_*.php
|
- www/admin/qq_file_upload_*.php
|
||||||
# ignore all test files
|
# ignore all test files
|
||||||
- www/admin/class_test*.php
|
# - www/admin/class_test*.php
|
||||||
# extra in sub folder
|
# extra in sub folder
|
||||||
- www/admin/subfolder/class_test*.php
|
- www/admin/subfolder/class_test*.php
|
||||||
- www/admin/error_test.php
|
- www/admin/error_test.php
|
||||||
|
|||||||
@@ -2,5 +2,6 @@
|
|||||||
cacheResultFile="/tmp/phpunit-corelibs.result.cache"
|
cacheResultFile="/tmp/phpunit-corelibs.result.cache"
|
||||||
colors="true"
|
colors="true"
|
||||||
verbose="true"
|
verbose="true"
|
||||||
|
convertDeprecationsToExceptions="true"
|
||||||
>
|
>
|
||||||
</phpunit>
|
</phpunit>
|
||||||
|
|||||||
5
psalm-config.php
Normal file
5
psalm-config.php
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
define('BASE', '');
|
||||||
|
|
||||||
|
// __END__
|
||||||
26
psalm.xml
Normal file
26
psalm.xml
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<psalm
|
||||||
|
errorLevel="8"
|
||||||
|
resolveFromConfigFile="true"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xmlns="https://getpsalm.org/schema/config"
|
||||||
|
xsi:schemaLocation="https://getpsalm.org/schema/config vendor/vimeo/psalm/config.xsd"
|
||||||
|
autoloader="psalm-config.php"
|
||||||
|
findUnusedBaselineEntry="true"
|
||||||
|
findUnusedCode="true"
|
||||||
|
>
|
||||||
|
<projectFiles>
|
||||||
|
<file name="phpstan-conditional.php" />
|
||||||
|
<file name="phpstan-bootstrap.php" />
|
||||||
|
<directory name="www" />
|
||||||
|
<ignoreFiles>
|
||||||
|
<directory name="www/templates_c" />
|
||||||
|
<directory name="www/cache" />
|
||||||
|
<directory name="www/log" />
|
||||||
|
<directory name="www/media" />
|
||||||
|
<directory name="www/tmp" />
|
||||||
|
<directory name="www/vendor" />
|
||||||
|
<directory name="vendor" />
|
||||||
|
</ignoreFiles>
|
||||||
|
</projectFiles>
|
||||||
|
</psalm>
|
||||||
2
vendor/composer/autoload_real.php
vendored
2
vendor/composer/autoload_real.php
vendored
@@ -22,6 +22,8 @@ class ComposerAutoloaderInitdd705c6e8ab22e0d642372dec7767718
|
|||||||
return self::$loader;
|
return self::$loader;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
require __DIR__ . '/platform_check.php';
|
||||||
|
|
||||||
spl_autoload_register(array('ComposerAutoloaderInitdd705c6e8ab22e0d642372dec7767718', 'loadClassLoader'), true, true);
|
spl_autoload_register(array('ComposerAutoloaderInitdd705c6e8ab22e0d642372dec7767718', 'loadClassLoader'), true, true);
|
||||||
self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
|
self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
|
||||||
spl_autoload_unregister(array('ComposerAutoloaderInitdd705c6e8ab22e0d642372dec7767718', 'loadClassLoader'));
|
spl_autoload_unregister(array('ComposerAutoloaderInitdd705c6e8ab22e0d642372dec7767718', 'loadClassLoader'));
|
||||||
|
|||||||
86
vendor/composer/installed.json
vendored
86
vendor/composer/installed.json
vendored
@@ -277,17 +277,17 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "microsoft/tolerant-php-parser",
|
"name": "microsoft/tolerant-php-parser",
|
||||||
"version": "v0.1.1",
|
"version": "v0.1.2",
|
||||||
"version_normalized": "0.1.1.0",
|
"version_normalized": "0.1.2.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/microsoft/tolerant-php-parser.git",
|
"url": "https://github.com/microsoft/tolerant-php-parser.git",
|
||||||
"reference": "6a965617cf484355048ac6d2d3de7b6ec93abb16"
|
"reference": "3eccfd273323aaf69513e2f1c888393f5947804b"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/microsoft/tolerant-php-parser/zipball/6a965617cf484355048ac6d2d3de7b6ec93abb16",
|
"url": "https://api.github.com/repos/microsoft/tolerant-php-parser/zipball/3eccfd273323aaf69513e2f1c888393f5947804b",
|
||||||
"reference": "6a965617cf484355048ac6d2d3de7b6ec93abb16",
|
"reference": "3eccfd273323aaf69513e2f1c888393f5947804b",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -296,7 +296,7 @@
|
|||||||
"require-dev": {
|
"require-dev": {
|
||||||
"phpunit/phpunit": "^8.5.15"
|
"phpunit/phpunit": "^8.5.15"
|
||||||
},
|
},
|
||||||
"time": "2021-07-16T21:28:12+00:00",
|
"time": "2022-10-05T17:30:19+00:00",
|
||||||
"type": "library",
|
"type": "library",
|
||||||
"installation-source": "dist",
|
"installation-source": "dist",
|
||||||
"autoload": {
|
"autoload": {
|
||||||
@@ -319,7 +319,7 @@
|
|||||||
"description": "Tolerant PHP-to-AST parser designed for IDE usage scenarios",
|
"description": "Tolerant PHP-to-AST parser designed for IDE usage scenarios",
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/microsoft/tolerant-php-parser/issues",
|
"issues": "https://github.com/microsoft/tolerant-php-parser/issues",
|
||||||
"source": "https://github.com/microsoft/tolerant-php-parser/tree/v0.1.1"
|
"source": "https://github.com/microsoft/tolerant-php-parser/tree/v0.1.2"
|
||||||
},
|
},
|
||||||
"install-path": "../microsoft/tolerant-php-parser"
|
"install-path": "../microsoft/tolerant-php-parser"
|
||||||
},
|
},
|
||||||
@@ -379,17 +379,17 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phan/phan",
|
"name": "phan/phan",
|
||||||
"version": "5.4.1",
|
"version": "5.4.2",
|
||||||
"version_normalized": "5.4.1.0",
|
"version_normalized": "5.4.2.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/phan/phan.git",
|
"url": "https://github.com/phan/phan.git",
|
||||||
"reference": "fef40178a952bcfcc3f69b76989dd613c3d5c759"
|
"reference": "4f2870ed6fea320f62f3c3c63f3274d357a7980e"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/phan/phan/zipball/fef40178a952bcfcc3f69b76989dd613c3d5c759",
|
"url": "https://api.github.com/repos/phan/phan/zipball/4f2870ed6fea320f62f3c3c63f3274d357a7980e",
|
||||||
"reference": "fef40178a952bcfcc3f69b76989dd613c3d5c759",
|
"reference": "4f2870ed6fea320f62f3c3c63f3274d357a7980e",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -399,7 +399,7 @@
|
|||||||
"ext-json": "*",
|
"ext-json": "*",
|
||||||
"ext-tokenizer": "*",
|
"ext-tokenizer": "*",
|
||||||
"felixfbecker/advanced-json-rpc": "^3.0.4",
|
"felixfbecker/advanced-json-rpc": "^3.0.4",
|
||||||
"microsoft/tolerant-php-parser": "0.1.1",
|
"microsoft/tolerant-php-parser": "0.1.2",
|
||||||
"netresearch/jsonmapper": "^1.6.0|^2.0|^3.0|^4.0",
|
"netresearch/jsonmapper": "^1.6.0|^2.0|^3.0|^4.0",
|
||||||
"php": "^7.2.0|^8.0.0",
|
"php": "^7.2.0|^8.0.0",
|
||||||
"sabre/event": "^5.1.3",
|
"sabre/event": "^5.1.3",
|
||||||
@@ -419,7 +419,7 @@
|
|||||||
"ext-tokenizer": "Needed for fallback/polyfill parser support and file/line-based suppressions.",
|
"ext-tokenizer": "Needed for fallback/polyfill parser support and file/line-based suppressions.",
|
||||||
"ext-var_representation": "Suggested for converting values to strings in issue messages"
|
"ext-var_representation": "Suggested for converting values to strings in issue messages"
|
||||||
},
|
},
|
||||||
"time": "2022-08-26T00:49:07+00:00",
|
"time": "2023-03-03T17:20:24+00:00",
|
||||||
"bin": [
|
"bin": [
|
||||||
"phan",
|
"phan",
|
||||||
"phan_client",
|
"phan_client",
|
||||||
@@ -455,7 +455,7 @@
|
|||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/phan/phan/issues",
|
"issues": "https://github.com/phan/phan/issues",
|
||||||
"source": "https://github.com/phan/phan/tree/5.4.1"
|
"source": "https://github.com/phan/phan/tree/5.4.2"
|
||||||
},
|
},
|
||||||
"install-path": "../phan/phan"
|
"install-path": "../phan/phan"
|
||||||
},
|
},
|
||||||
@@ -922,17 +922,17 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/console",
|
"name": "symfony/console",
|
||||||
"version": "v6.2.5",
|
"version": "v6.2.7",
|
||||||
"version_normalized": "6.2.5.0",
|
"version_normalized": "6.2.7.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/console.git",
|
"url": "https://github.com/symfony/console.git",
|
||||||
"reference": "3e294254f2191762c1d137aed4b94e966965e985"
|
"reference": "cbad09eb8925b6ad4fb721c7a179344dc4a19d45"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/console/zipball/3e294254f2191762c1d137aed4b94e966965e985",
|
"url": "https://api.github.com/repos/symfony/console/zipball/cbad09eb8925b6ad4fb721c7a179344dc4a19d45",
|
||||||
"reference": "3e294254f2191762c1d137aed4b94e966965e985",
|
"reference": "cbad09eb8925b6ad4fb721c7a179344dc4a19d45",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -967,7 +967,7 @@
|
|||||||
"symfony/lock": "",
|
"symfony/lock": "",
|
||||||
"symfony/process": ""
|
"symfony/process": ""
|
||||||
},
|
},
|
||||||
"time": "2023-01-01T08:38:09+00:00",
|
"time": "2023-02-25T17:00:03+00:00",
|
||||||
"type": "library",
|
"type": "library",
|
||||||
"installation-source": "dist",
|
"installation-source": "dist",
|
||||||
"autoload": {
|
"autoload": {
|
||||||
@@ -1001,7 +1001,7 @@
|
|||||||
"terminal"
|
"terminal"
|
||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"source": "https://github.com/symfony/console/tree/v6.2.5"
|
"source": "https://github.com/symfony/console/tree/v6.2.7"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -1021,23 +1021,23 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/deprecation-contracts",
|
"name": "symfony/deprecation-contracts",
|
||||||
"version": "v3.2.0",
|
"version": "v3.2.1",
|
||||||
"version_normalized": "3.2.0.0",
|
"version_normalized": "3.2.1.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/deprecation-contracts.git",
|
"url": "https://github.com/symfony/deprecation-contracts.git",
|
||||||
"reference": "1ee04c65529dea5d8744774d474e7cbd2f1206d3"
|
"reference": "e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/1ee04c65529dea5d8744774d474e7cbd2f1206d3",
|
"url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e",
|
||||||
"reference": "1ee04c65529dea5d8744774d474e7cbd2f1206d3",
|
"reference": "e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"php": ">=8.1"
|
"php": ">=8.1"
|
||||||
},
|
},
|
||||||
"time": "2022-11-25T10:21:52+00:00",
|
"time": "2023-03-01T10:25:55+00:00",
|
||||||
"type": "library",
|
"type": "library",
|
||||||
"extra": {
|
"extra": {
|
||||||
"branch-alias": {
|
"branch-alias": {
|
||||||
@@ -1071,7 +1071,7 @@
|
|||||||
"description": "A generic function and convention to trigger deprecation notices",
|
"description": "A generic function and convention to trigger deprecation notices",
|
||||||
"homepage": "https://symfony.com",
|
"homepage": "https://symfony.com",
|
||||||
"support": {
|
"support": {
|
||||||
"source": "https://github.com/symfony/deprecation-contracts/tree/v3.2.0"
|
"source": "https://github.com/symfony/deprecation-contracts/tree/v3.2.1"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -1519,17 +1519,17 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/service-contracts",
|
"name": "symfony/service-contracts",
|
||||||
"version": "v3.2.0",
|
"version": "v3.2.1",
|
||||||
"version_normalized": "3.2.0.0",
|
"version_normalized": "3.2.1.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/service-contracts.git",
|
"url": "https://github.com/symfony/service-contracts.git",
|
||||||
"reference": "aac98028c69df04ee77eb69b96b86ee51fbf4b75"
|
"reference": "a8c9cedf55f314f3a186041d19537303766df09a"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/service-contracts/zipball/aac98028c69df04ee77eb69b96b86ee51fbf4b75",
|
"url": "https://api.github.com/repos/symfony/service-contracts/zipball/a8c9cedf55f314f3a186041d19537303766df09a",
|
||||||
"reference": "aac98028c69df04ee77eb69b96b86ee51fbf4b75",
|
"reference": "a8c9cedf55f314f3a186041d19537303766df09a",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -1542,7 +1542,7 @@
|
|||||||
"suggest": {
|
"suggest": {
|
||||||
"symfony/service-implementation": ""
|
"symfony/service-implementation": ""
|
||||||
},
|
},
|
||||||
"time": "2022-11-25T10:21:52+00:00",
|
"time": "2023-03-01T10:32:47+00:00",
|
||||||
"type": "library",
|
"type": "library",
|
||||||
"extra": {
|
"extra": {
|
||||||
"branch-alias": {
|
"branch-alias": {
|
||||||
@@ -1587,7 +1587,7 @@
|
|||||||
"standards"
|
"standards"
|
||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"source": "https://github.com/symfony/service-contracts/tree/v3.2.0"
|
"source": "https://github.com/symfony/service-contracts/tree/v3.2.1"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -1607,17 +1607,17 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/string",
|
"name": "symfony/string",
|
||||||
"version": "v6.2.5",
|
"version": "v6.2.7",
|
||||||
"version_normalized": "6.2.5.0",
|
"version_normalized": "6.2.7.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/string.git",
|
"url": "https://github.com/symfony/string.git",
|
||||||
"reference": "b2dac0fa27b1ac0f9c0c0b23b43977f12308d0b0"
|
"reference": "67b8c1eec78296b85dc1c7d9743830160218993d"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/string/zipball/b2dac0fa27b1ac0f9c0c0b23b43977f12308d0b0",
|
"url": "https://api.github.com/repos/symfony/string/zipball/67b8c1eec78296b85dc1c7d9743830160218993d",
|
||||||
"reference": "b2dac0fa27b1ac0f9c0c0b23b43977f12308d0b0",
|
"reference": "67b8c1eec78296b85dc1c7d9743830160218993d",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -1637,7 +1637,7 @@
|
|||||||
"symfony/translation-contracts": "^2.0|^3.0",
|
"symfony/translation-contracts": "^2.0|^3.0",
|
||||||
"symfony/var-exporter": "^5.4|^6.0"
|
"symfony/var-exporter": "^5.4|^6.0"
|
||||||
},
|
},
|
||||||
"time": "2023-01-01T08:38:09+00:00",
|
"time": "2023-02-24T10:42:00+00:00",
|
||||||
"type": "library",
|
"type": "library",
|
||||||
"installation-source": "dist",
|
"installation-source": "dist",
|
||||||
"autoload": {
|
"autoload": {
|
||||||
@@ -1676,7 +1676,7 @@
|
|||||||
"utf8"
|
"utf8"
|
||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"source": "https://github.com/symfony/string/tree/v6.2.5"
|
"source": "https://github.com/symfony/string/tree/v6.2.7"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
|
|||||||
58
vendor/composer/installed.php
vendored
58
vendor/composer/installed.php
vendored
@@ -1,24 +1,15 @@
|
|||||||
<?php return array(
|
<?php return array(
|
||||||
'root' => array(
|
'root' => array(
|
||||||
'name' => '__root__',
|
'name' => 'egrajp/development-corelibs-dev',
|
||||||
'pretty_version' => 'dev-master',
|
'pretty_version' => 'dev-master',
|
||||||
'version' => 'dev-master',
|
'version' => 'dev-master',
|
||||||
'reference' => '44f37b7f74e1fcbfbbdf26036117d14404011abd',
|
'reference' => NULL,
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../../',
|
'install_path' => __DIR__ . '/../../',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
'dev' => true,
|
'dev' => true,
|
||||||
),
|
),
|
||||||
'versions' => array(
|
'versions' => array(
|
||||||
'__root__' => array(
|
|
||||||
'pretty_version' => 'dev-master',
|
|
||||||
'version' => 'dev-master',
|
|
||||||
'reference' => '44f37b7f74e1fcbfbbdf26036117d14404011abd',
|
|
||||||
'type' => 'library',
|
|
||||||
'install_path' => __DIR__ . '/../../',
|
|
||||||
'aliases' => array(),
|
|
||||||
'dev_requirement' => false,
|
|
||||||
),
|
|
||||||
'composer/pcre' => array(
|
'composer/pcre' => array(
|
||||||
'pretty_version' => '3.1.0',
|
'pretty_version' => '3.1.0',
|
||||||
'version' => '3.1.0.0',
|
'version' => '3.1.0.0',
|
||||||
@@ -46,6 +37,15 @@
|
|||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
'dev_requirement' => true,
|
'dev_requirement' => true,
|
||||||
),
|
),
|
||||||
|
'egrajp/development-corelibs-dev' => array(
|
||||||
|
'pretty_version' => 'dev-master',
|
||||||
|
'version' => 'dev-master',
|
||||||
|
'reference' => NULL,
|
||||||
|
'type' => 'library',
|
||||||
|
'install_path' => __DIR__ . '/../../',
|
||||||
|
'aliases' => array(),
|
||||||
|
'dev_requirement' => false,
|
||||||
|
),
|
||||||
'felixfbecker/advanced-json-rpc' => array(
|
'felixfbecker/advanced-json-rpc' => array(
|
||||||
'pretty_version' => 'v3.2.1',
|
'pretty_version' => 'v3.2.1',
|
||||||
'version' => '3.2.1.0',
|
'version' => '3.2.1.0',
|
||||||
@@ -56,9 +56,9 @@
|
|||||||
'dev_requirement' => true,
|
'dev_requirement' => true,
|
||||||
),
|
),
|
||||||
'microsoft/tolerant-php-parser' => array(
|
'microsoft/tolerant-php-parser' => array(
|
||||||
'pretty_version' => 'v0.1.1',
|
'pretty_version' => 'v0.1.2',
|
||||||
'version' => '0.1.1.0',
|
'version' => '0.1.2.0',
|
||||||
'reference' => '6a965617cf484355048ac6d2d3de7b6ec93abb16',
|
'reference' => '3eccfd273323aaf69513e2f1c888393f5947804b',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../microsoft/tolerant-php-parser',
|
'install_path' => __DIR__ . '/../microsoft/tolerant-php-parser',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
@@ -74,9 +74,9 @@
|
|||||||
'dev_requirement' => true,
|
'dev_requirement' => true,
|
||||||
),
|
),
|
||||||
'phan/phan' => array(
|
'phan/phan' => array(
|
||||||
'pretty_version' => '5.4.1',
|
'pretty_version' => '5.4.2',
|
||||||
'version' => '5.4.1.0',
|
'version' => '5.4.2.0',
|
||||||
'reference' => 'fef40178a952bcfcc3f69b76989dd613c3d5c759',
|
'reference' => '4f2870ed6fea320f62f3c3c63f3274d357a7980e',
|
||||||
'type' => 'project',
|
'type' => 'project',
|
||||||
'install_path' => __DIR__ . '/../phan/phan',
|
'install_path' => __DIR__ . '/../phan/phan',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
@@ -161,18 +161,18 @@
|
|||||||
'dev_requirement' => true,
|
'dev_requirement' => true,
|
||||||
),
|
),
|
||||||
'symfony/console' => array(
|
'symfony/console' => array(
|
||||||
'pretty_version' => 'v6.2.5',
|
'pretty_version' => 'v6.2.7',
|
||||||
'version' => '6.2.5.0',
|
'version' => '6.2.7.0',
|
||||||
'reference' => '3e294254f2191762c1d137aed4b94e966965e985',
|
'reference' => 'cbad09eb8925b6ad4fb721c7a179344dc4a19d45',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../symfony/console',
|
'install_path' => __DIR__ . '/../symfony/console',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
'dev_requirement' => true,
|
'dev_requirement' => true,
|
||||||
),
|
),
|
||||||
'symfony/deprecation-contracts' => array(
|
'symfony/deprecation-contracts' => array(
|
||||||
'pretty_version' => 'v3.2.0',
|
'pretty_version' => 'v3.2.1',
|
||||||
'version' => '3.2.0.0',
|
'version' => '3.2.1.0',
|
||||||
'reference' => '1ee04c65529dea5d8744774d474e7cbd2f1206d3',
|
'reference' => 'e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../symfony/deprecation-contracts',
|
'install_path' => __DIR__ . '/../symfony/deprecation-contracts',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
@@ -224,18 +224,18 @@
|
|||||||
'dev_requirement' => true,
|
'dev_requirement' => true,
|
||||||
),
|
),
|
||||||
'symfony/service-contracts' => array(
|
'symfony/service-contracts' => array(
|
||||||
'pretty_version' => 'v3.2.0',
|
'pretty_version' => 'v3.2.1',
|
||||||
'version' => '3.2.0.0',
|
'version' => '3.2.1.0',
|
||||||
'reference' => 'aac98028c69df04ee77eb69b96b86ee51fbf4b75',
|
'reference' => 'a8c9cedf55f314f3a186041d19537303766df09a',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../symfony/service-contracts',
|
'install_path' => __DIR__ . '/../symfony/service-contracts',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
'dev_requirement' => true,
|
'dev_requirement' => true,
|
||||||
),
|
),
|
||||||
'symfony/string' => array(
|
'symfony/string' => array(
|
||||||
'pretty_version' => 'v6.2.5',
|
'pretty_version' => 'v6.2.7',
|
||||||
'version' => '6.2.5.0',
|
'version' => '6.2.7.0',
|
||||||
'reference' => 'b2dac0fa27b1ac0f9c0c0b23b43977f12308d0b0',
|
'reference' => '67b8c1eec78296b85dc1c7d9743830160218993d',
|
||||||
'type' => 'library',
|
'type' => 'library',
|
||||||
'install_path' => __DIR__ . '/../symfony/string',
|
'install_path' => __DIR__ . '/../symfony/string',
|
||||||
'aliases' => array(),
|
'aliases' => array(),
|
||||||
|
|||||||
26
vendor/composer/platform_check.php
vendored
Normal file
26
vendor/composer/platform_check.php
vendored
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
// platform_check.php @generated by Composer
|
||||||
|
|
||||||
|
$issues = array();
|
||||||
|
|
||||||
|
if (!(PHP_VERSION_ID >= 80100)) {
|
||||||
|
$issues[] = 'Your Composer dependencies require a PHP version ">= 8.1.0". You are running ' . PHP_VERSION . '.';
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($issues) {
|
||||||
|
if (!headers_sent()) {
|
||||||
|
header('HTTP/1.1 500 Internal Server Error');
|
||||||
|
}
|
||||||
|
if (!ini_get('display_errors')) {
|
||||||
|
if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
|
||||||
|
fwrite(STDERR, 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . implode(PHP_EOL, $issues) . PHP_EOL.PHP_EOL);
|
||||||
|
} elseif (!headers_sent()) {
|
||||||
|
echo 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . str_replace('You are running '.PHP_VERSION.'.', '', implode(PHP_EOL, $issues)) . PHP_EOL.PHP_EOL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
trigger_error(
|
||||||
|
'Composer detected issues in your platform: ' . implode(' ', $issues),
|
||||||
|
E_USER_ERROR
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
parameters:
|
|
||||||
level: 2
|
|
||||||
paths:
|
|
||||||
- src/
|
|
||||||
ignoreErrors:
|
|
||||||
# phpstan issue, see: https://github.com/phpstan/phpstan/issues/1306
|
|
||||||
- "/Variable .unaryExpression might not be defined./"
|
|
||||||
@@ -31,7 +31,7 @@ trait NamespacedNameTrait {
|
|||||||
return ResolvedName::buildName($this->getNameParts(), $content);
|
return ResolvedName::buildName($this->getNameParts(), $content);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($namespaceDefinition->name !== null) {
|
if ($namespaceDefinition->name instanceof QualifiedName) {
|
||||||
$resolvedName = ResolvedName::buildName($namespaceDefinition->name->nameParts, $content);
|
$resolvedName = ResolvedName::buildName($namespaceDefinition->name->nameParts, $content);
|
||||||
} else {
|
} else {
|
||||||
$resolvedName = ResolvedName::buildName([], $content);
|
$resolvedName = ResolvedName::buildName([], $content);
|
||||||
@@ -47,4 +47,4 @@ trait NamespacedNameTrait {
|
|||||||
}
|
}
|
||||||
return $resolvedName;
|
return $resolvedName;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -91,7 +91,7 @@ abstract class Node implements \JsonSerializable {
|
|||||||
* Gets first child that is an instance of one of the provided classes.
|
* Gets first child that is an instance of one of the provided classes.
|
||||||
* Returns null if there is no match.
|
* Returns null if there is no match.
|
||||||
*
|
*
|
||||||
* @param array ...$classNames
|
* @param string ...$classNames
|
||||||
* @return Node|null
|
* @return Node|null
|
||||||
*/
|
*/
|
||||||
public function getFirstChildNode(...$classNames) {
|
public function getFirstChildNode(...$classNames) {
|
||||||
@@ -117,7 +117,7 @@ abstract class Node implements \JsonSerializable {
|
|||||||
* Gets first descendant node that is an instance of one of the provided classes.
|
* Gets first descendant node that is an instance of one of the provided classes.
|
||||||
* Returns null if there is no match.
|
* Returns null if there is no match.
|
||||||
*
|
*
|
||||||
* @param array ...$classNames
|
* @param string ...$classNames
|
||||||
* @return Node|null
|
* @return Node|null
|
||||||
*/
|
*/
|
||||||
public function getFirstDescendantNode(...$classNames) {
|
public function getFirstDescendantNode(...$classNames) {
|
||||||
@@ -417,7 +417,7 @@ abstract class Node implements \JsonSerializable {
|
|||||||
return $this->getRoot()->fileContents;
|
return $this->getRoot()->fileContents;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getUri() : string {
|
public function getUri() : ?string {
|
||||||
return $this->getRoot()->uri;
|
return $this->getRoot()->uri;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -8,10 +8,11 @@ namespace Microsoft\PhpParser\Node\Expression;
|
|||||||
|
|
||||||
use Microsoft\PhpParser\Node\DelimitedList;
|
use Microsoft\PhpParser\Node\DelimitedList;
|
||||||
use Microsoft\PhpParser\Node\Expression;
|
use Microsoft\PhpParser\Node\Expression;
|
||||||
|
use Microsoft\PhpParser\Node\QualifiedName;
|
||||||
use Microsoft\PhpParser\Token;
|
use Microsoft\PhpParser\Token;
|
||||||
|
|
||||||
class CallExpression extends Expression {
|
class CallExpression extends Expression {
|
||||||
/** @var Expression */
|
/** @var QualifiedName|Expression */
|
||||||
public $callableExpression;
|
public $callableExpression;
|
||||||
|
|
||||||
/** @var Token */
|
/** @var Token */
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ class YieldExpression extends Expression {
|
|||||||
/** @var Token */
|
/** @var Token */
|
||||||
public $yieldOrYieldFromKeyword;
|
public $yieldOrYieldFromKeyword;
|
||||||
|
|
||||||
/** @var ArrayElement */
|
/** @var ArrayElement|null */
|
||||||
public $arrayElement;
|
public $arrayElement;
|
||||||
|
|
||||||
const CHILD_NAMES = ['yieldOrYieldFromKeyword', 'arrayElement'];
|
const CHILD_NAMES = ['yieldOrYieldFromKeyword', 'arrayElement'];
|
||||||
|
|||||||
29
vendor/microsoft/tolerant-php-parser/src/Node/ParenthesizedIntersectionType.php
vendored
Normal file
29
vendor/microsoft/tolerant-php-parser/src/Node/ParenthesizedIntersectionType.php
vendored
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
<?php
|
||||||
|
/*---------------------------------------------------------------------------------------------
|
||||||
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
|
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||||
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
namespace Microsoft\PhpParser\Node;
|
||||||
|
|
||||||
|
use Microsoft\PhpParser\MissingToken;
|
||||||
|
use Microsoft\PhpParser\Node;
|
||||||
|
use Microsoft\PhpParser\Node\DelimitedList\QualifiedNameList;
|
||||||
|
use Microsoft\PhpParser\Token;
|
||||||
|
|
||||||
|
class ParenthesizedIntersectionType extends Node{
|
||||||
|
/** @var Token */
|
||||||
|
public $openParen;
|
||||||
|
|
||||||
|
/** @var QualifiedNameList|MissingToken */
|
||||||
|
public $children;
|
||||||
|
|
||||||
|
/** @var Token */
|
||||||
|
public $closeParen;
|
||||||
|
|
||||||
|
const CHILD_NAMES = [
|
||||||
|
'openParen',
|
||||||
|
'children',
|
||||||
|
'closeParen'
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -13,7 +13,7 @@ class SourceFileNode extends Node {
|
|||||||
/** @var string */
|
/** @var string */
|
||||||
public $fileContents;
|
public $fileContents;
|
||||||
|
|
||||||
/** @var string */
|
/** @var ?string */
|
||||||
public $uri;
|
public $uri;
|
||||||
|
|
||||||
/** @var Node[] */
|
/** @var Node[] */
|
||||||
|
|||||||
@@ -22,9 +22,12 @@ class ClassDeclaration extends StatementNode implements NamespacedNameInterface,
|
|||||||
/** @var AttributeGroup[]|null */
|
/** @var AttributeGroup[]|null */
|
||||||
public $attributes;
|
public $attributes;
|
||||||
|
|
||||||
/** @var Token */
|
/** @var Token abstract/final/readonly modifier */
|
||||||
public $abstractOrFinalModifier;
|
public $abstractOrFinalModifier;
|
||||||
|
|
||||||
|
/** @var Token[] additional abstract/final/readonly modifiers */
|
||||||
|
public $modifiers;
|
||||||
|
|
||||||
/** @var Token */
|
/** @var Token */
|
||||||
public $classKeyword;
|
public $classKeyword;
|
||||||
|
|
||||||
@@ -43,6 +46,7 @@ class ClassDeclaration extends StatementNode implements NamespacedNameInterface,
|
|||||||
const CHILD_NAMES = [
|
const CHILD_NAMES = [
|
||||||
'attributes',
|
'attributes',
|
||||||
'abstractOrFinalModifier',
|
'abstractOrFinalModifier',
|
||||||
|
'modifiers',
|
||||||
'classKeyword',
|
'classKeyword',
|
||||||
'name',
|
'name',
|
||||||
'classBaseClause',
|
'classBaseClause',
|
||||||
|
|||||||
45
vendor/microsoft/tolerant-php-parser/src/Node/Statement/HaltCompilerStatement.php
vendored
Normal file
45
vendor/microsoft/tolerant-php-parser/src/Node/Statement/HaltCompilerStatement.php
vendored
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
<?php
|
||||||
|
/*---------------------------------------------------------------------------------------------
|
||||||
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||||
|
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||||
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
namespace Microsoft\PhpParser\Node\Statement;
|
||||||
|
|
||||||
|
use Microsoft\PhpParser\Node\Expression;
|
||||||
|
use Microsoft\PhpParser\Token;
|
||||||
|
|
||||||
|
class HaltCompilerStatement extends Expression {
|
||||||
|
|
||||||
|
/** @var Token */
|
||||||
|
public $haltCompilerKeyword;
|
||||||
|
|
||||||
|
/** @var Token */
|
||||||
|
public $openParen;
|
||||||
|
|
||||||
|
/** @var Token */
|
||||||
|
public $closeParen;
|
||||||
|
|
||||||
|
/** @var Token (there is an implicit ')' before php close tags (`?>`)) */
|
||||||
|
public $semicolonOrCloseTag;
|
||||||
|
|
||||||
|
/** @var Token|null TokenKind::InlineHtml data unless there are no bytes (This is optional if there is nothing after the semicolon) */
|
||||||
|
public $data;
|
||||||
|
|
||||||
|
const CHILD_NAMES = [
|
||||||
|
'haltCompilerKeyword',
|
||||||
|
'openParen',
|
||||||
|
'closeParen',
|
||||||
|
'semicolonOrCloseTag',
|
||||||
|
'data',
|
||||||
|
];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
public function getHaltCompilerOffset() {
|
||||||
|
// This accounts for the fact that PHP close tags may include a single newline,
|
||||||
|
// and that $this->data may be null.
|
||||||
|
return $this->semicolonOrCloseTag->getEndPosition();
|
||||||
|
}
|
||||||
|
}
|
||||||
276
vendor/microsoft/tolerant-php-parser/src/Parser.php
vendored
276
vendor/microsoft/tolerant-php-parser/src/Parser.php
vendored
@@ -6,6 +6,7 @@
|
|||||||
|
|
||||||
namespace Microsoft\PhpParser;
|
namespace Microsoft\PhpParser;
|
||||||
|
|
||||||
|
use Closure;
|
||||||
use Microsoft\PhpParser\Node\AnonymousFunctionUseClause;
|
use Microsoft\PhpParser\Node\AnonymousFunctionUseClause;
|
||||||
use Microsoft\PhpParser\Node\ArrayElement;
|
use Microsoft\PhpParser\Node\ArrayElement;
|
||||||
use Microsoft\PhpParser\Node\Attribute;
|
use Microsoft\PhpParser\Node\Attribute;
|
||||||
@@ -70,6 +71,7 @@ use Microsoft\PhpParser\Node\MissingMemberDeclaration;
|
|||||||
use Microsoft\PhpParser\Node\NamespaceAliasingClause;
|
use Microsoft\PhpParser\Node\NamespaceAliasingClause;
|
||||||
use Microsoft\PhpParser\Node\NamespaceUseGroupClause;
|
use Microsoft\PhpParser\Node\NamespaceUseGroupClause;
|
||||||
use Microsoft\PhpParser\Node\NumericLiteral;
|
use Microsoft\PhpParser\Node\NumericLiteral;
|
||||||
|
use Microsoft\PhpParser\Node\ParenthesizedIntersectionType;
|
||||||
use Microsoft\PhpParser\Node\PropertyDeclaration;
|
use Microsoft\PhpParser\Node\PropertyDeclaration;
|
||||||
use Microsoft\PhpParser\Node\ReservedWord;
|
use Microsoft\PhpParser\Node\ReservedWord;
|
||||||
use Microsoft\PhpParser\Node\StringLiteral;
|
use Microsoft\PhpParser\Node\StringLiteral;
|
||||||
@@ -95,6 +97,7 @@ use Microsoft\PhpParser\Node\Statement\{
|
|||||||
ForStatement,
|
ForStatement,
|
||||||
FunctionDeclaration,
|
FunctionDeclaration,
|
||||||
GotoStatement,
|
GotoStatement,
|
||||||
|
HaltCompilerStatement,
|
||||||
IfStatementNode,
|
IfStatementNode,
|
||||||
InlineHtml,
|
InlineHtml,
|
||||||
InterfaceDeclaration,
|
InterfaceDeclaration,
|
||||||
@@ -144,8 +147,9 @@ class Parser {
|
|||||||
[TokenKind::ArrayKeyword, TokenKind::CallableKeyword, TokenKind::BoolReservedWord,
|
[TokenKind::ArrayKeyword, TokenKind::CallableKeyword, TokenKind::BoolReservedWord,
|
||||||
TokenKind::FloatReservedWord, TokenKind::IntReservedWord, TokenKind::StringReservedWord,
|
TokenKind::FloatReservedWord, TokenKind::IntReservedWord, TokenKind::StringReservedWord,
|
||||||
TokenKind::ObjectReservedWord, TokenKind::NullReservedWord, TokenKind::FalseReservedWord,
|
TokenKind::ObjectReservedWord, TokenKind::NullReservedWord, TokenKind::FalseReservedWord,
|
||||||
TokenKind::IterableReservedWord, TokenKind::MixedReservedWord]; // TODO update spec
|
TokenKind::TrueReservedWord, TokenKind::IterableReservedWord, TokenKind::MixedReservedWord,
|
||||||
$this->returnTypeDeclarationTokens = \array_merge([TokenKind::VoidReservedWord, TokenKind::NullReservedWord, TokenKind::FalseReservedWord, TokenKind::StaticKeyword], $this->parameterTypeDeclarationTokens);
|
TokenKind::VoidReservedWord, TokenKind::NeverReservedWord]; // TODO update spec
|
||||||
|
$this->returnTypeDeclarationTokens = \array_merge([TokenKind::StaticKeyword], $this->parameterTypeDeclarationTokens);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -557,10 +561,8 @@ class Parser {
|
|||||||
// class-declaration
|
// class-declaration
|
||||||
case TokenKind::FinalKeyword:
|
case TokenKind::FinalKeyword:
|
||||||
case TokenKind::AbstractKeyword:
|
case TokenKind::AbstractKeyword:
|
||||||
if (!$this->lookahead(TokenKind::ClassKeyword)) {
|
case TokenKind::ReadonlyKeyword:
|
||||||
$this->advanceToken();
|
// fallthrough
|
||||||
return new SkippedToken($token);
|
|
||||||
}
|
|
||||||
case TokenKind::ClassKeyword:
|
case TokenKind::ClassKeyword:
|
||||||
return $this->parseClassDeclaration($parentNode);
|
return $this->parseClassDeclaration($parentNode);
|
||||||
|
|
||||||
@@ -614,6 +616,15 @@ class Parser {
|
|||||||
|
|
||||||
case TokenKind::UnsetKeyword:
|
case TokenKind::UnsetKeyword:
|
||||||
return $this->parseUnsetStatement($parentNode);
|
return $this->parseUnsetStatement($parentNode);
|
||||||
|
|
||||||
|
case TokenKind::HaltCompilerKeyword:
|
||||||
|
if ($parentNode instanceof SourceFileNode) {
|
||||||
|
return $this->parseHaltCompilerStatement($parentNode);
|
||||||
|
}
|
||||||
|
// __halt_compiler is a fatal compile error anywhere other than the top level.
|
||||||
|
// It won't be seen elsewhere in other programs - warn about the token being unexpected.
|
||||||
|
$this->advanceToken();
|
||||||
|
return new SkippedToken($token);
|
||||||
}
|
}
|
||||||
|
|
||||||
$expressionStatement = new ExpressionStatement();
|
$expressionStatement = new ExpressionStatement();
|
||||||
@@ -657,10 +668,20 @@ class Parser {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** @return Token[] */
|
||||||
|
private function parseClassModifiers(): array {
|
||||||
|
$modifiers = [];
|
||||||
|
while ($token = $this->eatOptional(TokenKind::AbstractKeyword, TokenKind::FinalKeyword, TokenKind::ReadonlyKeyword)) {
|
||||||
|
$modifiers[] = $token;
|
||||||
|
}
|
||||||
|
return $modifiers;
|
||||||
|
}
|
||||||
|
|
||||||
private function parseClassDeclaration($parentNode) : Node {
|
private function parseClassDeclaration($parentNode) : Node {
|
||||||
$classNode = new ClassDeclaration(); // TODO verify not nested
|
$classNode = new ClassDeclaration(); // TODO verify not nested
|
||||||
$classNode->parent = $parentNode;
|
$classNode->parent = $parentNode;
|
||||||
$classNode->abstractOrFinalModifier = $this->eatOptional(TokenKind::AbstractKeyword, TokenKind::FinalKeyword);
|
$classNode->abstractOrFinalModifier = $this->eatOptional(TokenKind::AbstractKeyword, TokenKind::FinalKeyword, TokenKind::ReadonlyKeyword);
|
||||||
|
$classNode->modifiers = $this->parseClassModifiers();
|
||||||
$classNode->classKeyword = $this->eat1(TokenKind::ClassKeyword);
|
$classNode->classKeyword = $this->eat1(TokenKind::ClassKeyword);
|
||||||
$classNode->name = $this->eat($this->nameOrReservedWordTokens); // TODO should be any
|
$classNode->name = $this->eat($this->nameOrReservedWordTokens); // TODO should be any
|
||||||
$classNode->name->kind = TokenKind::Name;
|
$classNode->name->kind = TokenKind::Name;
|
||||||
@@ -838,9 +859,6 @@ class Parser {
|
|||||||
if (end($children) instanceof MissingToken && ($children[\count($children) - 2]->kind ?? null) === TokenKind::AmpersandToken) {
|
if (end($children) instanceof MissingToken && ($children[\count($children) - 2]->kind ?? null) === TokenKind::AmpersandToken) {
|
||||||
array_pop($parameter->typeDeclarationList->children);
|
array_pop($parameter->typeDeclarationList->children);
|
||||||
$parameter->byRefToken = array_pop($parameter->typeDeclarationList->children);
|
$parameter->byRefToken = array_pop($parameter->typeDeclarationList->children);
|
||||||
if (!$parameter->typeDeclarationList->children) {
|
|
||||||
unset($parameter->typeDeclarationList);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} elseif ($parameter->questionToken) {
|
} elseif ($parameter->questionToken) {
|
||||||
// TODO ParameterType?
|
// TODO ParameterType?
|
||||||
@@ -882,27 +900,22 @@ class Parser {
|
|||||||
/**
|
/**
|
||||||
* Attempt to parse the return type after the `:` and optional `?` token.
|
* Attempt to parse the return type after the `:` and optional `?` token.
|
||||||
*
|
*
|
||||||
|
* TODO: Consider changing the return type to a new class TypeList in a future major release?
|
||||||
|
* ParenthesizedIntersectionType is not a qualified name.
|
||||||
* @return DelimitedList\QualifiedNameList|null
|
* @return DelimitedList\QualifiedNameList|null
|
||||||
*/
|
*/
|
||||||
private function parseReturnTypeDeclarationList($parentNode) {
|
private function parseReturnTypeDeclarationList($parentNode) {
|
||||||
$result = $this->parseDelimitedList(
|
return $this->parseUnionTypeDeclarationList(
|
||||||
DelimitedList\QualifiedNameList::class,
|
$parentNode,
|
||||||
self::TYPE_DELIMITER_TOKENS,
|
function ($token): bool {
|
||||||
function ($token) {
|
return \in_array($token->kind, $this->returnTypeDeclarationTokens, true) ||
|
||||||
return \in_array($token->kind, $this->returnTypeDeclarationTokens, true) || $this->isQualifiedNameStart($token);
|
$this->isQualifiedNameStart($token);
|
||||||
},
|
},
|
||||||
function ($parentNode) {
|
function ($parentNode) {
|
||||||
return $this->parseReturnTypeDeclaration($parentNode);
|
return $this->parseReturnTypeDeclaration($parentNode);
|
||||||
},
|
},
|
||||||
$parentNode,
|
TokenKind::ReturnType
|
||||||
false);
|
);
|
||||||
|
|
||||||
// Add a MissingToken so that this will warn about `function () : T| {}`
|
|
||||||
// TODO: Make this a reusable abstraction?
|
|
||||||
if ($result && in_array(end($result->children)->kind ?? null, self::TYPE_DELIMITER_TOKENS)) {
|
|
||||||
$result->children[] = new MissingToken(TokenKind::ReturnType, $this->token->fullStart);
|
|
||||||
}
|
|
||||||
return $result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private function parseReturnTypeDeclaration($parentNode) {
|
private function parseReturnTypeDeclaration($parentNode) {
|
||||||
@@ -917,28 +930,109 @@ class Parser {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Parse a union type such as A, A|B, A&B, A|(B&C), rejecting invalid syntax combinations.
|
||||||
|
*
|
||||||
* @param Node $parentNode
|
* @param Node $parentNode
|
||||||
|
* @param Closure(Token):bool $isTypeStart
|
||||||
|
* @param Closure(Node):(Node|Token|null) $parseType
|
||||||
|
* @param int $expectedTypeKind expected kind for token type
|
||||||
|
* @return DelimitedList\QualifiedNameList|null
|
||||||
|
*/
|
||||||
|
private function parseUnionTypeDeclarationList($parentNode, Closure $isTypeStart, Closure $parseType, int $expectedTypeKind) {
|
||||||
|
$result = new DelimitedList\QualifiedNameList();
|
||||||
|
$token = $this->getCurrentToken();
|
||||||
|
$delimiter = self::TYPE_DELIMITER_TOKENS;
|
||||||
|
do {
|
||||||
|
if ($token->kind === TokenKind::OpenParenToken || $isTypeStart($token)) {
|
||||||
|
// Forbid mixing A&(B&C) if '&' was already seen
|
||||||
|
$openParen = in_array(TokenKind::BarToken, $delimiter, true)
|
||||||
|
? $this->eatOptional(TokenKind::OpenParenToken)
|
||||||
|
: null;
|
||||||
|
if ($openParen) {
|
||||||
|
$element = $this->parseParenthesizedIntersectionType($result, $openParen, $isTypeStart, $parseType);
|
||||||
|
// Forbid mixing (A&B)&C by forbidding `&` separator after a parenthesized intersection type.
|
||||||
|
$delimiter = [TokenKind::BarToken];
|
||||||
|
} else {
|
||||||
|
$element = $parseType($result);
|
||||||
|
}
|
||||||
|
$result->addElement($element);
|
||||||
|
} else {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
$delimiterToken = $this->eatOptional($delimiter);
|
||||||
|
if ($delimiterToken !== null) {
|
||||||
|
$result->addElement($delimiterToken);
|
||||||
|
$delimiter = [$delimiterToken->kind];
|
||||||
|
}
|
||||||
|
$token = $this->getCurrentToken();
|
||||||
|
} while ($delimiterToken !== null);
|
||||||
|
|
||||||
|
$result->parent = $parentNode;
|
||||||
|
if ($result->children === null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (in_array(end($result->children)->kind ?? null, $delimiter, true)) {
|
||||||
|
// Add a MissingToken so that this will warn about `function () : T| {}`
|
||||||
|
$result->children[] = new MissingToken($expectedTypeKind, $this->token->fullStart);
|
||||||
|
} elseif (count($result->children) === 1 && $result->children[0] instanceof ParenthesizedIntersectionType) {
|
||||||
|
// dnf types with parenthesized intersection types are a union type of at least 2 types.
|
||||||
|
$result->children[] = new MissingToken(TokenKind::BarToken, $this->token->fullStart);
|
||||||
|
}
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Node $parentNode
|
||||||
|
* @param Token $openParen
|
||||||
|
* @param Closure(Token):bool $isTypeStart
|
||||||
|
* @param Closure(Node):(Node|Token|null) $parseType
|
||||||
|
*/
|
||||||
|
private function parseParenthesizedIntersectionType($parentNode, Token $openParen, Closure $isTypeStart, Closure $parseType): ParenthesizedIntersectionType {
|
||||||
|
$node = new ParenthesizedIntersectionType();
|
||||||
|
$node->parent = $parentNode;
|
||||||
|
$node->openParen = $openParen;
|
||||||
|
$node->children = $this->parseDelimitedList(
|
||||||
|
DelimitedList\QualifiedNameList::class,
|
||||||
|
TokenKind::AmpersandToken,
|
||||||
|
$isTypeStart,
|
||||||
|
$parseType,
|
||||||
|
$node,
|
||||||
|
true);
|
||||||
|
if ($node->children) {
|
||||||
|
// https://wiki.php.net/rfc/dnf_types
|
||||||
|
if ((end($node->children->children)->kind ?? null) === TokenKind::OpenParenToken) {
|
||||||
|
// Add a MissingToken so that this will Warn about `function (A|(B&) $x) {}`
|
||||||
|
$node->children->children[] = new MissingToken(TokenKind::Name, $this->token->fullStart);
|
||||||
|
} elseif (count($node->children->children) === 1) {
|
||||||
|
// Must have at least 2 parts for A|(B&C)
|
||||||
|
$node->children->children[] = new MissingToken(TokenKind::AmpersandToken, $this->token->fullStart);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// Having less than 2 types (no types) in A|() is a parse error
|
||||||
|
$node->children = new MissingToken(TokenKind::Name, $this->token->fullStart);
|
||||||
|
}
|
||||||
|
$node->closeParen = $this->eat(TokenKind::CloseParenToken);
|
||||||
|
return $node;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Node|null $parentNode
|
||||||
* @return DelimitedList\QualifiedNameList|null
|
* @return DelimitedList\QualifiedNameList|null
|
||||||
*/
|
*/
|
||||||
private function tryParseParameterTypeDeclarationList($parentNode) {
|
private function tryParseParameterTypeDeclarationList($parentNode) {
|
||||||
$result = $this->parseDelimitedList(
|
return $this->parseUnionTypeDeclarationList(
|
||||||
DelimitedList\QualifiedNameList::class,
|
$parentNode,
|
||||||
self::TYPE_DELIMITER_TOKENS,
|
|
||||||
function ($token) {
|
function ($token) {
|
||||||
return \in_array($token->kind, $this->parameterTypeDeclarationTokens, true) || $this->isQualifiedNameStart($token);
|
return \in_array($token->kind, $this->parameterTypeDeclarationTokens, true) ||
|
||||||
|
$this->isQualifiedNameStart($token);
|
||||||
},
|
},
|
||||||
function ($parentNode) {
|
function ($parentNode) {
|
||||||
return $this->tryParseParameterTypeDeclaration($parentNode);
|
return $this->tryParseParameterTypeDeclaration($parentNode);
|
||||||
},
|
},
|
||||||
$parentNode,
|
TokenKind::Name
|
||||||
true);
|
);
|
||||||
|
|
||||||
// Add a MissingToken so that this will Warn about `function (T| $x) {}`
|
|
||||||
// TODO: Make this a reusable abstraction?
|
|
||||||
if ($result && in_array(end($result->children)->kind ?? null, self::TYPE_DELIMITER_TOKENS)) {
|
|
||||||
$result->children[] = new MissingToken(TokenKind::Name, $this->token->fullStart);
|
|
||||||
}
|
|
||||||
return $result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private function parseCompoundStatement($parentNode) {
|
private function parseCompoundStatement($parentNode) {
|
||||||
@@ -950,12 +1044,6 @@ class Parser {
|
|||||||
return $compoundStatement;
|
return $compoundStatement;
|
||||||
}
|
}
|
||||||
|
|
||||||
private function array_push_list(& $array, $list) {
|
|
||||||
foreach ($list as $item) {
|
|
||||||
$array[] = $item;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private function isClassMemberDeclarationStart(Token $token) {
|
private function isClassMemberDeclarationStart(Token $token) {
|
||||||
switch ($token->kind) {
|
switch ($token->kind) {
|
||||||
// const-modifier
|
// const-modifier
|
||||||
@@ -1036,6 +1124,7 @@ class Parser {
|
|||||||
case TokenKind::ClassKeyword:
|
case TokenKind::ClassKeyword:
|
||||||
case TokenKind::AbstractKeyword:
|
case TokenKind::AbstractKeyword:
|
||||||
case TokenKind::FinalKeyword:
|
case TokenKind::FinalKeyword:
|
||||||
|
case TokenKind::ReadonlyKeyword:
|
||||||
|
|
||||||
// interface-declaration
|
// interface-declaration
|
||||||
case TokenKind::InterfaceKeyword:
|
case TokenKind::InterfaceKeyword:
|
||||||
@@ -1062,6 +1151,9 @@ class Parser {
|
|||||||
|
|
||||||
// attributes
|
// attributes
|
||||||
case TokenKind::AttributeToken:
|
case TokenKind::AttributeToken:
|
||||||
|
|
||||||
|
// __halt_compiler
|
||||||
|
case TokenKind::HaltCompilerKeyword:
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@@ -1324,8 +1416,6 @@ class Parser {
|
|||||||
case TokenKind::DollarOpenBraceToken:
|
case TokenKind::DollarOpenBraceToken:
|
||||||
case TokenKind::OpenBraceDollarToken:
|
case TokenKind::OpenBraceDollarToken:
|
||||||
$expression->children[] = $this->eat(TokenKind::DollarOpenBraceToken, TokenKind::OpenBraceDollarToken);
|
$expression->children[] = $this->eat(TokenKind::DollarOpenBraceToken, TokenKind::OpenBraceDollarToken);
|
||||||
// TODO: Reject ${var->prop} and ${(var->prop)} without rejecting ${var+otherVar}
|
|
||||||
// Currently, this fails to reject ${var->prop} (because `var` has TokenKind::Name instead of StringVarname)
|
|
||||||
if ($this->getCurrentToken()->kind === TokenKind::StringVarname) {
|
if ($this->getCurrentToken()->kind === TokenKind::StringVarname) {
|
||||||
$expression->children[] = $this->parseComplexDollarTemplateStringExpression($expression);
|
$expression->children[] = $this->parseComplexDollarTemplateStringExpression($expression);
|
||||||
} else {
|
} else {
|
||||||
@@ -1536,6 +1626,9 @@ class Parser {
|
|||||||
case TokenKind::ProtectedKeyword:
|
case TokenKind::ProtectedKeyword:
|
||||||
case TokenKind::PrivateKeyword:
|
case TokenKind::PrivateKeyword:
|
||||||
case TokenKind::AttributeToken:
|
case TokenKind::AttributeToken:
|
||||||
|
|
||||||
|
// dnf types (A&B)|C
|
||||||
|
case TokenKind::OpenParenToken:
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1546,7 +1639,7 @@ class Parser {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @param string $className (name of subclass of DelimitedList)
|
* @param string $className (name of subclass of DelimitedList)
|
||||||
* @param int $delimiter
|
* @param int|int[] $delimiter
|
||||||
* @param callable $isElementStartFn
|
* @param callable $isElementStartFn
|
||||||
* @param callable $parseElementFn
|
* @param callable $parseElementFn
|
||||||
* @param Node $parentNode
|
* @param Node $parentNode
|
||||||
@@ -1560,7 +1653,7 @@ class Parser {
|
|||||||
do {
|
do {
|
||||||
if ($isElementStartFn($token)) {
|
if ($isElementStartFn($token)) {
|
||||||
$node->addElement($parseElementFn($node));
|
$node->addElement($parseElementFn($node));
|
||||||
} elseif (!$allowEmptyElements || ($allowEmptyElements && !$this->checkToken($delimiter))) {
|
} elseif (!$allowEmptyElements || ($allowEmptyElements && !$this->checkAnyToken($delimiter))) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1572,7 +1665,6 @@ class Parser {
|
|||||||
// TODO ERROR CASE - no delimiter, but a param follows
|
// TODO ERROR CASE - no delimiter, but a param follows
|
||||||
} while ($delimiterToken !== null);
|
} while ($delimiterToken !== null);
|
||||||
|
|
||||||
|
|
||||||
$node->parent = $parentNode;
|
$node->parent = $parentNode;
|
||||||
if ($node->children === null) {
|
if ($node->children === null) {
|
||||||
return null;
|
return null;
|
||||||
@@ -1772,10 +1864,17 @@ class Parser {
|
|||||||
return $succeeded;
|
return $succeeded;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** @param int $expectedKind */
|
||||||
private function checkToken($expectedKind) : bool {
|
private function checkToken($expectedKind) : bool {
|
||||||
return $this->getCurrentToken()->kind === $expectedKind;
|
return $this->getCurrentToken()->kind === $expectedKind;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** @param int|int[] $expectedKind */
|
||||||
|
private function checkAnyToken($expectedKind) : bool {
|
||||||
|
$kind = $this->getCurrentToken()->kind;
|
||||||
|
return \is_array($expectedKind) ? \in_array($kind, $expectedKind, true) : $kind === $expectedKind;
|
||||||
|
}
|
||||||
|
|
||||||
private function parseIfStatement($parentNode) {
|
private function parseIfStatement($parentNode) {
|
||||||
$ifStatement = new IfStatementNode();
|
$ifStatement = new IfStatementNode();
|
||||||
$ifStatement->parent = $parentNode;
|
$ifStatement->parent = $parentNode;
|
||||||
@@ -2114,7 +2213,7 @@ class Parser {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case TokenKind::QuestionToken:
|
case TokenKind::QuestionToken:
|
||||||
if ($parentNode instanceof TernaryExpression) {
|
if ($parentNode instanceof TernaryExpression && !isset($parentNode->questionToken)) {
|
||||||
// Workaround to parse "a ? b : c ? d : e" as "(a ? b : c) ? d : e"
|
// Workaround to parse "a ? b : c ? d : e" as "(a ? b : c) ? d : e"
|
||||||
break 2;
|
break 2;
|
||||||
}
|
}
|
||||||
@@ -2122,6 +2221,7 @@ class Parser {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($shouldOperatorTakePrecedenceOverUnary) {
|
if ($shouldOperatorTakePrecedenceOverUnary) {
|
||||||
|
/** @var UnaryOpExpression $unaryExpression */
|
||||||
$unaryExpression = $leftOperand;
|
$unaryExpression = $leftOperand;
|
||||||
$leftOperand = $unaryExpression->operand;
|
$leftOperand = $unaryExpression->operand;
|
||||||
}
|
}
|
||||||
@@ -2143,6 +2243,7 @@ class Parser {
|
|||||||
|
|
||||||
// Rebuild the unary expression if we deconstructed it earlier.
|
// Rebuild the unary expression if we deconstructed it earlier.
|
||||||
if ($shouldOperatorTakePrecedenceOverUnary) {
|
if ($shouldOperatorTakePrecedenceOverUnary) {
|
||||||
|
/** @var UnaryOpExpression $unaryExpression */
|
||||||
$leftOperand->parent = $unaryExpression;
|
$leftOperand->parent = $unaryExpression;
|
||||||
$unaryExpression->operand = $leftOperand;
|
$unaryExpression->operand = $leftOperand;
|
||||||
$leftOperand = $unaryExpression;
|
$leftOperand = $unaryExpression;
|
||||||
@@ -2269,6 +2370,14 @@ class Parser {
|
|||||||
// InstanceOf has other remaining issues, but this heuristic is an improvement for many common cases such as `$x && $y = $z`
|
// InstanceOf has other remaining issues, but this heuristic is an improvement for many common cases such as `$x && $y = $z`
|
||||||
];
|
];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Token|Node $leftOperand
|
||||||
|
* @param Token $operatorToken
|
||||||
|
* @param Token|null $byRefToken
|
||||||
|
* @param Token|Node $rightOperand
|
||||||
|
* @param Node $parentNode
|
||||||
|
* @return BinaryExpression|AssignmentExpression
|
||||||
|
*/
|
||||||
private function makeBinaryExpression($leftOperand, $operatorToken, $byRefToken, $rightOperand, $parentNode) {
|
private function makeBinaryExpression($leftOperand, $operatorToken, $byRefToken, $rightOperand, $parentNode) {
|
||||||
$assignmentExpression = $operatorToken->kind === TokenKind::EqualsToken;
|
$assignmentExpression = $operatorToken->kind === TokenKind::EqualsToken;
|
||||||
if ($assignmentExpression || \array_key_exists($operatorToken->kind, self::KNOWN_ASSIGNMENT_TOKEN_SET)) {
|
if ($assignmentExpression || \array_key_exists($operatorToken->kind, self::KNOWN_ASSIGNMENT_TOKEN_SET)) {
|
||||||
@@ -2283,8 +2392,12 @@ class Parser {
|
|||||||
}
|
}
|
||||||
$binaryExpression = $assignmentExpression ? new AssignmentExpression() : new BinaryExpression();
|
$binaryExpression = $assignmentExpression ? new AssignmentExpression() : new BinaryExpression();
|
||||||
$binaryExpression->parent = $parentNode;
|
$binaryExpression->parent = $parentNode;
|
||||||
$leftOperand->parent = $binaryExpression;
|
if ($leftOperand instanceof Node) {
|
||||||
$rightOperand->parent = $binaryExpression;
|
$leftOperand->parent = $binaryExpression;
|
||||||
|
}
|
||||||
|
if ($rightOperand instanceof Node) {
|
||||||
|
$rightOperand->parent = $binaryExpression;
|
||||||
|
}
|
||||||
$binaryExpression->leftOperand = $leftOperand;
|
$binaryExpression->leftOperand = $leftOperand;
|
||||||
$binaryExpression->operator = $operatorToken;
|
$binaryExpression->operator = $operatorToken;
|
||||||
if ($binaryExpression instanceof AssignmentExpression && isset($byRefToken)) {
|
if ($binaryExpression instanceof AssignmentExpression && isset($byRefToken)) {
|
||||||
@@ -2744,6 +2857,30 @@ class Parser {
|
|||||||
return $unsetStatement;
|
return $unsetStatement;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function parseHaltCompilerStatement($parentNode) {
|
||||||
|
$haltCompilerStatement = new HaltCompilerStatement();
|
||||||
|
$haltCompilerStatement->parent = $parentNode;
|
||||||
|
|
||||||
|
$haltCompilerStatement->haltCompilerKeyword = $this->eat1(TokenKind::HaltCompilerKeyword);
|
||||||
|
$haltCompilerStatement->openParen = $this->eat1(TokenKind::OpenParenToken);
|
||||||
|
$haltCompilerStatement->closeParen = $this->eat1(TokenKind::CloseParenToken);
|
||||||
|
// There is an implicit ';' before the closing php tag.
|
||||||
|
$haltCompilerStatement->semicolonOrCloseTag = $this->eat(TokenKind::SemicolonToken, TokenKind::ScriptSectionEndTag);
|
||||||
|
// token_get_all() will return up to 3 tokens after __halt_compiler regardless of whether they're the right ones.
|
||||||
|
// For invalid php snippets, combine the remaining tokens into InlineHtml
|
||||||
|
$remainingTokens = [];
|
||||||
|
while ($this->token->kind !== TokenKind::EndOfFileToken) {
|
||||||
|
$remainingTokens[] = $this->token;
|
||||||
|
$this->advanceToken();
|
||||||
|
}
|
||||||
|
if ($remainingTokens) {
|
||||||
|
$firstToken = $remainingTokens[0];
|
||||||
|
$lastToken = end($remainingTokens);
|
||||||
|
$haltCompilerStatement->data = new Token(TokenKind::InlineHtml, $firstToken->fullStart, $firstToken->fullStart, $lastToken->fullStart + $lastToken->length - $firstToken->fullStart);
|
||||||
|
}
|
||||||
|
return $haltCompilerStatement;
|
||||||
|
}
|
||||||
|
|
||||||
private function parseArrayCreationExpression($parentNode) {
|
private function parseArrayCreationExpression($parentNode) {
|
||||||
$arrayExpression = new ArrayCreationExpression();
|
$arrayExpression = new ArrayCreationExpression();
|
||||||
$arrayExpression->parent = $parentNode;
|
$arrayExpression->parent = $parentNode;
|
||||||
@@ -3207,7 +3344,7 @@ class Parser {
|
|||||||
if ($classBaseClause->extendsKeyword === null) {
|
if ($classBaseClause->extendsKeyword === null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
$classBaseClause->baseClass = $this->parseQualifiedName($classBaseClause);
|
$classBaseClause->baseClass = $this->parseQualifiedName($classBaseClause) ?? new MissingToken(TokenKind::QualifiedName, $this->token->fullStart);
|
||||||
|
|
||||||
return $classBaseClause;
|
return $classBaseClause;
|
||||||
}
|
}
|
||||||
@@ -3278,6 +3415,8 @@ class Parser {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Parse a comma separated qualified name list (e.g. interfaces implemented by a class)
|
||||||
|
*
|
||||||
* @param Node $parentNode
|
* @param Node $parentNode
|
||||||
* @return DelimitedList\QualifiedNameList
|
* @return DelimitedList\QualifiedNameList
|
||||||
*/
|
*/
|
||||||
@@ -3291,6 +3430,7 @@ class Parser {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private function parseQualifiedNameCatchList($parentNode) {
|
private function parseQualifiedNameCatchList($parentNode) {
|
||||||
|
// catch blocks don't support intersection types.
|
||||||
$result = $this->parseDelimitedList(
|
$result = $this->parseDelimitedList(
|
||||||
DelimitedList\QualifiedNameList::class,
|
DelimitedList\QualifiedNameList::class,
|
||||||
TokenKind::BarToken,
|
TokenKind::BarToken,
|
||||||
@@ -3397,12 +3537,18 @@ class Parser {
|
|||||||
$namespaceDefinition->namespaceKeyword = $this->eat1(TokenKind::NamespaceKeyword);
|
$namespaceDefinition->namespaceKeyword = $this->eat1(TokenKind::NamespaceKeyword);
|
||||||
|
|
||||||
if (!$this->checkToken(TokenKind::NamespaceKeyword)) {
|
if (!$this->checkToken(TokenKind::NamespaceKeyword)) {
|
||||||
$namespaceDefinition->name = $this->parseQualifiedName($namespaceDefinition); // TODO only optional with compound statement block
|
$namespaceDefinition->name = $this->parseQualifiedName($namespaceDefinition);
|
||||||
}
|
}
|
||||||
|
|
||||||
$namespaceDefinition->compoundStatementOrSemicolon =
|
if ($this->checkToken(TokenKind::OpenBraceToken)) {
|
||||||
$this->checkToken(TokenKind::OpenBraceToken) ?
|
$namespaceDefinition->compoundStatementOrSemicolon = $this->parseCompoundStatement($namespaceDefinition);
|
||||||
$this->parseCompoundStatement($namespaceDefinition) : $this->eatSemicolonOrAbortStatement();
|
} else {
|
||||||
|
if (!$namespaceDefinition->name) {
|
||||||
|
// only optional with compound statement block
|
||||||
|
$namespaceDefinition->name = new MissingToken(TokenKind::QualifiedName, $this->token->fullStart);
|
||||||
|
}
|
||||||
|
$namespaceDefinition->compoundStatementOrSemicolon = $this->eatSemicolonOrAbortStatement();
|
||||||
|
}
|
||||||
|
|
||||||
return $namespaceDefinition;
|
return $namespaceDefinition;
|
||||||
}
|
}
|
||||||
@@ -3428,13 +3574,17 @@ class Parser {
|
|||||||
$namespaceUseClause = new NamespaceUseClause();
|
$namespaceUseClause = new NamespaceUseClause();
|
||||||
$namespaceUseClause->parent = $parentNode;
|
$namespaceUseClause->parent = $parentNode;
|
||||||
$namespaceUseClause->namespaceName = $this->parseQualifiedName($namespaceUseClause);
|
$namespaceUseClause->namespaceName = $this->parseQualifiedName($namespaceUseClause);
|
||||||
if ($this->checkToken(TokenKind::AsKeyword)) {
|
if ($this->checkToken(TokenKind::OpenBraceToken)) {
|
||||||
$namespaceUseClause->namespaceAliasingClause = $this->parseNamespaceAliasingClause($namespaceUseClause);
|
|
||||||
}
|
|
||||||
elseif ($this->checkToken(TokenKind::OpenBraceToken)) {
|
|
||||||
$namespaceUseClause->openBrace = $this->eat1(TokenKind::OpenBraceToken);
|
$namespaceUseClause->openBrace = $this->eat1(TokenKind::OpenBraceToken);
|
||||||
$namespaceUseClause->groupClauses = $this->parseNamespaceUseGroupClauseList($namespaceUseClause);
|
$namespaceUseClause->groupClauses = $this->parseNamespaceUseGroupClauseList($namespaceUseClause);
|
||||||
$namespaceUseClause->closeBrace = $this->eat1(TokenKind::CloseBraceToken);
|
$namespaceUseClause->closeBrace = $this->eat1(TokenKind::CloseBraceToken);
|
||||||
|
} else {
|
||||||
|
if (!$namespaceUseClause->namespaceName) {
|
||||||
|
$namespaceUseClause->namespaceName = new MissingToken(TokenKind::QualifiedName, $this->token->fullStart);
|
||||||
|
}
|
||||||
|
if ($this->checkToken(TokenKind::AsKeyword)) {
|
||||||
|
$namespaceUseClause->namespaceAliasingClause = $this->parseNamespaceAliasingClause($namespaceUseClause);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return $namespaceUseClause;
|
return $namespaceUseClause;
|
||||||
@@ -3455,7 +3605,7 @@ class Parser {
|
|||||||
$namespaceUseGroupClause->parent = $parentNode;
|
$namespaceUseGroupClause->parent = $parentNode;
|
||||||
|
|
||||||
$namespaceUseGroupClause->functionOrConst = $this->eatOptional(TokenKind::FunctionKeyword, TokenKind::ConstKeyword);
|
$namespaceUseGroupClause->functionOrConst = $this->eatOptional(TokenKind::FunctionKeyword, TokenKind::ConstKeyword);
|
||||||
$namespaceUseGroupClause->namespaceName = $this->parseQualifiedName($namespaceUseGroupClause);
|
$namespaceUseGroupClause->namespaceName = $this->parseQualifiedName($namespaceUseGroupClause) ?? new MissingToken(TokenKind::QualifiedName, $this->token->fullStart);
|
||||||
if ($this->checkToken(TokenKind::AsKeyword)) {
|
if ($this->checkToken(TokenKind::AsKeyword)) {
|
||||||
$namespaceUseGroupClause->namespaceAliasingClause = $this->parseNamespaceAliasingClause($namespaceUseGroupClause);
|
$namespaceUseGroupClause->namespaceAliasingClause = $this->parseNamespaceAliasingClause($namespaceUseGroupClause);
|
||||||
}
|
}
|
||||||
@@ -3513,6 +3663,7 @@ class Parser {
|
|||||||
case TokenKind::AbstractKeyword:
|
case TokenKind::AbstractKeyword:
|
||||||
case TokenKind::FinalKeyword:
|
case TokenKind::FinalKeyword:
|
||||||
case TokenKind::ReadonlyKeyword:
|
case TokenKind::ReadonlyKeyword:
|
||||||
|
case TokenKind::ConstKeyword:
|
||||||
|
|
||||||
// method-declaration
|
// method-declaration
|
||||||
case TokenKind::FunctionKeyword:
|
case TokenKind::FunctionKeyword:
|
||||||
@@ -3533,6 +3684,9 @@ class Parser {
|
|||||||
|
|
||||||
$token = $this->getCurrentToken();
|
$token = $this->getCurrentToken();
|
||||||
switch ($token->kind) {
|
switch ($token->kind) {
|
||||||
|
case TokenKind::ConstKeyword:
|
||||||
|
return $this->parseClassConstDeclaration($parentNode, $modifiers);
|
||||||
|
|
||||||
case TokenKind::FunctionKeyword:
|
case TokenKind::FunctionKeyword:
|
||||||
return $this->parseMethodDeclaration($parentNode, $modifiers);
|
return $this->parseMethodDeclaration($parentNode, $modifiers);
|
||||||
|
|
||||||
|
|||||||
@@ -228,7 +228,6 @@ class PhpTokenizer implements TokenStreamProviderInterface {
|
|||||||
T_DIR => TokenKind::Name,
|
T_DIR => TokenKind::Name,
|
||||||
T_FILE => TokenKind::Name,
|
T_FILE => TokenKind::Name,
|
||||||
T_FUNC_C => TokenKind::Name,
|
T_FUNC_C => TokenKind::Name,
|
||||||
T_HALT_COMPILER => TokenKind::Name,
|
|
||||||
T_METHOD_C => TokenKind::Name,
|
T_METHOD_C => TokenKind::Name,
|
||||||
T_NS_C => TokenKind::Name,
|
T_NS_C => TokenKind::Name,
|
||||||
T_TRAIT_C => TokenKind::Name,
|
T_TRAIT_C => TokenKind::Name,
|
||||||
@@ -274,6 +273,7 @@ class PhpTokenizer implements TokenStreamProviderInterface {
|
|||||||
T_FUNCTION => TokenKind::FunctionKeyword,
|
T_FUNCTION => TokenKind::FunctionKeyword,
|
||||||
T_GLOBAL => TokenKind::GlobalKeyword,
|
T_GLOBAL => TokenKind::GlobalKeyword,
|
||||||
T_GOTO => TokenKind::GotoKeyword,
|
T_GOTO => TokenKind::GotoKeyword,
|
||||||
|
T_HALT_COMPILER => TokenKind::HaltCompilerKeyword,
|
||||||
T_IF => TokenKind::IfKeyword,
|
T_IF => TokenKind::IfKeyword,
|
||||||
T_IMPLEMENTS => TokenKind::ImplementsKeyword,
|
T_IMPLEMENTS => TokenKind::ImplementsKeyword,
|
||||||
T_INCLUDE => TokenKind::IncludeKeyword,
|
T_INCLUDE => TokenKind::IncludeKeyword,
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ class Token implements \JsonSerializable {
|
|||||||
public $fullStart;
|
public $fullStart;
|
||||||
/** @var int */
|
/** @var int */
|
||||||
public $start;
|
public $start;
|
||||||
/** @var int */
|
/** @var int the length is equal to $this->getEndPosition() - $this->fullStart. */
|
||||||
public $length;
|
public $length;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -91,6 +91,7 @@ class TokenKind {
|
|||||||
const IterableKeyword = self::IterableReservedWord;
|
const IterableKeyword = self::IterableReservedWord;
|
||||||
const EnumKeyword = 171;
|
const EnumKeyword = 171;
|
||||||
const ReadonlyKeyword = 172;
|
const ReadonlyKeyword = 172;
|
||||||
|
const HaltCompilerKeyword = 173;
|
||||||
|
|
||||||
const OpenBracketToken = 201;
|
const OpenBracketToken = 201;
|
||||||
const CloseBracketToken = 202;
|
const CloseBracketToken = 202;
|
||||||
@@ -175,6 +176,7 @@ class TokenKind {
|
|||||||
const NullReservedWord = 322;
|
const NullReservedWord = 322;
|
||||||
const MixedReservedWord = 340;
|
const MixedReservedWord = 340;
|
||||||
const IterableReservedWord = 170;
|
const IterableReservedWord = 170;
|
||||||
|
const NeverReservedWord = 341;
|
||||||
|
|
||||||
const ScriptSectionStartTag = 323;
|
const ScriptSectionStartTag = 323;
|
||||||
const ScriptSectionEndTag = 324;
|
const ScriptSectionEndTag = 324;
|
||||||
|
|||||||
@@ -57,6 +57,7 @@ class TokenStringMaps {
|
|||||||
"interface" => TokenKind::InterfaceKeyword,
|
"interface" => TokenKind::InterfaceKeyword,
|
||||||
"isset" => TokenKind::IsSetKeyword,
|
"isset" => TokenKind::IsSetKeyword,
|
||||||
"list" => TokenKind::ListKeyword,
|
"list" => TokenKind::ListKeyword,
|
||||||
|
"match" => TokenKind::MatchKeyword,
|
||||||
"namespace" => TokenKind::NamespaceKeyword,
|
"namespace" => TokenKind::NamespaceKeyword,
|
||||||
"new" => TokenKind::NewKeyword,
|
"new" => TokenKind::NewKeyword,
|
||||||
"or" => TokenKind::OrKeyword,
|
"or" => TokenKind::OrKeyword,
|
||||||
@@ -108,6 +109,7 @@ class TokenStringMaps {
|
|||||||
"void" => TokenKind::VoidReservedWord,
|
"void" => TokenKind::VoidReservedWord,
|
||||||
"iterable" => TokenKind::IterableReservedWord,
|
"iterable" => TokenKind::IterableReservedWord,
|
||||||
"mixed" => TokenKind::MixedReservedWord,
|
"mixed" => TokenKind::MixedReservedWord,
|
||||||
|
"never" => TokenKind::NeverReservedWord,
|
||||||
];
|
];
|
||||||
|
|
||||||
const OPERATORS_AND_PUNCTUATORS = [
|
const OPERATORS_AND_PUNCTUATORS = [
|
||||||
|
|||||||
163
vendor/phan/phan/.phan/internal_stubs/zip.phan_php
vendored
Normal file
163
vendor/phan/phan/.phan/internal_stubs/zip.phan_php
vendored
Normal file
@@ -0,0 +1,163 @@
|
|||||||
|
<?php
|
||||||
|
// These stubs were generated by the phan stub generator.
|
||||||
|
// @phan-stub-for-extension zip@1.15.6
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
class ZipArchive implements \Countable {
|
||||||
|
|
||||||
|
// constants
|
||||||
|
const CREATE = 1;
|
||||||
|
const EXCL = 2;
|
||||||
|
const CHECKCONS = 4;
|
||||||
|
const OVERWRITE = 8;
|
||||||
|
const RDONLY = 16;
|
||||||
|
const FL_NOCASE = 1;
|
||||||
|
const FL_NODIR = 2;
|
||||||
|
const FL_COMPRESSED = 4;
|
||||||
|
const FL_UNCHANGED = 8;
|
||||||
|
const FL_ENC_GUESS = 0;
|
||||||
|
const FL_ENC_RAW = 64;
|
||||||
|
const FL_ENC_STRICT = 128;
|
||||||
|
const FL_ENC_UTF_8 = 2048;
|
||||||
|
const FL_ENC_CP437 = 4096;
|
||||||
|
const CM_DEFAULT = -1;
|
||||||
|
const CM_STORE = 0;
|
||||||
|
const CM_SHRINK = 1;
|
||||||
|
const CM_REDUCE_1 = 2;
|
||||||
|
const CM_REDUCE_2 = 3;
|
||||||
|
const CM_REDUCE_3 = 4;
|
||||||
|
const CM_REDUCE_4 = 5;
|
||||||
|
const CM_IMPLODE = 6;
|
||||||
|
const CM_DEFLATE = 8;
|
||||||
|
const CM_DEFLATE64 = 9;
|
||||||
|
const CM_PKWARE_IMPLODE = 10;
|
||||||
|
const CM_BZIP2 = 12;
|
||||||
|
const CM_LZMA = 14;
|
||||||
|
const CM_LZMA2 = 33;
|
||||||
|
const CM_XZ = 95;
|
||||||
|
const CM_TERSE = 18;
|
||||||
|
const CM_LZ77 = 19;
|
||||||
|
const CM_WAVPACK = 97;
|
||||||
|
const CM_PPMD = 98;
|
||||||
|
const ER_OK = 0;
|
||||||
|
const ER_MULTIDISK = 1;
|
||||||
|
const ER_RENAME = 2;
|
||||||
|
const ER_CLOSE = 3;
|
||||||
|
const ER_SEEK = 4;
|
||||||
|
const ER_READ = 5;
|
||||||
|
const ER_WRITE = 6;
|
||||||
|
const ER_CRC = 7;
|
||||||
|
const ER_ZIPCLOSED = 8;
|
||||||
|
const ER_NOENT = 9;
|
||||||
|
const ER_EXISTS = 10;
|
||||||
|
const ER_OPEN = 11;
|
||||||
|
const ER_TMPOPEN = 12;
|
||||||
|
const ER_ZLIB = 13;
|
||||||
|
const ER_MEMORY = 14;
|
||||||
|
const ER_CHANGED = 15;
|
||||||
|
const ER_COMPNOTSUPP = 16;
|
||||||
|
const ER_EOF = 17;
|
||||||
|
const ER_INVAL = 18;
|
||||||
|
const ER_NOZIP = 19;
|
||||||
|
const ER_INTERNAL = 20;
|
||||||
|
const ER_INCONS = 21;
|
||||||
|
const ER_REMOVE = 22;
|
||||||
|
const ER_DELETED = 23;
|
||||||
|
const ER_ENCRNOTSUPP = 24;
|
||||||
|
const ER_RDONLY = 25;
|
||||||
|
const ER_NOPASSWD = 26;
|
||||||
|
const ER_WRONGPASSWD = 27;
|
||||||
|
const ER_OPNOTSUPP = 28;
|
||||||
|
const ER_INUSE = 29;
|
||||||
|
const ER_TELL = 30;
|
||||||
|
const ER_COMPRESSED_DATA = 31;
|
||||||
|
const ER_CANCELLED = 32;
|
||||||
|
const OPSYS_DOS = 0;
|
||||||
|
const OPSYS_AMIGA = 1;
|
||||||
|
const OPSYS_OPENVMS = 2;
|
||||||
|
const OPSYS_UNIX = 3;
|
||||||
|
const OPSYS_VM_CMS = 4;
|
||||||
|
const OPSYS_ATARI_ST = 5;
|
||||||
|
const OPSYS_OS_2 = 6;
|
||||||
|
const OPSYS_MACINTOSH = 7;
|
||||||
|
const OPSYS_Z_SYSTEM = 8;
|
||||||
|
const OPSYS_Z_CPM = 9;
|
||||||
|
const OPSYS_CPM = 9;
|
||||||
|
const OPSYS_WINDOWS_NTFS = 10;
|
||||||
|
const OPSYS_MVS = 11;
|
||||||
|
const OPSYS_VSE = 12;
|
||||||
|
const OPSYS_ACORN_RISC = 13;
|
||||||
|
const OPSYS_VFAT = 14;
|
||||||
|
const OPSYS_ALTERNATE_MVS = 15;
|
||||||
|
const OPSYS_BEOS = 16;
|
||||||
|
const OPSYS_TANDEM = 17;
|
||||||
|
const OPSYS_OS_400 = 18;
|
||||||
|
const OPSYS_OS_X = 19;
|
||||||
|
const OPSYS_DEFAULT = 3;
|
||||||
|
const EM_NONE = 0;
|
||||||
|
const EM_AES_128 = 257;
|
||||||
|
const EM_AES_192 = 258;
|
||||||
|
const EM_AES_256 = 259;
|
||||||
|
const LIBZIP_VERSION = '1.9.2';
|
||||||
|
|
||||||
|
// properties
|
||||||
|
public $comment;
|
||||||
|
public $filename;
|
||||||
|
public $numFiles;
|
||||||
|
public $status;
|
||||||
|
public $statusSys;
|
||||||
|
|
||||||
|
// methods
|
||||||
|
public function open($filename, $flags = null) {}
|
||||||
|
public function setPassword($password) {}
|
||||||
|
public function close() {}
|
||||||
|
public function count() {}
|
||||||
|
public function getStatusString() {}
|
||||||
|
public function addEmptyDir($dirname) {}
|
||||||
|
public function addFromString($name, $content) {}
|
||||||
|
public function addFile($filepath, $entryname = null, $start = null, $length = null) {}
|
||||||
|
public function addGlob($pattern, $flags = null, $options = null) {}
|
||||||
|
public function addPattern($pattern, $path = null, $options = null) {}
|
||||||
|
public function renameIndex($index, $new_name) {}
|
||||||
|
public function renameName($name, $new_name) {}
|
||||||
|
public function setArchiveComment($comment) {}
|
||||||
|
public function getArchiveComment($flags = null) {}
|
||||||
|
public function setCommentIndex($index, $comment) {}
|
||||||
|
public function setCommentName($name, $comment) {}
|
||||||
|
public function getCommentIndex($index, $flags = null) {}
|
||||||
|
public function getCommentName($name, $flags = null) {}
|
||||||
|
public function deleteIndex($index) {}
|
||||||
|
public function deleteName($name) {}
|
||||||
|
public function statName($filename, $flags = null) {}
|
||||||
|
public function statIndex($index, $flags = null) {}
|
||||||
|
public function locateName($filename, $flags = null) {}
|
||||||
|
public function getNameIndex($index, $flags = null) {}
|
||||||
|
public function unchangeArchive() {}
|
||||||
|
public function unchangeAll() {}
|
||||||
|
public function unchangeIndex($index) {}
|
||||||
|
public function unchangeName($name) {}
|
||||||
|
public function extractTo($pathto, $files = null) {}
|
||||||
|
public function getFromName($entryname, $len = null, $flags = null) {}
|
||||||
|
public function getFromIndex($index, $len = null, $flags = null) {}
|
||||||
|
public function getStream($entryname) {}
|
||||||
|
public function setExternalAttributesName($name, $opsys, $attr, $flags = null) {}
|
||||||
|
public function setExternalAttributesIndex($index, $opsys, $attr, $flags = null) {}
|
||||||
|
public function getExternalAttributesName($name, &$opsys, &$attr, $flags = null) {}
|
||||||
|
public function getExternalAttributesIndex($index, &$opsys, &$attr, $flags = null) {}
|
||||||
|
public function setCompressionName($name, $method, $compflags = null) {}
|
||||||
|
public function setCompressionIndex($index, $method, $compflags = null) {}
|
||||||
|
public function setEncryptionName($name, $method, $password = null) {}
|
||||||
|
public function setEncryptionIndex($index, $method, $password = null) {}
|
||||||
|
}
|
||||||
|
|
||||||
|
function zip_close($zip) {}
|
||||||
|
function zip_entry_close($zip_ent) {}
|
||||||
|
function zip_entry_compressedsize($zip_entry) {}
|
||||||
|
function zip_entry_compressionmethod($zip_entry) {}
|
||||||
|
function zip_entry_filesize($zip_entry) {}
|
||||||
|
function zip_entry_name($zip_entry) {}
|
||||||
|
function zip_entry_open($zip_dp, $zip_entry, $mode = null) {}
|
||||||
|
function zip_entry_read($zip_entry, $len = null) {}
|
||||||
|
function zip_open($filename) {}
|
||||||
|
function zip_read($zip) {}
|
||||||
|
}
|
||||||
@@ -114,7 +114,7 @@ final class EmptyStatementListVisitor extends PluginAwarePostAnalysisVisitor
|
|||||||
$this->code_base,
|
$this->code_base,
|
||||||
(clone $this->context)->withLineNumberStart($last_if_elem->children['stmts']->lineno ?? $last_if_elem->lineno),
|
(clone $this->context)->withLineNumberStart($last_if_elem->children['stmts']->lineno ?? $last_if_elem->lineno),
|
||||||
'PhanPluginEmptyStatementIf',
|
'PhanPluginEmptyStatementIf',
|
||||||
'Empty statement list statement detected for the last if/elseif statement',
|
'Empty statement list detected for the last if/elseif statement',
|
||||||
[]
|
[]
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -191,7 +191,7 @@ final class EmptyStatementListVisitor extends PluginAwarePostAnalysisVisitor
|
|||||||
$this->code_base,
|
$this->code_base,
|
||||||
(clone $this->context)->withLineNumberStart($stmts_node->lineno ?? $node->lineno),
|
(clone $this->context)->withLineNumberStart($stmts_node->lineno ?? $node->lineno),
|
||||||
'PhanPluginEmptyStatementForLoop',
|
'PhanPluginEmptyStatementForLoop',
|
||||||
'Empty statement list statement detected for the for loop',
|
'Empty statement list detected for the for loop',
|
||||||
[]
|
[]
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -219,7 +219,7 @@ final class EmptyStatementListVisitor extends PluginAwarePostAnalysisVisitor
|
|||||||
$this->code_base,
|
$this->code_base,
|
||||||
(clone $this->context)->withLineNumberStart($stmts_node->lineno ?? $node->lineno),
|
(clone $this->context)->withLineNumberStart($stmts_node->lineno ?? $node->lineno),
|
||||||
'PhanPluginEmptyStatementWhileLoop',
|
'PhanPluginEmptyStatementWhileLoop',
|
||||||
'Empty statement list statement detected for the while loop',
|
'Empty statement list detected for the while loop',
|
||||||
[]
|
[]
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -247,7 +247,7 @@ final class EmptyStatementListVisitor extends PluginAwarePostAnalysisVisitor
|
|||||||
$this->code_base,
|
$this->code_base,
|
||||||
(clone $this->context)->withLineNumberStart($stmts_node->lineno),
|
(clone $this->context)->withLineNumberStart($stmts_node->lineno),
|
||||||
'PhanPluginEmptyStatementDoWhileLoop',
|
'PhanPluginEmptyStatementDoWhileLoop',
|
||||||
'Empty statement list statement detected for the do-while loop',
|
'Empty statement list detected for the do-while loop',
|
||||||
[]
|
[]
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -276,7 +276,7 @@ final class EmptyStatementListVisitor extends PluginAwarePostAnalysisVisitor
|
|||||||
$this->code_base,
|
$this->code_base,
|
||||||
(clone $this->context)->withLineNumberStart($stmts_node->lineno),
|
(clone $this->context)->withLineNumberStart($stmts_node->lineno),
|
||||||
'PhanPluginEmptyStatementForeachLoop',
|
'PhanPluginEmptyStatementForeachLoop',
|
||||||
'Empty statement list statement detected for the foreach loop',
|
'Empty statement list detected for the foreach loop',
|
||||||
[]
|
[]
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -295,7 +295,7 @@ final class EmptyStatementListVisitor extends PluginAwarePostAnalysisVisitor
|
|||||||
$this->code_base,
|
$this->code_base,
|
||||||
(clone $this->context)->withLineNumberStart($try_node->lineno),
|
(clone $this->context)->withLineNumberStart($try_node->lineno),
|
||||||
'PhanPluginEmptyStatementTryBody',
|
'PhanPluginEmptyStatementTryBody',
|
||||||
'Empty statement list statement detected for the try statement\'s body',
|
'Empty statement list detected for the try statement\'s body',
|
||||||
[]
|
[]
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -315,7 +315,7 @@ final class EmptyStatementListVisitor extends PluginAwarePostAnalysisVisitor
|
|||||||
$this->code_base,
|
$this->code_base,
|
||||||
(clone $this->context)->withLineNumberStart($finally_node->lineno),
|
(clone $this->context)->withLineNumberStart($finally_node->lineno),
|
||||||
'PhanPluginEmptyStatementTryFinally',
|
'PhanPluginEmptyStatementTryFinally',
|
||||||
'Empty statement list statement detected for the try\'s finally body',
|
'Empty statement list detected for the try\'s finally body',
|
||||||
[]
|
[]
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
14
vendor/phan/phan/.phan/plugins/README.md
vendored
14
vendor/phan/phan/.phan/plugins/README.md
vendored
@@ -216,15 +216,15 @@ By default, this plugin won't warn if it can find a TODO/FIXME/"Deliberately emp
|
|||||||
(This may miss some TODOs due to `php-ast` not providing the end line numbers)
|
(This may miss some TODOs due to `php-ast` not providing the end line numbers)
|
||||||
The setting `'plugin_config' => ['empty_statement_list_ignore_todos' => true]` can be used to make it unconditionally warn about empty statement lists.
|
The setting `'plugin_config' => ['empty_statement_list_ignore_todos' => true]` can be used to make it unconditionally warn about empty statement lists.
|
||||||
|
|
||||||
- **PhanPluginEmptyStatementDoWhileLoop** `Empty statement list statement detected for the do-while loop`
|
- **PhanPluginEmptyStatementDoWhileLoop** `Empty statement list detected for the do-while loop`
|
||||||
- **PhanPluginEmptyStatementForLoop** `Empty statement list statement detected for the for loop`
|
- **PhanPluginEmptyStatementForLoop** `Empty statement list detected for the for loop`
|
||||||
- **PhanPluginEmptyStatementForeachLoop** `Empty statement list statement detected for the foreach loop`
|
- **PhanPluginEmptyStatementForeachLoop** `Empty statement list detected for the foreach loop`
|
||||||
- **PhanPluginEmptyStatementIf**: `Empty statement list statement detected for the last if/elseif statement`
|
- **PhanPluginEmptyStatementIf**: `Empty statement list detected for the last if/elseif statement`
|
||||||
- **PhanPluginEmptyStatementSwitch** `No side effects seen for any cases of this switch statement`
|
- **PhanPluginEmptyStatementSwitch** `No side effects seen for any cases of this switch statement`
|
||||||
- **PhanPluginEmptyStatementTryBody** `Empty statement list statement detected for the try statement's body`
|
- **PhanPluginEmptyStatementTryBody** `Empty statement list detected for the try statement's body`
|
||||||
- **PhanPluginEmptyStatementPossiblyNonThrowingTryBody**: `Found a try block that looks like it might not throw. Note that this check is a heuristic prone to false positives, especially because error handlers, signal handlers, destructors, and other things may all lead to throwing.`
|
- **PhanPluginEmptyStatementPossiblyNonThrowingTryBody**: `Found a try block that looks like it might not throw. Note that this check is a heuristic prone to false positives, especially because error handlers, signal handlers, destructors, and other things may all lead to throwing.`
|
||||||
- **PhanPluginEmptyStatementTryFinally** `Empty statement list statement detected for the try's finally body`
|
- **PhanPluginEmptyStatementTryFinally** `Empty statement list detected for the try's finally body`
|
||||||
- **PhanPluginEmptyStatementWhileLoop** `Empty statement list statement detected for the while loop`
|
- **PhanPluginEmptyStatementWhileLoop** `Empty statement list detected for the while loop`
|
||||||
|
|
||||||
### LoopVariableReusePlugin.php
|
### LoopVariableReusePlugin.php
|
||||||
|
|
||||||
|
|||||||
20
vendor/phan/phan/NEWS.md
vendored
20
vendor/phan/phan/NEWS.md
vendored
@@ -1,5 +1,20 @@
|
|||||||
Phan NEWS
|
Phan NEWS
|
||||||
|
|
||||||
|
Mar 03 2023, Phan 5.4.2
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
Miscellaneous:
|
||||||
|
- Fix wording in EmptyStatementListPlugin issue messages.
|
||||||
|
- Add a few more functions where the return value should be used.
|
||||||
|
- Fix signature of exif_read_data() #4759
|
||||||
|
- Make allow_missing_properties setting aware of AllowDynamicProperties attribute for PHP 8.2
|
||||||
|
|
||||||
|
Maintenance:
|
||||||
|
- Require php-ast 1.1.0 or newer in PHP 8.2+ if php-ast is installed.
|
||||||
|
This release of php-ast makes the parsing of `AST_ARROW_FUNC` in php 8.2 match older php versions.
|
||||||
|
- Support parsing of PHP 8.2 syntax such as disjunctive normal form types and `readonly` classes in the polyfill/fallback parser.
|
||||||
|
- Fix bugs parsing `__halt_compiler()` in the polyfill/fallback parser.
|
||||||
|
|
||||||
Aug 25 2022, Phan 5.4.1
|
Aug 25 2022, Phan 5.4.1
|
||||||
-----------------------
|
-----------------------
|
||||||
|
|
||||||
@@ -14,6 +29,11 @@ New Features(Analysis):
|
|||||||
Miscellaneous:
|
Miscellaneous:
|
||||||
- Allow `array_filter` `$callback` to be null (#4715)
|
- Allow `array_filter` `$callback` to be null (#4715)
|
||||||
|
|
||||||
|
Bug fixes:
|
||||||
|
- Fix false positive warning in PHP < 8.0 for inferring the method signature of `new SoapFault`. (#4724)
|
||||||
|
(The constructor was internally declared in reflection as `SoapFault::SoapFault` until php 8.0)
|
||||||
|
Adjust the method signature of `SoapFault::__construct` to match the documentation/implementation.
|
||||||
|
|
||||||
Aug 08 2022, Phan 5.4.0
|
Aug 08 2022, Phan 5.4.0
|
||||||
-----------------------
|
-----------------------
|
||||||
|
|
||||||
|
|||||||
2
vendor/phan/phan/composer.json
vendored
2
vendor/phan/phan/composer.json
vendored
@@ -29,7 +29,7 @@
|
|||||||
"composer/semver": "^1.4|^2.0|^3.0",
|
"composer/semver": "^1.4|^2.0|^3.0",
|
||||||
"composer/xdebug-handler": "^2.0|^3.0",
|
"composer/xdebug-handler": "^2.0|^3.0",
|
||||||
"felixfbecker/advanced-json-rpc": "^3.0.4",
|
"felixfbecker/advanced-json-rpc": "^3.0.4",
|
||||||
"microsoft/tolerant-php-parser": "0.1.1",
|
"microsoft/tolerant-php-parser": "0.1.2",
|
||||||
"netresearch/jsonmapper": "^1.6.0|^2.0|^3.0|^4.0",
|
"netresearch/jsonmapper": "^1.6.0|^2.0|^3.0|^4.0",
|
||||||
"sabre/event": "^5.1.3",
|
"sabre/event": "^5.1.3",
|
||||||
"symfony/console": "^3.2|^4.0|^5.0|^6.0",
|
"symfony/console": "^3.2|^4.0|^5.0|^6.0",
|
||||||
|
|||||||
232
vendor/phan/phan/composer.lock
generated
vendored
232
vendor/phan/phan/composer.lock
generated
vendored
@@ -4,20 +4,20 @@
|
|||||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||||
"This file is @generated automatically"
|
"This file is @generated automatically"
|
||||||
],
|
],
|
||||||
"content-hash": "62f4c0f1a6e50535b7c03182832d5c4e",
|
"content-hash": "301a32dbdfef414765074fc7e60effbb",
|
||||||
"packages": [
|
"packages": [
|
||||||
{
|
{
|
||||||
"name": "composer/pcre",
|
"name": "composer/pcre",
|
||||||
"version": "2.0.0",
|
"version": "2.1.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/composer/pcre.git",
|
"url": "https://github.com/composer/pcre.git",
|
||||||
"reference": "c8e9d27cfc5ed22643c19c160455b473ffd8aabe"
|
"reference": "3fdb2807b31a78a40ad89570e30ec77466c98717"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/composer/pcre/zipball/c8e9d27cfc5ed22643c19c160455b473ffd8aabe",
|
"url": "https://api.github.com/repos/composer/pcre/zipball/3fdb2807b31a78a40ad89570e30ec77466c98717",
|
||||||
"reference": "c8e9d27cfc5ed22643c19c160455b473ffd8aabe",
|
"reference": "3fdb2807b31a78a40ad89570e30ec77466c98717",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -59,7 +59,7 @@
|
|||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/composer/pcre/issues",
|
"issues": "https://github.com/composer/pcre/issues",
|
||||||
"source": "https://github.com/composer/pcre/tree/2.0.0"
|
"source": "https://github.com/composer/pcre/tree/2.1.0"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -75,7 +75,7 @@
|
|||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2022-02-25T20:05:29+00:00"
|
"time": "2022-11-16T18:32:04+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "composer/semver",
|
"name": "composer/semver",
|
||||||
@@ -271,16 +271,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "microsoft/tolerant-php-parser",
|
"name": "microsoft/tolerant-php-parser",
|
||||||
"version": "v0.1.1",
|
"version": "v0.1.2",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/microsoft/tolerant-php-parser.git",
|
"url": "https://github.com/microsoft/tolerant-php-parser.git",
|
||||||
"reference": "6a965617cf484355048ac6d2d3de7b6ec93abb16"
|
"reference": "3eccfd273323aaf69513e2f1c888393f5947804b"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/microsoft/tolerant-php-parser/zipball/6a965617cf484355048ac6d2d3de7b6ec93abb16",
|
"url": "https://api.github.com/repos/microsoft/tolerant-php-parser/zipball/3eccfd273323aaf69513e2f1c888393f5947804b",
|
||||||
"reference": "6a965617cf484355048ac6d2d3de7b6ec93abb16",
|
"reference": "3eccfd273323aaf69513e2f1c888393f5947804b",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -310,22 +310,22 @@
|
|||||||
"description": "Tolerant PHP-to-AST parser designed for IDE usage scenarios",
|
"description": "Tolerant PHP-to-AST parser designed for IDE usage scenarios",
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/microsoft/tolerant-php-parser/issues",
|
"issues": "https://github.com/microsoft/tolerant-php-parser/issues",
|
||||||
"source": "https://github.com/microsoft/tolerant-php-parser/tree/v0.1.1"
|
"source": "https://github.com/microsoft/tolerant-php-parser/tree/v0.1.2"
|
||||||
},
|
},
|
||||||
"time": "2021-07-16T21:28:12+00:00"
|
"time": "2022-10-05T17:30:19+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "netresearch/jsonmapper",
|
"name": "netresearch/jsonmapper",
|
||||||
"version": "v4.0.0",
|
"version": "v4.1.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/cweiske/jsonmapper.git",
|
"url": "https://github.com/cweiske/jsonmapper.git",
|
||||||
"reference": "8bbc021a8edb2e4a7ea2f8ad4fa9ec9dce2fcb8d"
|
"reference": "cfa81ea1d35294d64adb9c68aa4cb9e92400e53f"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/8bbc021a8edb2e4a7ea2f8ad4fa9ec9dce2fcb8d",
|
"url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/cfa81ea1d35294d64adb9c68aa4cb9e92400e53f",
|
||||||
"reference": "8bbc021a8edb2e4a7ea2f8ad4fa9ec9dce2fcb8d",
|
"reference": "cfa81ea1d35294d64adb9c68aa4cb9e92400e53f",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -361,9 +361,9 @@
|
|||||||
"support": {
|
"support": {
|
||||||
"email": "cweiske@cweiske.de",
|
"email": "cweiske@cweiske.de",
|
||||||
"issues": "https://github.com/cweiske/jsonmapper/issues",
|
"issues": "https://github.com/cweiske/jsonmapper/issues",
|
||||||
"source": "https://github.com/cweiske/jsonmapper/tree/v4.0.0"
|
"source": "https://github.com/cweiske/jsonmapper/tree/v4.1.0"
|
||||||
},
|
},
|
||||||
"time": "2020-12-01T19:48:11+00:00"
|
"time": "2022-12-08T20:46:14+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpdocumentor/reflection-common",
|
"name": "phpdocumentor/reflection-common",
|
||||||
@@ -691,16 +691,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/console",
|
"name": "symfony/console",
|
||||||
"version": "v5.4.11",
|
"version": "v5.4.21",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/console.git",
|
"url": "https://github.com/symfony/console.git",
|
||||||
"reference": "535846c7ee6bc4dd027ca0d93220601456734b10"
|
"reference": "c77433ddc6cdc689caf48065d9ea22ca0853fbd9"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/console/zipball/535846c7ee6bc4dd027ca0d93220601456734b10",
|
"url": "https://api.github.com/repos/symfony/console/zipball/c77433ddc6cdc689caf48065d9ea22ca0853fbd9",
|
||||||
"reference": "535846c7ee6bc4dd027ca0d93220601456734b10",
|
"reference": "c77433ddc6cdc689caf48065d9ea22ca0853fbd9",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -770,7 +770,7 @@
|
|||||||
"terminal"
|
"terminal"
|
||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"source": "https://github.com/symfony/console/tree/v5.4.11"
|
"source": "https://github.com/symfony/console/tree/v5.4.21"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -786,7 +786,7 @@
|
|||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2022-07-22T10:42:43+00:00"
|
"time": "2023-02-25T16:59:41+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/deprecation-contracts",
|
"name": "symfony/deprecation-contracts",
|
||||||
@@ -857,16 +857,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/polyfill-ctype",
|
"name": "symfony/polyfill-ctype",
|
||||||
"version": "v1.26.0",
|
"version": "v1.27.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/polyfill-ctype.git",
|
"url": "https://github.com/symfony/polyfill-ctype.git",
|
||||||
"reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4"
|
"reference": "5bbc823adecdae860bb64756d639ecfec17b050a"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4",
|
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/5bbc823adecdae860bb64756d639ecfec17b050a",
|
||||||
"reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4",
|
"reference": "5bbc823adecdae860bb64756d639ecfec17b050a",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -881,7 +881,7 @@
|
|||||||
"type": "library",
|
"type": "library",
|
||||||
"extra": {
|
"extra": {
|
||||||
"branch-alias": {
|
"branch-alias": {
|
||||||
"dev-main": "1.26-dev"
|
"dev-main": "1.27-dev"
|
||||||
},
|
},
|
||||||
"thanks": {
|
"thanks": {
|
||||||
"name": "symfony/polyfill",
|
"name": "symfony/polyfill",
|
||||||
@@ -919,7 +919,7 @@
|
|||||||
"portable"
|
"portable"
|
||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"source": "https://github.com/symfony/polyfill-ctype/tree/v1.26.0"
|
"source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -935,20 +935,20 @@
|
|||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2022-05-24T11:49:31+00:00"
|
"time": "2022-11-03T14:55:06+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/polyfill-intl-grapheme",
|
"name": "symfony/polyfill-intl-grapheme",
|
||||||
"version": "v1.26.0",
|
"version": "v1.27.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/polyfill-intl-grapheme.git",
|
"url": "https://github.com/symfony/polyfill-intl-grapheme.git",
|
||||||
"reference": "433d05519ce6990bf3530fba6957499d327395c2"
|
"reference": "511a08c03c1960e08a883f4cffcacd219b758354"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/433d05519ce6990bf3530fba6957499d327395c2",
|
"url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/511a08c03c1960e08a883f4cffcacd219b758354",
|
||||||
"reference": "433d05519ce6990bf3530fba6957499d327395c2",
|
"reference": "511a08c03c1960e08a883f4cffcacd219b758354",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -960,7 +960,7 @@
|
|||||||
"type": "library",
|
"type": "library",
|
||||||
"extra": {
|
"extra": {
|
||||||
"branch-alias": {
|
"branch-alias": {
|
||||||
"dev-main": "1.26-dev"
|
"dev-main": "1.27-dev"
|
||||||
},
|
},
|
||||||
"thanks": {
|
"thanks": {
|
||||||
"name": "symfony/polyfill",
|
"name": "symfony/polyfill",
|
||||||
@@ -1000,7 +1000,7 @@
|
|||||||
"shim"
|
"shim"
|
||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.26.0"
|
"source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.27.0"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -1016,20 +1016,20 @@
|
|||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2022-05-24T11:49:31+00:00"
|
"time": "2022-11-03T14:55:06+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/polyfill-intl-normalizer",
|
"name": "symfony/polyfill-intl-normalizer",
|
||||||
"version": "v1.26.0",
|
"version": "v1.27.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/polyfill-intl-normalizer.git",
|
"url": "https://github.com/symfony/polyfill-intl-normalizer.git",
|
||||||
"reference": "219aa369ceff116e673852dce47c3a41794c14bd"
|
"reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/219aa369ceff116e673852dce47c3a41794c14bd",
|
"url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/19bd1e4fcd5b91116f14d8533c57831ed00571b6",
|
||||||
"reference": "219aa369ceff116e673852dce47c3a41794c14bd",
|
"reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -1041,7 +1041,7 @@
|
|||||||
"type": "library",
|
"type": "library",
|
||||||
"extra": {
|
"extra": {
|
||||||
"branch-alias": {
|
"branch-alias": {
|
||||||
"dev-main": "1.26-dev"
|
"dev-main": "1.27-dev"
|
||||||
},
|
},
|
||||||
"thanks": {
|
"thanks": {
|
||||||
"name": "symfony/polyfill",
|
"name": "symfony/polyfill",
|
||||||
@@ -1084,7 +1084,7 @@
|
|||||||
"shim"
|
"shim"
|
||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.26.0"
|
"source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.27.0"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -1100,20 +1100,20 @@
|
|||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2022-05-24T11:49:31+00:00"
|
"time": "2022-11-03T14:55:06+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/polyfill-mbstring",
|
"name": "symfony/polyfill-mbstring",
|
||||||
"version": "v1.26.0",
|
"version": "v1.27.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/polyfill-mbstring.git",
|
"url": "https://github.com/symfony/polyfill-mbstring.git",
|
||||||
"reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e"
|
"reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e",
|
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534",
|
||||||
"reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e",
|
"reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -1128,7 +1128,7 @@
|
|||||||
"type": "library",
|
"type": "library",
|
||||||
"extra": {
|
"extra": {
|
||||||
"branch-alias": {
|
"branch-alias": {
|
||||||
"dev-main": "1.26-dev"
|
"dev-main": "1.27-dev"
|
||||||
},
|
},
|
||||||
"thanks": {
|
"thanks": {
|
||||||
"name": "symfony/polyfill",
|
"name": "symfony/polyfill",
|
||||||
@@ -1167,7 +1167,7 @@
|
|||||||
"shim"
|
"shim"
|
||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.26.0"
|
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -1183,20 +1183,20 @@
|
|||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2022-05-24T11:49:31+00:00"
|
"time": "2022-11-03T14:55:06+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/polyfill-php73",
|
"name": "symfony/polyfill-php73",
|
||||||
"version": "v1.26.0",
|
"version": "v1.27.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/polyfill-php73.git",
|
"url": "https://github.com/symfony/polyfill-php73.git",
|
||||||
"reference": "e440d35fa0286f77fb45b79a03fedbeda9307e85"
|
"reference": "9e8ecb5f92152187c4799efd3c96b78ccab18ff9"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/e440d35fa0286f77fb45b79a03fedbeda9307e85",
|
"url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/9e8ecb5f92152187c4799efd3c96b78ccab18ff9",
|
||||||
"reference": "e440d35fa0286f77fb45b79a03fedbeda9307e85",
|
"reference": "9e8ecb5f92152187c4799efd3c96b78ccab18ff9",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -1205,7 +1205,7 @@
|
|||||||
"type": "library",
|
"type": "library",
|
||||||
"extra": {
|
"extra": {
|
||||||
"branch-alias": {
|
"branch-alias": {
|
||||||
"dev-main": "1.26-dev"
|
"dev-main": "1.27-dev"
|
||||||
},
|
},
|
||||||
"thanks": {
|
"thanks": {
|
||||||
"name": "symfony/polyfill",
|
"name": "symfony/polyfill",
|
||||||
@@ -1246,7 +1246,7 @@
|
|||||||
"shim"
|
"shim"
|
||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"source": "https://github.com/symfony/polyfill-php73/tree/v1.26.0"
|
"source": "https://github.com/symfony/polyfill-php73/tree/v1.27.0"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -1262,20 +1262,20 @@
|
|||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2022-05-24T11:49:31+00:00"
|
"time": "2022-11-03T14:55:06+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/polyfill-php80",
|
"name": "symfony/polyfill-php80",
|
||||||
"version": "v1.26.0",
|
"version": "v1.27.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/polyfill-php80.git",
|
"url": "https://github.com/symfony/polyfill-php80.git",
|
||||||
"reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace"
|
"reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/cfa0ae98841b9e461207c13ab093d76b0fa7bace",
|
"url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936",
|
||||||
"reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace",
|
"reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -1284,7 +1284,7 @@
|
|||||||
"type": "library",
|
"type": "library",
|
||||||
"extra": {
|
"extra": {
|
||||||
"branch-alias": {
|
"branch-alias": {
|
||||||
"dev-main": "1.26-dev"
|
"dev-main": "1.27-dev"
|
||||||
},
|
},
|
||||||
"thanks": {
|
"thanks": {
|
||||||
"name": "symfony/polyfill",
|
"name": "symfony/polyfill",
|
||||||
@@ -1329,7 +1329,7 @@
|
|||||||
"shim"
|
"shim"
|
||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"source": "https://github.com/symfony/polyfill-php80/tree/v1.26.0"
|
"source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -1345,7 +1345,7 @@
|
|||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2022-05-10T07:21:04+00:00"
|
"time": "2022-11-03T14:55:06+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/service-contracts",
|
"name": "symfony/service-contracts",
|
||||||
@@ -1432,16 +1432,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/string",
|
"name": "symfony/string",
|
||||||
"version": "v5.4.11",
|
"version": "v5.4.21",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/string.git",
|
"url": "https://github.com/symfony/string.git",
|
||||||
"reference": "5eb661e49ad389e4ae2b6e4df8d783a8a6548322"
|
"reference": "edac10d167b78b1d90f46a80320d632de0bd9f2f"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/string/zipball/5eb661e49ad389e4ae2b6e4df8d783a8a6548322",
|
"url": "https://api.github.com/repos/symfony/string/zipball/edac10d167b78b1d90f46a80320d632de0bd9f2f",
|
||||||
"reference": "5eb661e49ad389e4ae2b6e4df8d783a8a6548322",
|
"reference": "edac10d167b78b1d90f46a80320d632de0bd9f2f",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -1498,7 +1498,7 @@
|
|||||||
"utf8"
|
"utf8"
|
||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"source": "https://github.com/symfony/string/tree/v5.4.11"
|
"source": "https://github.com/symfony/string/tree/v5.4.21"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -1514,34 +1514,42 @@
|
|||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2022-07-24T16:15:25+00:00"
|
"time": "2023-02-22T08:00:55+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "tysonandre/var_representation_polyfill",
|
"name": "tysonandre/var_representation_polyfill",
|
||||||
"version": "0.1.2",
|
"version": "0.1.3",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/TysonAndre/var_representation_polyfill.git",
|
"url": "https://github.com/TysonAndre/var_representation_polyfill.git",
|
||||||
"reference": "e925b7b0806b39f26aa899202ee065decbabafdb"
|
"reference": "e9116c2c352bb0835ca428b442dde7767c11ad32"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/TysonAndre/var_representation_polyfill/zipball/e925b7b0806b39f26aa899202ee065decbabafdb",
|
"url": "https://api.github.com/repos/TysonAndre/var_representation_polyfill/zipball/e9116c2c352bb0835ca428b442dde7767c11ad32",
|
||||||
"reference": "e925b7b0806b39f26aa899202ee065decbabafdb",
|
"reference": "e9116c2c352bb0835ca428b442dde7767c11ad32",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"ext-tokenizer": "*",
|
"ext-tokenizer": "*",
|
||||||
"php": "^7.2.0|^8.0.0"
|
"php": "^7.2.0|^8.0.0"
|
||||||
},
|
},
|
||||||
|
"provide": {
|
||||||
|
"ext-var_representation": "*"
|
||||||
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"phan/phan": "^5.1",
|
"phan/phan": "^5.4.1",
|
||||||
"phpunit/phpunit": "^8.5.0"
|
"phpunit/phpunit": "^8.5.0"
|
||||||
},
|
},
|
||||||
"suggest": {
|
"suggest": {
|
||||||
"ext-var_representation": "*"
|
"ext-var_representation": "For best performance"
|
||||||
},
|
},
|
||||||
"type": "library",
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-main": "0.1.3-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
"files": [
|
"files": [
|
||||||
"src/var_representation.php"
|
"src/var_representation.php"
|
||||||
@@ -1566,9 +1574,9 @@
|
|||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/TysonAndre/var_representation_polyfill/issues",
|
"issues": "https://github.com/TysonAndre/var_representation_polyfill/issues",
|
||||||
"source": "https://github.com/TysonAndre/var_representation_polyfill/tree/0.1.2"
|
"source": "https://github.com/TysonAndre/var_representation_polyfill/tree/0.1.3"
|
||||||
},
|
},
|
||||||
"time": "2022-08-11T12:33:19+00:00"
|
"time": "2022-08-31T12:59:22+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "webmozart/assert",
|
"name": "webmozart/assert",
|
||||||
@@ -1632,30 +1640,30 @@
|
|||||||
"packages-dev": [
|
"packages-dev": [
|
||||||
{
|
{
|
||||||
"name": "doctrine/instantiator",
|
"name": "doctrine/instantiator",
|
||||||
"version": "1.4.1",
|
"version": "1.5.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/doctrine/instantiator.git",
|
"url": "https://github.com/doctrine/instantiator.git",
|
||||||
"reference": "10dcfce151b967d20fde1b34ae6640712c3891bc"
|
"reference": "0a0fa9780f5d4e507415a065172d26a98d02047b"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/doctrine/instantiator/zipball/10dcfce151b967d20fde1b34ae6640712c3891bc",
|
"url": "https://api.github.com/repos/doctrine/instantiator/zipball/0a0fa9780f5d4e507415a065172d26a98d02047b",
|
||||||
"reference": "10dcfce151b967d20fde1b34ae6640712c3891bc",
|
"reference": "0a0fa9780f5d4e507415a065172d26a98d02047b",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"php": "^7.1 || ^8.0"
|
"php": "^7.1 || ^8.0"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"doctrine/coding-standard": "^9",
|
"doctrine/coding-standard": "^9 || ^11",
|
||||||
"ext-pdo": "*",
|
"ext-pdo": "*",
|
||||||
"ext-phar": "*",
|
"ext-phar": "*",
|
||||||
"phpbench/phpbench": "^0.16 || ^1",
|
"phpbench/phpbench": "^0.16 || ^1",
|
||||||
"phpstan/phpstan": "^1.4",
|
"phpstan/phpstan": "^1.4",
|
||||||
"phpstan/phpstan-phpunit": "^1",
|
"phpstan/phpstan-phpunit": "^1",
|
||||||
"phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
|
"phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
|
||||||
"vimeo/psalm": "^4.22"
|
"vimeo/psalm": "^4.30 || ^5.4"
|
||||||
},
|
},
|
||||||
"type": "library",
|
"type": "library",
|
||||||
"autoload": {
|
"autoload": {
|
||||||
@@ -1682,7 +1690,7 @@
|
|||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/doctrine/instantiator/issues",
|
"issues": "https://github.com/doctrine/instantiator/issues",
|
||||||
"source": "https://github.com/doctrine/instantiator/tree/1.4.1"
|
"source": "https://github.com/doctrine/instantiator/tree/1.5.0"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -1698,7 +1706,7 @@
|
|||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2022-03-03T08:28:38+00:00"
|
"time": "2022-12-30T00:15:36+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "myclabs/deep-copy",
|
"name": "myclabs/deep-copy",
|
||||||
@@ -2169,16 +2177,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpunit/phpunit",
|
"name": "phpunit/phpunit",
|
||||||
"version": "8.5.29",
|
"version": "8.5.33",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/sebastianbergmann/phpunit.git",
|
"url": "https://github.com/sebastianbergmann/phpunit.git",
|
||||||
"reference": "e8c563c47a9a303662955518ca532b022b337f4d"
|
"reference": "7d1ff0e8c6b35db78ff13e3e05517d7cbf7aa32e"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/e8c563c47a9a303662955518ca532b022b337f4d",
|
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/7d1ff0e8c6b35db78ff13e3e05517d7cbf7aa32e",
|
||||||
"reference": "e8c563c47a9a303662955518ca532b022b337f4d",
|
"reference": "7d1ff0e8c6b35db78ff13e3e05517d7cbf7aa32e",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -2197,10 +2205,10 @@
|
|||||||
"phpunit/php-file-iterator": "^2.0.4",
|
"phpunit/php-file-iterator": "^2.0.4",
|
||||||
"phpunit/php-text-template": "^1.2.1",
|
"phpunit/php-text-template": "^1.2.1",
|
||||||
"phpunit/php-timer": "^2.1.2",
|
"phpunit/php-timer": "^2.1.2",
|
||||||
"sebastian/comparator": "^3.0.2",
|
"sebastian/comparator": "^3.0.5",
|
||||||
"sebastian/diff": "^3.0.2",
|
"sebastian/diff": "^3.0.2",
|
||||||
"sebastian/environment": "^4.2.3",
|
"sebastian/environment": "^4.2.3",
|
||||||
"sebastian/exporter": "^3.1.2",
|
"sebastian/exporter": "^3.1.5",
|
||||||
"sebastian/global-state": "^3.0.0",
|
"sebastian/global-state": "^3.0.0",
|
||||||
"sebastian/object-enumerator": "^3.0.3",
|
"sebastian/object-enumerator": "^3.0.3",
|
||||||
"sebastian/resource-operations": "^2.0.1",
|
"sebastian/resource-operations": "^2.0.1",
|
||||||
@@ -2246,7 +2254,7 @@
|
|||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
|
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
|
||||||
"source": "https://github.com/sebastianbergmann/phpunit/tree/8.5.29"
|
"source": "https://github.com/sebastianbergmann/phpunit/tree/8.5.33"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -2256,9 +2264,13 @@
|
|||||||
{
|
{
|
||||||
"url": "https://github.com/sebastianbergmann",
|
"url": "https://github.com/sebastianbergmann",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit",
|
||||||
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2022-08-22T13:59:39+00:00"
|
"time": "2023-02-27T13:04:50+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "sebastian/code-unit-reverse-lookup",
|
"name": "sebastian/code-unit-reverse-lookup",
|
||||||
@@ -2317,16 +2329,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "sebastian/comparator",
|
"name": "sebastian/comparator",
|
||||||
"version": "3.0.3",
|
"version": "3.0.5",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/sebastianbergmann/comparator.git",
|
"url": "https://github.com/sebastianbergmann/comparator.git",
|
||||||
"reference": "1071dfcef776a57013124ff35e1fc41ccd294758"
|
"reference": "1dc7ceb4a24aede938c7af2a9ed1de09609ca770"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/1071dfcef776a57013124ff35e1fc41ccd294758",
|
"url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/1dc7ceb4a24aede938c7af2a9ed1de09609ca770",
|
||||||
"reference": "1071dfcef776a57013124ff35e1fc41ccd294758",
|
"reference": "1dc7ceb4a24aede938c7af2a9ed1de09609ca770",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -2379,7 +2391,7 @@
|
|||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/sebastianbergmann/comparator/issues",
|
"issues": "https://github.com/sebastianbergmann/comparator/issues",
|
||||||
"source": "https://github.com/sebastianbergmann/comparator/tree/3.0.3"
|
"source": "https://github.com/sebastianbergmann/comparator/tree/3.0.5"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -2387,7 +2399,7 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2020-11-30T08:04:30+00:00"
|
"time": "2022-09-14T12:31:48+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "sebastian/diff",
|
"name": "sebastian/diff",
|
||||||
@@ -2520,16 +2532,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "sebastian/exporter",
|
"name": "sebastian/exporter",
|
||||||
"version": "3.1.4",
|
"version": "3.1.5",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/sebastianbergmann/exporter.git",
|
"url": "https://github.com/sebastianbergmann/exporter.git",
|
||||||
"reference": "0c32ea2e40dbf59de29f3b49bf375176ce7dd8db"
|
"reference": "73a9676f2833b9a7c36968f9d882589cd75511e6"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/0c32ea2e40dbf59de29f3b49bf375176ce7dd8db",
|
"url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/73a9676f2833b9a7c36968f9d882589cd75511e6",
|
||||||
"reference": "0c32ea2e40dbf59de29f3b49bf375176ce7dd8db",
|
"reference": "73a9676f2833b9a7c36968f9d882589cd75511e6",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -2585,7 +2597,7 @@
|
|||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/sebastianbergmann/exporter/issues",
|
"issues": "https://github.com/sebastianbergmann/exporter/issues",
|
||||||
"source": "https://github.com/sebastianbergmann/exporter/tree/3.1.4"
|
"source": "https://github.com/sebastianbergmann/exporter/tree/3.1.5"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -2593,7 +2605,7 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2021-11-11T13:51:24+00:00"
|
"time": "2022-09-14T06:00:17+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "sebastian/global-state",
|
"name": "sebastian/global-state",
|
||||||
@@ -3055,5 +3067,5 @@
|
|||||||
"platform-overrides": {
|
"platform-overrides": {
|
||||||
"php": "7.2.24"
|
"php": "7.2.24"
|
||||||
},
|
},
|
||||||
"plugin-api-version": "2.3.0"
|
"plugin-api-version": "2.0.0"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1269,6 +1269,9 @@ class TolerantASTConverter
|
|||||||
$variableName !== null ? self::getStartLine($variableName) : $start_line
|
$variableName !== null ? self::getStartLine($variableName) : $start_line
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
'Microsoft\PhpParser\Node\Statement\HaltCompilerStatement' => static function (PhpParser\Node\Statement\HaltCompilerStatement $n, int $start_line): ast\Node {
|
||||||
|
return new ast\Node(ast\AST_HALT_COMPILER, 0, ['offset' => $n->getHaltCompilerOffset()], $start_line);
|
||||||
|
},
|
||||||
'Microsoft\PhpParser\Node\Statement\InterfaceDeclaration' => static function (PhpParser\Node\Statement\InterfaceDeclaration $n, int $start_line): ast\Node {
|
'Microsoft\PhpParser\Node\Statement\InterfaceDeclaration' => static function (PhpParser\Node\Statement\InterfaceDeclaration $n, int $start_line): ast\Node {
|
||||||
if ($n->interfaceKeyword) {
|
if ($n->interfaceKeyword) {
|
||||||
$start_line = self::getStartLine($n->interfaceKeyword);
|
$start_line = self::getStartLine($n->interfaceKeyword);
|
||||||
@@ -1294,7 +1297,7 @@ class TolerantASTConverter
|
|||||||
$end_line = static::getEndLine($n);
|
$end_line = static::getEndLine($n);
|
||||||
$base_class = $n->classBaseClause->baseClass ?? null;
|
$base_class = $n->classBaseClause->baseClass ?? null;
|
||||||
return static::astStmtClass(
|
return static::astStmtClass(
|
||||||
static::phpParserClassModifierToAstClassFlags($n->abstractOrFinalModifier),
|
static::phpParserClassModifiersToAstClassFlags($n->abstractOrFinalModifier, $n->modifiers),
|
||||||
static::tokenToString($n->name),
|
static::tokenToString($n->name),
|
||||||
static::phpParserAttributeGroupsToAstAttributeList($n->attributes),
|
static::phpParserAttributeGroupsToAstAttributeList($n->attributes),
|
||||||
$base_class !== null ? static::phpParserNonValueNodeToAstNode($base_class) : null,
|
$base_class !== null ? static::phpParserNonValueNodeToAstNode($base_class) : null,
|
||||||
@@ -1940,6 +1943,23 @@ class TolerantASTConverter
|
|||||||
return new ast\Node($is_intersection ? ast\AST_TYPE_INTERSECTION : ast\AST_TYPE_UNION, 0, $types, $types[0]->lineno);
|
return new ast\Node($is_intersection ? ast\AST_TYPE_INTERSECTION : ast\AST_TYPE_UNION, 0, $types, $types[0]->lineno);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected static function phpParserParenthesizedIntersectionTypeToAstNode(PhpParser\Node\ParenthesizedIntersectionType $n, int $start_line): ?ast\Node {
|
||||||
|
$children = [];
|
||||||
|
foreach ($n->children->children ?? [] as $c) {
|
||||||
|
if ($c instanceof Token && $c->kind === TokenKind::AmpersandToken) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
$result = self::phpParserTypeToAstNode($c, $start_line);
|
||||||
|
if ($result) {
|
||||||
|
$children[] = $result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (count($children) <= 1) {
|
||||||
|
return $children[0] ?? null;
|
||||||
|
}
|
||||||
|
return new ast\Node(ast\AST_TYPE_INTERSECTION, 0, $children, $start_line);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param PhpParser\Node\QualifiedName|Token|null $type
|
* @param PhpParser\Node\QualifiedName|Token|null $type
|
||||||
*/
|
*/
|
||||||
@@ -1951,7 +1971,12 @@ class TolerantASTConverter
|
|||||||
$original_type = $type;
|
$original_type = $type;
|
||||||
if ($type instanceof PhpParser\Node\QualifiedName) {
|
if ($type instanceof PhpParser\Node\QualifiedName) {
|
||||||
$type = static::phpParserNameToString($type);
|
$type = static::phpParserNameToString($type);
|
||||||
|
} elseif ($type instanceof PhpParser\Node\ParenthesizedIntersectionType) {
|
||||||
|
return static::phpParserParenthesizedIntersectionTypeToAstNode($type, $line);
|
||||||
} elseif ($type instanceof Token) {
|
} elseif ($type instanceof Token) {
|
||||||
|
if (get_class($type) !== Token::class) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
$type = static::tokenToString($type);
|
$type = static::tokenToString($type);
|
||||||
}
|
}
|
||||||
if (\is_string($type)) {
|
if (\is_string($type)) {
|
||||||
@@ -2283,24 +2308,35 @@ class TolerantASTConverter
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
private static function phpParserClassModifierToAstClassFlags(?Token $modifier): int
|
||||||
* @param ?Token $flags
|
|
||||||
* @throws InvalidArgumentException if the class flags were unexpected
|
|
||||||
*/
|
|
||||||
private static function phpParserClassModifierToAstClassFlags(?Token $flags): int
|
|
||||||
{
|
{
|
||||||
if ($flags === null) {
|
if ($modifier === null) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
switch ($flags->kind) {
|
switch ($modifier->kind) {
|
||||||
case TokenKind::AbstractKeyword:
|
case TokenKind::AbstractKeyword:
|
||||||
return flags\CLASS_ABSTRACT;
|
return flags\CLASS_ABSTRACT;
|
||||||
case TokenKind::FinalKeyword:
|
case TokenKind::FinalKeyword:
|
||||||
return flags\CLASS_FINAL;
|
return flags\CLASS_FINAL;
|
||||||
|
case TokenKind::ReadonlyKeyword:
|
||||||
|
return flags\CLASS_READONLY;
|
||||||
default:
|
default:
|
||||||
throw new InvalidArgumentException("Unexpected kind '" . Token::getTokenKindNameFromValue($flags->kind) . "'");
|
throw new InvalidArgumentException("Unexpected kind '" . Token::getTokenKindNameFromValue($modifier->kind) . "'");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* @param ?Token $modifier
|
||||||
|
* @param list<Token> $modifiers
|
||||||
|
* @throws InvalidArgumentException if the class flags were unexpected
|
||||||
|
*/
|
||||||
|
private static function phpParserClassModifiersToAstClassFlags(?Token $modifier, array $modifiers): int
|
||||||
|
{
|
||||||
|
$flags = self::phpParserClassModifierToAstClassFlags($modifier);
|
||||||
|
foreach ($modifiers as $extra_modifier) {
|
||||||
|
$flags |= self::phpParserClassModifierToAstClassFlags($extra_modifier);
|
||||||
|
}
|
||||||
|
return $flags;
|
||||||
|
}
|
||||||
|
|
||||||
private static function interfaceBaseClauseToNode(?\Microsoft\PhpParser\Node\InterfaceBaseClause $node): ?\ast\Node
|
private static function interfaceBaseClauseToNode(?\Microsoft\PhpParser\Node\InterfaceBaseClause $node): ?\ast\Node
|
||||||
{
|
{
|
||||||
|
|||||||
5
vendor/phan/phan/src/Phan/Bootstrap.php
vendored
5
vendor/phan/phan/src/Phan/Bootstrap.php
vendored
@@ -146,8 +146,8 @@ if (extension_loaded('ast')) {
|
|||||||
exit(1);
|
exit(1);
|
||||||
};
|
};
|
||||||
|
|
||||||
if (PHP_VERSION_ID >= 80200 && version_compare($ast_version, '1.0.15') < 0) {
|
if (PHP_VERSION_ID >= 80200 && version_compare($ast_version, '1.1.0') < 0) {
|
||||||
$phan_output_ast_too_old_and_exit('1.0.15', '8.2');
|
$phan_output_ast_too_old_and_exit('1.1.0', '8.2');
|
||||||
} elseif (PHP_VERSION_ID >= 80100 && version_compare($ast_version, '1.0.14') < 0) {
|
} elseif (PHP_VERSION_ID >= 80100 && version_compare($ast_version, '1.0.14') < 0) {
|
||||||
$phan_output_ast_too_old_and_exit('1.0.14', '8.1');
|
$phan_output_ast_too_old_and_exit('1.0.14', '8.1');
|
||||||
} elseif (PHP_VERSION_ID >= 80000 && version_compare($ast_version, '1.0.11') < 0) {
|
} elseif (PHP_VERSION_ID >= 80000 && version_compare($ast_version, '1.0.11') < 0) {
|
||||||
@@ -360,6 +360,7 @@ function phan_error_handler(int $errno, string $errstr, string $errfile, int $er
|
|||||||
}
|
}
|
||||||
if ($errno === E_DEPRECATED) {
|
if ($errno === E_DEPRECATED) {
|
||||||
// Because php 7.2 is used in CI we're stuck on an unmaintained paratest version.
|
// Because php 7.2 is used in CI we're stuck on an unmaintained paratest version.
|
||||||
|
// NOTE: Known issues with dynamic properties in tolerant-php-parser are fixed in `main` (but not 0.1.1) but there may be remaining unknown ones.
|
||||||
if (preg_match('/^Creation of dynamic property (ParaTest\\\\Runners|Microsoft\\\\PhpParser|Phan\\\\LanguageServer\\\\LanguageServer::)/', $errstr)) {
|
if (preg_match('/^Creation of dynamic property (ParaTest\\\\Runners|Microsoft\\\\PhpParser|Phan\\\\LanguageServer\\\\LanguageServer::)/', $errstr)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
2
vendor/phan/phan/src/Phan/CLI.php
vendored
2
vendor/phan/phan/src/Phan/CLI.php
vendored
@@ -84,7 +84,7 @@ class CLI
|
|||||||
/**
|
/**
|
||||||
* This should be updated to x.y.z-dev after every release, and x.y.z before a release.
|
* This should be updated to x.y.z-dev after every release, and x.y.z before a release.
|
||||||
*/
|
*/
|
||||||
public const PHAN_VERSION = '5.4.1';
|
public const PHAN_VERSION = '5.4.2';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* List of short flags passed to getopt
|
* List of short flags passed to getopt
|
||||||
|
|||||||
@@ -488,6 +488,10 @@ class Clazz extends AddressableElement
|
|||||||
foreach ($method_list as $method) {
|
foreach ($method_list as $method) {
|
||||||
$clazz->addMethod($code_base, $method, None::instance());
|
$clazz->addMethod($code_base, $method, None::instance());
|
||||||
}
|
}
|
||||||
|
if (\PHP_VERSION_ID < 80000 && $reflection_method->isConstructor() && \strcasecmp($reflection_method->name, '__construct') !== 0) {
|
||||||
|
// E.g. SoapFault::SoapFault and other soap classes before PHP 8.0
|
||||||
|
$clazz->addMethod($code_base, Method::defaultConstructorForClass($clazz, $code_base), None::instance());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return $clazz;
|
return $clazz;
|
||||||
@@ -2298,6 +2302,11 @@ class Clazz extends AddressableElement
|
|||||||
*/
|
*/
|
||||||
public function hasDynamicProperties(CodeBase $code_base): bool
|
public function hasDynamicProperties(CodeBase $code_base): bool
|
||||||
{
|
{
|
||||||
|
foreach($this->attribute_list as $attr) {
|
||||||
|
if ((string)$attr === '\AllowDynamicProperties') {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
return $this->hasFlagsRecursive($code_base, Flags::CLASS_HAS_DYNAMIC_PROPERTIES);
|
return $this->hasFlagsRecursive($code_base, Flags::CLASS_HAS_DYNAMIC_PROPERTIES);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2979,6 +2988,16 @@ class Clazz extends AddressableElement
|
|||||||
$this->warnAboutAmbiguousInheritance($code_base, $class, $next_class_fqsen);
|
$this->warnAboutAmbiguousInheritance($code_base, $class, $next_class_fqsen);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($attribute_list = $class->getAttributeList()) {
|
||||||
|
foreach($attribute_list as $attr) {
|
||||||
|
if ((string)$attr === "\AllowDynamicProperties") {
|
||||||
|
$new_attribute_list = $this->getAttributeList();
|
||||||
|
$new_attribute_list[] = $attr;
|
||||||
|
$this->setAttributeList($new_attribute_list);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
// Constants should have been imported earlier, but call it again just in case
|
// Constants should have been imported earlier, but call it again just in case
|
||||||
$this->importConstantsFromAncestorClass($code_base, $class);
|
$this->importConstantsFromAncestorClass($code_base, $class);
|
||||||
|
|
||||||
|
|||||||
@@ -3074,7 +3074,7 @@ return [
|
|||||||
'Exception::getTraceAsString' => ['string'],
|
'Exception::getTraceAsString' => ['string'],
|
||||||
'exec' => ['string', 'command'=>'string', '&w_output='=>'array', '&w_result_code='=>'int'],
|
'exec' => ['string', 'command'=>'string', '&w_output='=>'array', '&w_result_code='=>'int'],
|
||||||
'exif_imagetype' => ['int|false', 'filename'=>'string'],
|
'exif_imagetype' => ['int|false', 'filename'=>'string'],
|
||||||
'exif_read_data' => ['array<string,mixed>|false', 'file'=>'string', 'required_sections='=>'string', 'as_arrays='=>'bool', 'read_thumbnail='=>'bool'],
|
'exif_read_data' => ['array<string,mixed>|false', 'file'=>'resource|string', 'required_sections='=>'string', 'as_arrays='=>'bool', 'read_thumbnail='=>'bool'],
|
||||||
'exif_tagname' => ['string|false', 'index'=>'int'],
|
'exif_tagname' => ['string|false', 'index'=>'int'],
|
||||||
'exif_thumbnail' => ['string|false', 'file'=>'string', '&w_width='=>'int', '&w_height='=>'int', '&w_image_type='=>'int'],
|
'exif_thumbnail' => ['string|false', 'file'=>'string', '&w_width='=>'int', '&w_height='=>'int', '&w_image_type='=>'int'],
|
||||||
'exit' => ['', 'status'=>'string|int'],
|
'exit' => ['', 'status'=>'string|int'],
|
||||||
@@ -13136,7 +13136,7 @@ return [
|
|||||||
'SoapClient::__soapCall' => ['', 'name'=>'string', 'args'=>'array', 'options='=>'array', 'inputHeaders='=>'SoapHeader|array', '&w_outputHeaders='=>'array'],
|
'SoapClient::__soapCall' => ['', 'name'=>'string', 'args'=>'array', 'options='=>'array', 'inputHeaders='=>'SoapHeader|array', '&w_outputHeaders='=>'array'],
|
||||||
'SoapClient::SoapClient' => ['object', 'wsdl'=>'mixed', 'options='=>'array'],
|
'SoapClient::SoapClient' => ['object', 'wsdl'=>'mixed', 'options='=>'array'],
|
||||||
'SoapFault::__clone' => ['void'],
|
'SoapFault::__clone' => ['void'],
|
||||||
'SoapFault::__construct' => ['void', 'code'=>'string', 'string'=>'string', 'actor='=>'string', 'details='=>'string', 'name='=>'string', 'headerFault='=>'string'],
|
'SoapFault::__construct' => ['void', 'code'=>'?string|?array{0:string,1:string}', 'string'=>'string', 'actor='=>'string', 'details='=>'mixed', 'name='=>'string', 'headerFault='=>'string'],
|
||||||
'SoapFault::__toString' => ['string'],
|
'SoapFault::__toString' => ['string'],
|
||||||
'SoapFault::__wakeup' => ['void'],
|
'SoapFault::__wakeup' => ['void'],
|
||||||
'SoapFault::getCode' => ['int'],
|
'SoapFault::getCode' => ['int'],
|
||||||
@@ -13146,7 +13146,7 @@ return [
|
|||||||
'SoapFault::getPrevious' => ['?Exception|?Throwable'],
|
'SoapFault::getPrevious' => ['?Exception|?Throwable'],
|
||||||
'SoapFault::getTrace' => ['array'],
|
'SoapFault::getTrace' => ['array'],
|
||||||
'SoapFault::getTraceAsString' => ['string'],
|
'SoapFault::getTraceAsString' => ['string'],
|
||||||
'SoapFault::SoapFault' => ['object', 'faultcode'=>'string', 'faultstring'=>'string', 'faultactor='=>'string', 'detail='=>'string', 'faultname='=>'string', 'headerfault='=>'string'],
|
'SoapFault::SoapFault' => ['void', 'code'=>'?string|?array{0:string,1:string}', 'string'=>'string', 'actor='=>'string', 'details='=>'mixed', 'name='=>'string', 'headerFault='=>'string'],
|
||||||
'SoapHeader::__construct' => ['void', 'namespace'=>'string', 'name'=>'string', 'data='=>'mixed', 'mustUnderstand='=>'bool', 'actor='=>'string'],
|
'SoapHeader::__construct' => ['void', 'namespace'=>'string', 'name'=>'string', 'data='=>'mixed', 'mustUnderstand='=>'bool', 'actor='=>'string'],
|
||||||
'SoapHeader::SoapHeader' => ['object', 'namespace'=>'string', 'name'=>'string', 'data='=>'mixed', 'mustunderstand='=>'bool', 'actor='=>'string'],
|
'SoapHeader::SoapHeader' => ['object', 'namespace'=>'string', 'name'=>'string', 'data='=>'mixed', 'mustunderstand='=>'bool', 'actor='=>'string'],
|
||||||
'SoapParam::__construct' => ['void', 'data'=>'mixed', 'name'=>'string'],
|
'SoapParam::__construct' => ['void', 'data'=>'mixed', 'name'=>'string'],
|
||||||
|
|||||||
@@ -131,6 +131,10 @@ return [
|
|||||||
'ZipArchive::setEncryptionName' => ['bool', 'name'=>'string', 'method'=>'int', 'password='=>'string'],
|
'ZipArchive::setEncryptionName' => ['bool', 'name'=>'string', 'method'=>'int', 'password='=>'string'],
|
||||||
],
|
],
|
||||||
'changed' => [
|
'changed' => [
|
||||||
|
'exif_read_data' => [
|
||||||
|
'old' => ['array<string,mixed>|false', 'file'=>'string', 'required_sections='=>'string', 'as_arrays='=>'bool', 'read_thumbnail='=>'bool'],
|
||||||
|
'new' => ['array<string,mixed>|false', 'file'=>'resource|string', 'required_sections='=>'string', 'as_arrays='=>'bool', 'read_thumbnail='=>'bool'],
|
||||||
|
],
|
||||||
'hash_copy' => [
|
'hash_copy' => [
|
||||||
'old' => ['resource', 'context'=>'resource'],
|
'old' => ['resource', 'context'=>'resource'],
|
||||||
'new' => ['HashContext', 'context'=>'HashContext'],
|
'new' => ['HashContext', 'context'=>'HashContext'],
|
||||||
|
|||||||
@@ -417,6 +417,7 @@ class UseReturnValuePlugin extends PluginV3 implements PostAnalyzeNodeCapability
|
|||||||
'gethostname' => true,
|
'gethostname' => true,
|
||||||
'getimagesize' => true,
|
'getimagesize' => true,
|
||||||
'get_include_path' => true,
|
'get_include_path' => true,
|
||||||
|
'get_mangled_object_vars' => true,
|
||||||
'get_magic_quotes_gpc' => true,
|
'get_magic_quotes_gpc' => true,
|
||||||
'get_magic_quotes_gpc_runtime' => true,
|
'get_magic_quotes_gpc_runtime' => true,
|
||||||
'getmypid' => true,
|
'getmypid' => true,
|
||||||
@@ -457,7 +458,9 @@ class UseReturnValuePlugin extends PluginV3 implements PostAnalyzeNodeCapability
|
|||||||
'hypot' => true,
|
'hypot' => true,
|
||||||
'iconv_strlen' => true,
|
'iconv_strlen' => true,
|
||||||
'iconv' => true,
|
'iconv' => true,
|
||||||
|
'imagecreate' => self::MUST_USE_WITH_SIDE_EFFECTS,
|
||||||
'imagecreatetruecolor' => self::MUST_USE_WITH_SIDE_EFFECTS,
|
'imagecreatetruecolor' => self::MUST_USE_WITH_SIDE_EFFECTS,
|
||||||
|
'imagecreatefromtga' => self::MUST_USE_WITH_SIDE_EFFECTS,
|
||||||
'imagetypes' => true,
|
'imagetypes' => true,
|
||||||
'implode' => true,
|
'implode' => true,
|
||||||
'in_array' => true,
|
'in_array' => true,
|
||||||
@@ -624,10 +627,12 @@ class UseReturnValuePlugin extends PluginV3 implements PostAnalyzeNodeCapability
|
|||||||
'openssl_encrypt' => true,
|
'openssl_encrypt' => true,
|
||||||
'openssl_error_string' => true,
|
'openssl_error_string' => true,
|
||||||
'openssl_random_pseudo_bytes' => true,
|
'openssl_random_pseudo_bytes' => true,
|
||||||
|
'openssl_x509_verify' => true,
|
||||||
'ord' => true,
|
'ord' => true,
|
||||||
'pack' => true,
|
'pack' => true,
|
||||||
'parse_ini_file' => true,
|
'parse_ini_file' => true,
|
||||||
'parse_url' => true,
|
'parse_url' => true,
|
||||||
|
'password_algos' => true,
|
||||||
'pathinfo' => true,
|
'pathinfo' => true,
|
||||||
'pdo::getattribute' => true,
|
'pdo::getattribute' => true,
|
||||||
'pdo::prepare' => true,
|
'pdo::prepare' => true,
|
||||||
@@ -742,6 +747,8 @@ class UseReturnValuePlugin extends PluginV3 implements PostAnalyzeNodeCapability
|
|||||||
'reflectionproperty::getvalue' => true,
|
'reflectionproperty::getvalue' => true,
|
||||||
'reflectionproperty::ispublic' => true,
|
'reflectionproperty::ispublic' => true,
|
||||||
'reflectionproperty::isstatic' => true,
|
'reflectionproperty::isstatic' => true,
|
||||||
|
'reflectionreference::fromarrayelement' => true,
|
||||||
|
'reflectionreference::getid' => true,
|
||||||
'reflectiontype::__tostring' => true,
|
'reflectiontype::__tostring' => true,
|
||||||
'resourcebundle::geterrorcode' => true,
|
'resourcebundle::geterrorcode' => true,
|
||||||
'round' => true,
|
'round' => true,
|
||||||
|
|||||||
@@ -15,6 +15,7 @@
|
|||||||
# The resulting tags file may be combined with tags for JS, CSS, etc.
|
# The resulting tags file may be combined with tags for JS, CSS, etc.
|
||||||
function usage() {
|
function usage() {
|
||||||
echo "Usage: $0 [options for phpctags]" 1>&2
|
echo "Usage: $0 [options for phpctags]" 1>&2
|
||||||
|
echo "You may wish to run ./phan --dump-ctags=basic instead" 1>&2
|
||||||
}
|
}
|
||||||
|
|
||||||
if ! type phpctags ; then
|
if ! type phpctags ; then
|
||||||
|
|||||||
2
vendor/symfony/console/Application.php
vendored
2
vendor/symfony/console/Application.php
vendored
@@ -87,7 +87,7 @@ class Application implements ResetInterface
|
|||||||
private string $defaultCommand;
|
private string $defaultCommand;
|
||||||
private bool $singleCommand = false;
|
private bool $singleCommand = false;
|
||||||
private bool $initialized = false;
|
private bool $initialized = false;
|
||||||
private SignalRegistry $signalRegistry;
|
private ?SignalRegistry $signalRegistry = null;
|
||||||
private array $signalsToDispatchEvent = [];
|
private array $signalsToDispatchEvent = [];
|
||||||
|
|
||||||
public function __construct(string $name = 'UNKNOWN', string $version = 'UNKNOWN')
|
public function __construct(string $name = 'UNKNOWN', string $version = 'UNKNOWN')
|
||||||
|
|||||||
@@ -123,8 +123,6 @@ class ProgressIndicator
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Finish the indicator with message.
|
* Finish the indicator with message.
|
||||||
*
|
|
||||||
* @param $message
|
|
||||||
*/
|
*/
|
||||||
public function finish(string $message)
|
public function finish(string $message)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -36,10 +36,10 @@ class InputArgument
|
|||||||
private string $description;
|
private string $description;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param string $name The argument name
|
* @param string $name The argument name
|
||||||
* @param int|null $mode The argument mode: self::REQUIRED or self::OPTIONAL
|
* @param int|null $mode The argument mode: self::REQUIRED or self::OPTIONAL
|
||||||
* @param string $description A description text
|
* @param string $description A description text
|
||||||
* @param string|bool|int|float|array|null $default The default value (for self::OPTIONAL mode only)
|
* @param string|bool|int|float|array|null $default The default value (for self::OPTIONAL mode only)
|
||||||
* @param array|\Closure(CompletionInput,CompletionSuggestions):list<string|Suggestion> $suggestedValues The values used for input completion
|
* @param array|\Closure(CompletionInput,CompletionSuggestions):list<string|Suggestion> $suggestedValues The values used for input completion
|
||||||
*
|
*
|
||||||
* @throws InvalidArgumentException When argument mode is not valid
|
* @throws InvalidArgumentException When argument mode is not valid
|
||||||
|
|||||||
6
vendor/symfony/console/Input/InputOption.php
vendored
6
vendor/symfony/console/Input/InputOption.php
vendored
@@ -58,9 +58,9 @@ class InputOption
|
|||||||
private string $description;
|
private string $description;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param string|array|null $shortcut The shortcuts, can be null, a string of shortcuts delimited by | or an array of shortcuts
|
* @param string|array|null $shortcut The shortcuts, can be null, a string of shortcuts delimited by | or an array of shortcuts
|
||||||
* @param int|null $mode The option mode: One of the VALUE_* constants
|
* @param int|null $mode The option mode: One of the VALUE_* constants
|
||||||
* @param string|bool|int|float|array|null $default The default value (must be null for self::VALUE_NONE)
|
* @param string|bool|int|float|array|null $default The default value (must be null for self::VALUE_NONE)
|
||||||
* @param array|\Closure(CompletionInput,CompletionSuggestions):list<string|Suggestion> $suggestedValues The values used for input completion
|
* @param array|\Closure(CompletionInput,CompletionSuggestions):list<string|Suggestion> $suggestedValues The values used for input completion
|
||||||
*
|
*
|
||||||
* @throws InvalidArgumentException If option mode is invalid or incompatible
|
* @throws InvalidArgumentException If option mode is invalid or incompatible
|
||||||
|
|||||||
2
vendor/symfony/console/LICENSE
vendored
2
vendor/symfony/console/LICENSE
vendored
@@ -1,4 +1,4 @@
|
|||||||
Copyright (c) 2004-2023 Fabien Potencier
|
Copyright (c) 2004-present Fabien Potencier
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
@@ -115,7 +115,8 @@ class ConsoleSectionOutput extends StreamOutput
|
|||||||
// re-add the line break (that has been removed in the above `explode()` for
|
// re-add the line break (that has been removed in the above `explode()` for
|
||||||
// - every line that is not the last line
|
// - every line that is not the last line
|
||||||
// - if $newline is required, also add it to the last line
|
// - if $newline is required, also add it to the last line
|
||||||
if ($i < $count || $newline) {
|
// - if it's not new line, but input ending with `\PHP_EOL`
|
||||||
|
if ($i < $count || $newline || str_ends_with($input, \PHP_EOL)) {
|
||||||
$lineContent .= \PHP_EOL;
|
$lineContent .= \PHP_EOL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -149,6 +150,15 @@ class ConsoleSectionOutput extends StreamOutput
|
|||||||
return $linesAdded;
|
return $linesAdded;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @internal
|
||||||
|
*/
|
||||||
|
public function addNewLineOfInputSubmit()
|
||||||
|
{
|
||||||
|
$this->content[] = \PHP_EOL;
|
||||||
|
++$this->lines;
|
||||||
|
}
|
||||||
|
|
||||||
protected function doWrite(string $message, bool $newline)
|
protected function doWrite(string $message, bool $newline)
|
||||||
{
|
{
|
||||||
if (!$this->isDecorated()) {
|
if (!$this->isDecorated()) {
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ use Symfony\Component\Console\Helper\TableCell;
|
|||||||
use Symfony\Component\Console\Helper\TableSeparator;
|
use Symfony\Component\Console\Helper\TableSeparator;
|
||||||
use Symfony\Component\Console\Input\InputInterface;
|
use Symfony\Component\Console\Input\InputInterface;
|
||||||
use Symfony\Component\Console\Output\ConsoleOutputInterface;
|
use Symfony\Component\Console\Output\ConsoleOutputInterface;
|
||||||
|
use Symfony\Component\Console\Output\ConsoleSectionOutput;
|
||||||
use Symfony\Component\Console\Output\OutputInterface;
|
use Symfony\Component\Console\Output\OutputInterface;
|
||||||
use Symfony\Component\Console\Output\TrimmedBufferOutput;
|
use Symfony\Component\Console\Output\TrimmedBufferOutput;
|
||||||
use Symfony\Component\Console\Question\ChoiceQuestion;
|
use Symfony\Component\Console\Question\ChoiceQuestion;
|
||||||
@@ -298,6 +299,11 @@ class SymfonyStyle extends OutputStyle
|
|||||||
$answer = $this->questionHelper->ask($this->input, $this, $question);
|
$answer = $this->questionHelper->ask($this->input, $this, $question);
|
||||||
|
|
||||||
if ($this->input->isInteractive()) {
|
if ($this->input->isInteractive()) {
|
||||||
|
if ($this->output instanceof ConsoleSectionOutput) {
|
||||||
|
// add the new line of the `return` to submit the input to ConsoleSectionOutput, because ConsoleSectionOutput is holding all it's lines.
|
||||||
|
// this is relevant when a `ConsoleSectionOutput::clear` is called.
|
||||||
|
$this->output->addNewLineOfInputSubmit();
|
||||||
|
}
|
||||||
$this->newLine();
|
$this->newLine();
|
||||||
$this->bufferedOutput->write("\n");
|
$this->bufferedOutput->write("\n");
|
||||||
}
|
}
|
||||||
|
|||||||
2
vendor/symfony/deprecation-contracts/LICENSE
vendored
2
vendor/symfony/deprecation-contracts/LICENSE
vendored
@@ -1,4 +1,4 @@
|
|||||||
Copyright (c) 2020-2022 Fabien Potencier
|
Copyright (c) 2020-present Fabien Potencier
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
@@ -22,5 +22,5 @@ trigger_deprecation('symfony/blockchain', '8.9', 'Using "%s" is deprecated, use
|
|||||||
This will generate the following message:
|
This will generate the following message:
|
||||||
`Since symfony/blockchain 8.9: Using "bitcoin" is deprecated, use "fabcoin" instead.`
|
`Since symfony/blockchain 8.9: Using "bitcoin" is deprecated, use "fabcoin" instead.`
|
||||||
|
|
||||||
While not necessarily recommended, the deprecation notices can be completely ignored by declaring an empty
|
While not recommended, the deprecation notices can be completely ignored by declaring an empty
|
||||||
`function trigger_deprecation() {}` in your application.
|
`function trigger_deprecation() {}` in your application.
|
||||||
|
|||||||
2
vendor/symfony/service-contracts/LICENSE
vendored
2
vendor/symfony/service-contracts/LICENSE
vendored
@@ -1,4 +1,4 @@
|
|||||||
Copyright (c) 2018-2022 Fabien Potencier
|
Copyright (c) 2018-present Fabien Potencier
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
2
vendor/symfony/service-contracts/README.md
vendored
2
vendor/symfony/service-contracts/README.md
vendored
@@ -3,7 +3,7 @@ Symfony Service Contracts
|
|||||||
|
|
||||||
A set of abstractions extracted out of the Symfony components.
|
A set of abstractions extracted out of the Symfony components.
|
||||||
|
|
||||||
Can be used to build on semantics that the Symfony components proved useful - and
|
Can be used to build on semantics that the Symfony components proved useful and
|
||||||
that already have battle tested implementations.
|
that already have battle tested implementations.
|
||||||
|
|
||||||
See https://github.com/symfony/contracts/blob/main/README.md for more information.
|
See https://github.com/symfony/contracts/blob/main/README.md for more information.
|
||||||
|
|||||||
@@ -26,5 +26,8 @@ namespace Symfony\Contracts\Service;
|
|||||||
*/
|
*/
|
||||||
interface ResetInterface
|
interface ResetInterface
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
public function reset();
|
public function reset();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ use Psr\Container\ContainerInterface;
|
|||||||
* @author Nicolas Grekas <p@tchwork.com>
|
* @author Nicolas Grekas <p@tchwork.com>
|
||||||
* @author Mateusz Sip <mateusz.sip@gmail.com>
|
* @author Mateusz Sip <mateusz.sip@gmail.com>
|
||||||
*
|
*
|
||||||
* @template T of mixed
|
* @template-covariant T of mixed
|
||||||
*/
|
*/
|
||||||
interface ServiceProviderInterface extends ContainerInterface
|
interface ServiceProviderInterface extends ContainerInterface
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -66,12 +66,13 @@ trait ServiceSubscriberTrait
|
|||||||
#[Required]
|
#[Required]
|
||||||
public function setContainer(ContainerInterface $container): ?ContainerInterface
|
public function setContainer(ContainerInterface $container): ?ContainerInterface
|
||||||
{
|
{
|
||||||
$this->container = $container;
|
$ret = null;
|
||||||
|
|
||||||
if (method_exists(get_parent_class(self::class) ?: '', __FUNCTION__)) {
|
if (method_exists(get_parent_class(self::class) ?: '', __FUNCTION__)) {
|
||||||
return parent::setContainer($container);
|
$ret = parent::setContainer($container);
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
$this->container = $container;
|
||||||
|
|
||||||
|
return $ret;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,8 +37,8 @@ abstract class AbstractUnicodeString extends AbstractString
|
|||||||
private const ASCII = "\x20\x65\x69\x61\x73\x6E\x74\x72\x6F\x6C\x75\x64\x5D\x5B\x63\x6D\x70\x27\x0A\x67\x7C\x68\x76\x2E\x66\x62\x2C\x3A\x3D\x2D\x71\x31\x30\x43\x32\x2A\x79\x78\x29\x28\x4C\x39\x41\x53\x2F\x50\x22\x45\x6A\x4D\x49\x6B\x33\x3E\x35\x54\x3C\x44\x34\x7D\x42\x7B\x38\x46\x77\x52\x36\x37\x55\x47\x4E\x3B\x4A\x7A\x56\x23\x48\x4F\x57\x5F\x26\x21\x4B\x3F\x58\x51\x25\x59\x5C\x09\x5A\x2B\x7E\x5E\x24\x40\x60\x7F\x00\x01\x02\x03\x04\x05\x06\x07\x08\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F";
|
private const ASCII = "\x20\x65\x69\x61\x73\x6E\x74\x72\x6F\x6C\x75\x64\x5D\x5B\x63\x6D\x70\x27\x0A\x67\x7C\x68\x76\x2E\x66\x62\x2C\x3A\x3D\x2D\x71\x31\x30\x43\x32\x2A\x79\x78\x29\x28\x4C\x39\x41\x53\x2F\x50\x22\x45\x6A\x4D\x49\x6B\x33\x3E\x35\x54\x3C\x44\x34\x7D\x42\x7B\x38\x46\x77\x52\x36\x37\x55\x47\x4E\x3B\x4A\x7A\x56\x23\x48\x4F\x57\x5F\x26\x21\x4B\x3F\x58\x51\x25\x59\x5C\x09\x5A\x2B\x7E\x5E\x24\x40\x60\x7F\x00\x01\x02\x03\x04\x05\x06\x07\x08\x0B\x0C\x0D\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1A\x1B\x1C\x1D\x1E\x1F";
|
||||||
|
|
||||||
// the subset of folded case mappings that is not in lower case mappings
|
// the subset of folded case mappings that is not in lower case mappings
|
||||||
private const FOLD_FROM = ['İ', 'µ', 'ſ', "\xCD\x85", 'ς', 'ϐ', 'ϑ', 'ϕ', 'ϖ', 'ϰ', 'ϱ', 'ϵ', 'ẛ', "\xE1\xBE\xBE", 'ß', 'İ', 'ʼn', 'ǰ', 'ΐ', 'ΰ', 'և', 'ẖ', 'ẗ', 'ẘ', 'ẙ', 'ẚ', 'ẞ', 'ὐ', 'ὒ', 'ὔ', 'ὖ', 'ᾀ', 'ᾁ', 'ᾂ', 'ᾃ', 'ᾄ', 'ᾅ', 'ᾆ', 'ᾇ', 'ᾈ', 'ᾉ', 'ᾊ', 'ᾋ', 'ᾌ', 'ᾍ', 'ᾎ', 'ᾏ', 'ᾐ', 'ᾑ', 'ᾒ', 'ᾓ', 'ᾔ', 'ᾕ', 'ᾖ', 'ᾗ', 'ᾘ', 'ᾙ', 'ᾚ', 'ᾛ', 'ᾜ', 'ᾝ', 'ᾞ', 'ᾟ', 'ᾠ', 'ᾡ', 'ᾢ', 'ᾣ', 'ᾤ', 'ᾥ', 'ᾦ', 'ᾧ', 'ᾨ', 'ᾩ', 'ᾪ', 'ᾫ', 'ᾬ', 'ᾭ', 'ᾮ', 'ᾯ', 'ᾲ', 'ᾳ', 'ᾴ', 'ᾶ', 'ᾷ', 'ᾼ', 'ῂ', 'ῃ', 'ῄ', 'ῆ', 'ῇ', 'ῌ', 'ῒ', 'ΐ', 'ῖ', 'ῗ', 'ῢ', 'ΰ', 'ῤ', 'ῦ', 'ῧ', 'ῲ', 'ῳ', 'ῴ', 'ῶ', 'ῷ', 'ῼ', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'ſt', 'st', 'ﬓ', 'ﬔ', 'ﬕ', 'ﬖ', 'ﬗ'];
|
private const FOLD_FROM = ['İ', 'µ', 'ſ', "\xCD\x85", 'ς', 'ϐ', 'ϑ', 'ϕ', 'ϖ', 'ϰ', 'ϱ', 'ϵ', 'ẛ', "\xE1\xBE\xBE", 'ß', 'ʼn', 'ǰ', 'ΐ', 'ΰ', 'և', 'ẖ', 'ẗ', 'ẘ', 'ẙ', 'ẚ', 'ẞ', 'ὐ', 'ὒ', 'ὔ', 'ὖ', 'ᾀ', 'ᾁ', 'ᾂ', 'ᾃ', 'ᾄ', 'ᾅ', 'ᾆ', 'ᾇ', 'ᾈ', 'ᾉ', 'ᾊ', 'ᾋ', 'ᾌ', 'ᾍ', 'ᾎ', 'ᾏ', 'ᾐ', 'ᾑ', 'ᾒ', 'ᾓ', 'ᾔ', 'ᾕ', 'ᾖ', 'ᾗ', 'ᾘ', 'ᾙ', 'ᾚ', 'ᾛ', 'ᾜ', 'ᾝ', 'ᾞ', 'ᾟ', 'ᾠ', 'ᾡ', 'ᾢ', 'ᾣ', 'ᾤ', 'ᾥ', 'ᾦ', 'ᾧ', 'ᾨ', 'ᾩ', 'ᾪ', 'ᾫ', 'ᾬ', 'ᾭ', 'ᾮ', 'ᾯ', 'ᾲ', 'ᾳ', 'ᾴ', 'ᾶ', 'ᾷ', 'ᾼ', 'ῂ', 'ῃ', 'ῄ', 'ῆ', 'ῇ', 'ῌ', 'ῒ', 'ῖ', 'ῗ', 'ῢ', 'ῤ', 'ῦ', 'ῧ', 'ῲ', 'ῳ', 'ῴ', 'ῶ', 'ῷ', 'ῼ', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'ſt', 'st', 'ﬓ', 'ﬔ', 'ﬕ', 'ﬖ', 'ﬗ'];
|
||||||
private const FOLD_TO = ['i̇', 'μ', 's', 'ι', 'σ', 'β', 'θ', 'φ', 'π', 'κ', 'ρ', 'ε', 'ṡ', 'ι', 'ss', 'i̇', 'ʼn', 'ǰ', 'ΐ', 'ΰ', 'եւ', 'ẖ', 'ẗ', 'ẘ', 'ẙ', 'aʾ', 'ss', 'ὐ', 'ὒ', 'ὔ', 'ὖ', 'ἀι', 'ἁι', 'ἂι', 'ἃι', 'ἄι', 'ἅι', 'ἆι', 'ἇι', 'ἀι', 'ἁι', 'ἂι', 'ἃι', 'ἄι', 'ἅι', 'ἆι', 'ἇι', 'ἠι', 'ἡι', 'ἢι', 'ἣι', 'ἤι', 'ἥι', 'ἦι', 'ἧι', 'ἠι', 'ἡι', 'ἢι', 'ἣι', 'ἤι', 'ἥι', 'ἦι', 'ἧι', 'ὠι', 'ὡι', 'ὢι', 'ὣι', 'ὤι', 'ὥι', 'ὦι', 'ὧι', 'ὠι', 'ὡι', 'ὢι', 'ὣι', 'ὤι', 'ὥι', 'ὦι', 'ὧι', 'ὰι', 'αι', 'άι', 'ᾶ', 'ᾶι', 'αι', 'ὴι', 'ηι', 'ήι', 'ῆ', 'ῆι', 'ηι', 'ῒ', 'ΐ', 'ῖ', 'ῗ', 'ῢ', 'ΰ', 'ῤ', 'ῦ', 'ῧ', 'ὼι', 'ωι', 'ώι', 'ῶ', 'ῶι', 'ωι', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'st', 'st', 'մն', 'մե', 'մի', 'վն', 'մխ'];
|
private const FOLD_TO = ['i̇', 'μ', 's', 'ι', 'σ', 'β', 'θ', 'φ', 'π', 'κ', 'ρ', 'ε', 'ṡ', 'ι', 'ss', 'ʼn', 'ǰ', 'ΐ', 'ΰ', 'եւ', 'ẖ', 'ẗ', 'ẘ', 'ẙ', 'aʾ', 'ss', 'ὐ', 'ὒ', 'ὔ', 'ὖ', 'ἀι', 'ἁι', 'ἂι', 'ἃι', 'ἄι', 'ἅι', 'ἆι', 'ἇι', 'ἀι', 'ἁι', 'ἂι', 'ἃι', 'ἄι', 'ἅι', 'ἆι', 'ἇι', 'ἠι', 'ἡι', 'ἢι', 'ἣι', 'ἤι', 'ἥι', 'ἦι', 'ἧι', 'ἠι', 'ἡι', 'ἢι', 'ἣι', 'ἤι', 'ἥι', 'ἦι', 'ἧι', 'ὠι', 'ὡι', 'ὢι', 'ὣι', 'ὤι', 'ὥι', 'ὦι', 'ὧι', 'ὠι', 'ὡι', 'ὢι', 'ὣι', 'ὤι', 'ὥι', 'ὦι', 'ὧι', 'ὰι', 'αι', 'άι', 'ᾶ', 'ᾶι', 'αι', 'ὴι', 'ηι', 'ήι', 'ῆ', 'ῆι', 'ηι', 'ῒ', 'ῖ', 'ῗ', 'ῢ', 'ῤ', 'ῦ', 'ῧ', 'ὼι', 'ωι', 'ώι', 'ῶ', 'ῶι', 'ωι', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'st', 'st', 'մն', 'մե', 'մի', 'վն', 'մխ'];
|
||||||
|
|
||||||
// the subset of upper case mappings that map one code point to many code points
|
// the subset of upper case mappings that map one code point to many code points
|
||||||
private const UPPER_FROM = ['ß', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'ſt', 'st', 'և', 'ﬓ', 'ﬔ', 'ﬕ', 'ﬖ', 'ﬗ', 'ʼn', 'ΐ', 'ΰ', 'ǰ', 'ẖ', 'ẗ', 'ẘ', 'ẙ', 'ẚ', 'ὐ', 'ὒ', 'ὔ', 'ὖ', 'ᾶ', 'ῆ', 'ῒ', 'ΐ', 'ῖ', 'ῗ', 'ῢ', 'ΰ', 'ῤ', 'ῦ', 'ῧ', 'ῶ'];
|
private const UPPER_FROM = ['ß', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'ſt', 'st', 'և', 'ﬓ', 'ﬔ', 'ﬕ', 'ﬖ', 'ﬗ', 'ʼn', 'ΐ', 'ΰ', 'ǰ', 'ẖ', 'ẗ', 'ẘ', 'ẙ', 'ẚ', 'ὐ', 'ὒ', 'ὔ', 'ὖ', 'ᾶ', 'ῆ', 'ῒ', 'ΐ', 'ῖ', 'ῗ', 'ῢ', 'ΰ', 'ῤ', 'ῦ', 'ῧ', 'ῶ'];
|
||||||
|
|||||||
2
vendor/symfony/string/LICENSE
vendored
2
vendor/symfony/string/LICENSE
vendored
@@ -1,4 +1,4 @@
|
|||||||
Copyright (c) 2019-2023 Fabien Potencier
|
Copyright (c) 2019-present Fabien Potencier
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
@@ -11,10 +11,6 @@ $DEBUG_ALL = true;
|
|||||||
$PRINT_ALL = true;
|
$PRINT_ALL = true;
|
||||||
$DB_DEBUG = true;
|
$DB_DEBUG = true;
|
||||||
|
|
||||||
if ($DEBUG_ALL) {
|
|
||||||
error_reporting(E_ALL | E_STRICT | E_ERROR | E_WARNING | E_PARSE | E_COMPILE_ERROR);
|
|
||||||
}
|
|
||||||
|
|
||||||
ob_start();
|
ob_start();
|
||||||
|
|
||||||
// basic class test file
|
// basic class test file
|
||||||
@@ -35,9 +31,9 @@ $log = new CoreLibs\Debug\Logging([
|
|||||||
// add file date
|
// add file date
|
||||||
'print_file_date' => true,
|
'print_file_date' => true,
|
||||||
// set debug and print flags
|
// set debug and print flags
|
||||||
'debug_all' => $DEBUG_ALL ?? false,
|
'debug_all' => $DEBUG_ALL,
|
||||||
'echo_all' => $ECHO_ALL ?? false,
|
'echo_all' => $ECHO_ALL,
|
||||||
'print_all' => $PRINT_ALL ?? false,
|
'print_all' => $PRINT_ALL,
|
||||||
]);
|
]);
|
||||||
// db config with logger
|
// db config with logger
|
||||||
$db = new CoreLibs\DB\IO(DB_CONFIG, $log);
|
$db = new CoreLibs\DB\IO(DB_CONFIG, $log);
|
||||||
@@ -47,7 +43,15 @@ $l10n = new \CoreLibs\Language\L10n(
|
|||||||
$locale['domain'],
|
$locale['domain'],
|
||||||
$locale['path'],
|
$locale['path'],
|
||||||
);
|
);
|
||||||
$backend = new CoreLibs\Admin\Backend($db, $log, $session, $l10n, $locale);
|
$backend = new CoreLibs\Admin\Backend(
|
||||||
|
$db,
|
||||||
|
$log,
|
||||||
|
$session,
|
||||||
|
$l10n,
|
||||||
|
$locale,
|
||||||
|
DEFAULT_ACL_LEVEL
|
||||||
|
);
|
||||||
|
use CoreLibs\Debug\Support;
|
||||||
|
|
||||||
$PAGE_NAME = 'TEST CLASS: ADMIN BACKEND';
|
$PAGE_NAME = 'TEST CLASS: ADMIN BACKEND';
|
||||||
print "<!DOCTYPE html>";
|
print "<!DOCTYPE html>";
|
||||||
@@ -57,11 +61,14 @@ print '<div><a href="class_test.php">Class Test Master</a></div>';
|
|||||||
print '<div><h1>' . $PAGE_NAME . '</h1></div>';
|
print '<div><h1>' . $PAGE_NAME . '</h1></div>';
|
||||||
|
|
||||||
// set acl, from eg login acl
|
// set acl, from eg login acl
|
||||||
print "SETACL[]: " . $backend->setACL(['EMPTY' => 'EMPTY']) . "<br>";
|
print "SETACL[]: <br>";
|
||||||
print "ADBEDITLOG: " . $backend->adbEditLog('CLASSTEST-ADMIN', 'Some info stirng') . "<br>";
|
$backend->setACL(['EMPTY' => 'EMPTY']);
|
||||||
print "ADBTOPMENU(0): " . \CoreLibs\Debug\Support::printAr($backend->adbTopMenu()) . "<br>";
|
print "ADBEDITLOG: <br>";
|
||||||
print "ADBMSG: " . $backend->adbMsg('info', 'Message: %1$d', [1]) . "<br>";
|
$backend->adbEditLog('CLASSTEST-ADMIN', 'Some info string');
|
||||||
print "Messaes: " . \CoreLibs\Debug\Support::printAr($backend->messages) . "<br>";
|
print "ADBTOPMENU(0): " . Support::printAr($backend->adbTopMenu(CONTENT_PATH)) . "<br>";
|
||||||
|
print "ADBMSG: <br>";
|
||||||
|
$backend->adbMsg('info', 'Message: %1$d', [1]);
|
||||||
|
print "Messaes: " . Support::printAr($backend->messages) . "<br>";
|
||||||
print "ADBPRINTDATETIME:<br>" . $backend->adbPrintDateTime(2021, 6, 21, 6, 38, '_test') . "<br>";
|
print "ADBPRINTDATETIME:<br>" . $backend->adbPrintDateTime(2021, 6, 21, 6, 38, '_test') . "<br>";
|
||||||
|
|
||||||
// error message
|
// error message
|
||||||
|
|||||||
@@ -6,14 +6,10 @@
|
|||||||
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
$DEBUG_ALL_OVERRIDE = 0; // set to 1 to debug on live/remote server locations
|
$DEBUG_ALL_OVERRIDE = false; // set to 1 to debug on live/remote server locations
|
||||||
$DEBUG_ALL = 1;
|
$DEBUG_ALL = true;
|
||||||
$PRINT_ALL = 1;
|
$PRINT_ALL = true;
|
||||||
$DB_DEBUG = 1;
|
$DB_DEBUG = true;
|
||||||
|
|
||||||
if ($DEBUG_ALL) {
|
|
||||||
error_reporting(E_ALL | E_STRICT | E_ERROR | E_WARNING | E_PARSE | E_COMPILE_ERROR);
|
|
||||||
}
|
|
||||||
|
|
||||||
ob_start();
|
ob_start();
|
||||||
|
|
||||||
@@ -27,6 +23,7 @@ ob_end_flush();
|
|||||||
|
|
||||||
use CoreLibs\Combined\ArrayHandler;
|
use CoreLibs\Combined\ArrayHandler;
|
||||||
use CoreLibs\Debug\Support as DgS;
|
use CoreLibs\Debug\Support as DgS;
|
||||||
|
use CoreLibs\Convert\SetVarType;
|
||||||
|
|
||||||
$log = new CoreLibs\Debug\Logging([
|
$log = new CoreLibs\Debug\Logging([
|
||||||
'log_folder' => BASE . LOG,
|
'log_folder' => BASE . LOG,
|
||||||
@@ -34,9 +31,9 @@ $log = new CoreLibs\Debug\Logging([
|
|||||||
// add file date
|
// add file date
|
||||||
'print_file_date' => true,
|
'print_file_date' => true,
|
||||||
// set debug and print flags
|
// set debug and print flags
|
||||||
'debug_all' => $DEBUG_ALL ?? false,
|
'debug_all' => $DEBUG_ALL,
|
||||||
'echo_all' => $ECHO_ALL ?? false,
|
'echo_all' => $ECHO_ALL ?? false,
|
||||||
'print_all' => $PRINT_ALL ?? false,
|
'print_all' => $PRINT_ALL,
|
||||||
]);
|
]);
|
||||||
// $_array = new CoreLibs\Combined\ArrayHandler();
|
// $_array = new CoreLibs\Combined\ArrayHandler();
|
||||||
// $array_class = 'CoreLibs\Combination\ArrayHandler';
|
// $array_class = 'CoreLibs\Combination\ArrayHandler';
|
||||||
@@ -92,7 +89,9 @@ $array_3 = [
|
|||||||
]
|
]
|
||||||
];
|
];
|
||||||
// recusrice merge
|
// recusrice merge
|
||||||
print "ARRAYMERGERECURSIVE: " . DgS::printAr(ArrayHandler::arrayMergeRecursive($array_1, $array_2, $array_3)) . "<br>";
|
print "ARRAYMERGERECURSIVE: " . DgS::printAr(SetVarType::setArray(
|
||||||
|
ArrayHandler::arrayMergeRecursive($array_1, $array_2, $array_3)
|
||||||
|
)) . "<br>";
|
||||||
// array difference
|
// array difference
|
||||||
$array_left = [
|
$array_left = [
|
||||||
'same' => 'data',
|
'same' => 'data',
|
||||||
@@ -104,7 +103,9 @@ $array_right = [
|
|||||||
];
|
];
|
||||||
print "ARRAYDIFF: " . DgS::printAr(ArrayHandler::arrayDiff($array_left, $array_right)) . "<br>";
|
print "ARRAYDIFF: " . DgS::printAr(ArrayHandler::arrayDiff($array_left, $array_right)) . "<br>";
|
||||||
// in array check
|
// in array check
|
||||||
print "INARRAYANY([1,3], [array]): " . DgS::printAr(ArrayHandler::inArrayAny([1, 3], $array_2)) . "<br>";
|
print "INARRAYANY([1,3], [array]): " . DgS::printAr(SetVarType::setArray(
|
||||||
|
ArrayHandler::inArrayAny([1, 3], $array_2)
|
||||||
|
)) . "<br>";
|
||||||
// flatten array
|
// flatten array
|
||||||
print "FLATTENARRAY: " . DgS::printAr(ArrayHandler::flattenArray($test_array)) . "<br>";
|
print "FLATTENARRAY: " . DgS::printAr(ArrayHandler::flattenArray($test_array)) . "<br>";
|
||||||
print "FLATTENARRAYKEY: " . DgS::printAr(ArrayHandler::flattenArrayKey($test_array)) . "<br>";
|
print "FLATTENARRAYKEY: " . DgS::printAr(ArrayHandler::flattenArrayKey($test_array)) . "<br>";
|
||||||
@@ -114,10 +115,10 @@ print "ARRAYFLATFORKEY: " . DgS::printAr(ArrayHandler::arrayFlatForKey($test_arr
|
|||||||
/**
|
/**
|
||||||
* attach key/value to an array so it becomes nested
|
* attach key/value to an array so it becomes nested
|
||||||
*
|
*
|
||||||
* @param string $pre Attach to new (empty for new root node)
|
* @param string $pre Attach to new (empty for new root node)
|
||||||
* @param string $cur New node
|
* @param string $cur New node
|
||||||
* @param array $node Previous created array
|
* @param array<mixed> $node Previous created array
|
||||||
* @return array Updated array
|
* @return array<mixed> Updated array
|
||||||
*/
|
*/
|
||||||
function rec(string $pre, string $cur, array $node = [])
|
function rec(string $pre, string $cur, array $node = [])
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -11,10 +11,6 @@ $DEBUG_ALL = true;
|
|||||||
$PRINT_ALL = true;
|
$PRINT_ALL = true;
|
||||||
$DB_DEBUG = true;
|
$DB_DEBUG = true;
|
||||||
|
|
||||||
if ($DEBUG_ALL) {
|
|
||||||
error_reporting(E_ALL | E_STRICT | E_ERROR | E_WARNING | E_PARSE | E_COMPILE_ERROR);
|
|
||||||
}
|
|
||||||
|
|
||||||
ob_start();
|
ob_start();
|
||||||
// basic class test file
|
// basic class test file
|
||||||
define('USE_DATABASE', false);
|
define('USE_DATABASE', false);
|
||||||
|
|||||||
@@ -6,14 +6,10 @@
|
|||||||
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
$DEBUG_ALL_OVERRIDE = 0; // set to 1 to debug on live/remote server locations
|
$DEBUG_ALL_OVERRIDE = false; // set to 1 to debug on live/remote server locations
|
||||||
$DEBUG_ALL = 1;
|
$DEBUG_ALL = true;
|
||||||
$PRINT_ALL = 1;
|
$PRINT_ALL = true;
|
||||||
$DB_DEBUG = 1;
|
$DB_DEBUG = true;
|
||||||
|
|
||||||
if ($DEBUG_ALL) {
|
|
||||||
error_reporting(E_ALL | E_STRICT | E_ERROR | E_WARNING | E_PARSE | E_COMPILE_ERROR);
|
|
||||||
}
|
|
||||||
|
|
||||||
ob_start();
|
ob_start();
|
||||||
|
|
||||||
@@ -33,9 +29,9 @@ $log = new CoreLibs\Debug\Logging([
|
|||||||
// add file date
|
// add file date
|
||||||
'print_file_date' => true,
|
'print_file_date' => true,
|
||||||
// set debug and print flags
|
// set debug and print flags
|
||||||
'debug_all' => $DEBUG_ALL ?? false,
|
'debug_all' => $DEBUG_ALL,
|
||||||
'echo_all' => $ECHO_ALL ?? false,
|
'echo_all' => $ECHO_ALL ?? false,
|
||||||
'print_all' => $PRINT_ALL ?? false,
|
'print_all' => $PRINT_ALL,
|
||||||
]);
|
]);
|
||||||
$byte_class = 'CoreLibs\Convert\Byte';
|
$byte_class = 'CoreLibs\Convert\Byte';
|
||||||
|
|
||||||
|
|||||||
@@ -6,14 +6,10 @@
|
|||||||
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
$DEBUG_ALL_OVERRIDE = 0; // set to 1 to debug on live/remote server locations
|
$DEBUG_ALL_OVERRIDE = false; // set to 1 to debug on live/remote server locations
|
||||||
$DEBUG_ALL = 1;
|
$DEBUG_ALL = true;
|
||||||
$PRINT_ALL = 1;
|
$PRINT_ALL = true;
|
||||||
$DB_DEBUG = 1;
|
$DB_DEBUG = true;
|
||||||
|
|
||||||
if ($DEBUG_ALL) {
|
|
||||||
error_reporting(E_ALL | E_STRICT | E_ERROR | E_WARNING | E_PARSE | E_COMPILE_ERROR);
|
|
||||||
}
|
|
||||||
|
|
||||||
ob_start();
|
ob_start();
|
||||||
|
|
||||||
@@ -34,9 +30,9 @@ $log = new CoreLibs\Debug\Logging([
|
|||||||
// add file date
|
// add file date
|
||||||
'print_file_date' => true,
|
'print_file_date' => true,
|
||||||
// set debug and print flags
|
// set debug and print flags
|
||||||
'debug_all' => $DEBUG_ALL ?? false,
|
'debug_all' => $DEBUG_ALL,
|
||||||
'echo_all' => $ECHO_ALL ?? false,
|
'echo_all' => $ECHO_ALL ?? false,
|
||||||
'print_all' => $PRINT_ALL ?? false,
|
'print_all' => $PRINT_ALL,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$PAGE_NAME = 'TEST CLASS: CHECK COLORS';
|
$PAGE_NAME = 'TEST CLASS: CHECK COLORS';
|
||||||
|
|||||||
@@ -6,14 +6,10 @@
|
|||||||
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
$DEBUG_ALL_OVERRIDE = 0; // set to 1 to debug on live/remote server locations
|
$DEBUG_ALL_OVERRIDE = false; // set to 1 to debug on live/remote server locations
|
||||||
$DEBUG_ALL = 1;
|
$DEBUG_ALL = true;
|
||||||
$PRINT_ALL = 1;
|
$PRINT_ALL = true;
|
||||||
$DB_DEBUG = 1;
|
$DB_DEBUG = true;
|
||||||
|
|
||||||
if ($DEBUG_ALL) {
|
|
||||||
error_reporting(E_ALL | E_STRICT | E_ERROR | E_WARNING | E_PARSE | E_COMPILE_ERROR);
|
|
||||||
}
|
|
||||||
|
|
||||||
ob_start();
|
ob_start();
|
||||||
|
|
||||||
@@ -31,9 +27,9 @@ $log = new CoreLibs\Debug\Logging([
|
|||||||
// add file date
|
// add file date
|
||||||
'print_file_date' => true,
|
'print_file_date' => true,
|
||||||
// set debug and print flags
|
// set debug and print flags
|
||||||
'debug_all' => $DEBUG_ALL ?? false,
|
'debug_all' => $DEBUG_ALL,
|
||||||
'echo_all' => $ECHO_ALL ?? false,
|
'echo_all' => $ECHO_ALL ?? false,
|
||||||
'print_all' => $PRINT_ALL ?? false,
|
'print_all' => $PRINT_ALL,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$PAGE_NAME = 'TEST CLASS: CONFIG DIRECT';
|
$PAGE_NAME = 'TEST CLASS: CONFIG DIRECT';
|
||||||
@@ -47,7 +43,7 @@ print "DIR: " . DIR . "<br>";
|
|||||||
print "BASE: " . BASE . "<br>";
|
print "BASE: " . BASE . "<br>";
|
||||||
print "ROOT: " . ROOT . "<br>";
|
print "ROOT: " . ROOT . "<br>";
|
||||||
print "BASE NAME: " . BASE_NAME . "<br>";
|
print "BASE NAME: " . BASE_NAME . "<br>";
|
||||||
echo "Config path prefix: " . $CONFIG_PATH_PREFIX . "<br>";
|
echo "Config path prefix: " . ($CONFIG_PATH_PREFIX ?? '') . "<br>";
|
||||||
print "DB Name: " . DB_CONFIG_NAME . "<br>";
|
print "DB Name: " . DB_CONFIG_NAME . "<br>";
|
||||||
print "DB Config: " . \CoreLibs\Debug\Support::printAr(DB_CONFIG) . "<br>";
|
print "DB Config: " . \CoreLibs\Debug\Support::printAr(DB_CONFIG) . "<br>";
|
||||||
|
|
||||||
|
|||||||
@@ -6,14 +6,10 @@
|
|||||||
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
$DEBUG_ALL_OVERRIDE = 0; // set to 1 to debug on live/remote server locations
|
$DEBUG_ALL_OVERRIDE = false; // set to 1 to debug on live/remote server locations
|
||||||
$DEBUG_ALL = 1;
|
$DEBUG_ALL = true;
|
||||||
$PRINT_ALL = 1;
|
$PRINT_ALL = true;
|
||||||
$DB_DEBUG = 1;
|
$DB_DEBUG = true;
|
||||||
|
|
||||||
if ($DEBUG_ALL) {
|
|
||||||
error_reporting(E_ALL | E_STRICT | E_ERROR | E_WARNING | E_PARSE | E_COMPILE_ERROR);
|
|
||||||
}
|
|
||||||
|
|
||||||
ob_start();
|
ob_start();
|
||||||
|
|
||||||
@@ -31,9 +27,9 @@ $log = new CoreLibs\Debug\Logging([
|
|||||||
// add file date
|
// add file date
|
||||||
'print_file_date' => true,
|
'print_file_date' => true,
|
||||||
// set debug and print flags
|
// set debug and print flags
|
||||||
'debug_all' => $DEBUG_ALL ?? false,
|
'debug_all' => $DEBUG_ALL,
|
||||||
'echo_all' => $ECHO_ALL ?? false,
|
'echo_all' => $ECHO_ALL ?? false,
|
||||||
'print_all' => $PRINT_ALL ?? false,
|
'print_all' => $PRINT_ALL,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$PAGE_NAME = 'TEST CLASS: CONFIG LINK';
|
$PAGE_NAME = 'TEST CLASS: CONFIG LINK';
|
||||||
@@ -47,7 +43,7 @@ print "DIR: " . DIR . "<br>";
|
|||||||
print "BASE: " . BASE . "<br>";
|
print "BASE: " . BASE . "<br>";
|
||||||
print "ROOT: " . ROOT . "<br>";
|
print "ROOT: " . ROOT . "<br>";
|
||||||
print "BASE NAME: " . BASE_NAME . "<br>";
|
print "BASE NAME: " . BASE_NAME . "<br>";
|
||||||
echo "Config path prefix: " . $CONFIG_PATH_PREFIX . "<br>";
|
echo "Config path prefix: " . ($CONFIG_PATH_PREFIX ?? '') . "<br>";
|
||||||
print "DB Name: " . DB_CONFIG_NAME . "<br>";
|
print "DB Name: " . DB_CONFIG_NAME . "<br>";
|
||||||
print "DB Config: " . \CoreLibs\Debug\Support::printAr(DB_CONFIG) . "<br>";
|
print "DB Config: " . \CoreLibs\Debug\Support::printAr(DB_CONFIG) . "<br>";
|
||||||
|
|
||||||
|
|||||||
@@ -6,14 +6,10 @@
|
|||||||
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
$DEBUG_ALL_OVERRIDE = 0; // set to 1 to debug on live/remote server locations
|
$DEBUG_ALL_OVERRIDE = false; // set to 1 to debug on live/remote server locations
|
||||||
$DEBUG_ALL = 1;
|
$DEBUG_ALL = true;
|
||||||
$PRINT_ALL = 1;
|
$PRINT_ALL = true;
|
||||||
$DB_DEBUG = 1;
|
$DB_DEBUG = true;
|
||||||
|
|
||||||
if ($DEBUG_ALL) {
|
|
||||||
error_reporting(E_ALL | E_STRICT | E_ERROR | E_WARNING | E_PARSE | E_COMPILE_ERROR);
|
|
||||||
}
|
|
||||||
|
|
||||||
ob_start();
|
ob_start();
|
||||||
|
|
||||||
@@ -27,6 +23,7 @@ ob_end_flush();
|
|||||||
|
|
||||||
use CoreLibs\Convert\Colors;
|
use CoreLibs\Convert\Colors;
|
||||||
use CoreLibs\Debug\Support as DgS;
|
use CoreLibs\Debug\Support as DgS;
|
||||||
|
use CoreLibs\Convert\SetVarType;
|
||||||
|
|
||||||
$log = new CoreLibs\Debug\Logging([
|
$log = new CoreLibs\Debug\Logging([
|
||||||
'log_folder' => BASE . LOG,
|
'log_folder' => BASE . LOG,
|
||||||
@@ -34,9 +31,9 @@ $log = new CoreLibs\Debug\Logging([
|
|||||||
// add file date
|
// add file date
|
||||||
'print_file_date' => true,
|
'print_file_date' => true,
|
||||||
// set debug and print flags
|
// set debug and print flags
|
||||||
'debug_all' => $DEBUG_ALL ?? false,
|
'debug_all' => $DEBUG_ALL,
|
||||||
'echo_all' => $ECHO_ALL ?? false,
|
'echo_all' => $ECHO_ALL ?? false,
|
||||||
'print_all' => $PRINT_ALL ?? false,
|
'print_all' => $PRINT_ALL,
|
||||||
]);
|
]);
|
||||||
$color_class = 'CoreLibs\Convert\Colors';
|
$color_class = 'CoreLibs\Convert\Colors';
|
||||||
|
|
||||||
@@ -59,24 +56,40 @@ $hsb = [210, 67, 12];
|
|||||||
$hsb_f = [210.5, 67.5, 12.5];
|
$hsb_f = [210.5, 67.5, 12.5];
|
||||||
$hsl = [210, 50, 7.8];
|
$hsl = [210, 50, 7.8];
|
||||||
print "S::COLOR rgb->hex: $rgb[0], $rgb[1], $rgb[2]: " . Colors::rgb2hex($rgb[0], $rgb[1], $rgb[2]) . "<br>";
|
print "S::COLOR rgb->hex: $rgb[0], $rgb[1], $rgb[2]: " . Colors::rgb2hex($rgb[0], $rgb[1], $rgb[2]) . "<br>";
|
||||||
print "S::COLOR hex->rgb: $hex: " . DgS::printAr(Colors::hex2rgb($hex)) . "<br>";
|
print "S::COLOR hex->rgb: $hex: " . DgS::printAr(SetVarType::setArray(
|
||||||
print "C::S/COLOR rgb->hext: $hex: " . DgS::printAr(CoreLibs\Convert\Colors::hex2rgb($hex)) . "<br>";
|
Colors::hex2rgb($hex)
|
||||||
|
)) . "<br>";
|
||||||
|
print "C::S/COLOR rgb->hext: $hex: " . DgS::printAr(SetVarType::setArray(
|
||||||
|
CoreLibs\Convert\Colors::hex2rgb($hex)
|
||||||
|
)) . "<br>";
|
||||||
// C(to hsb/hsl)
|
// C(to hsb/hsl)
|
||||||
print "S::COLOR rgb->hsb: $rgb[0], $rgb[1], $rgb[2]: "
|
print "S::COLOR rgb->hsb: $rgb[0], $rgb[1], $rgb[2]: "
|
||||||
. DgS::printAr(Colors::rgb2hsb($rgb[0], $rgb[1], $rgb[2])) . "<br>";
|
. DgS::printAr(SetVarType::setArray(
|
||||||
|
Colors::rgb2hsb($rgb[0], $rgb[1], $rgb[2])
|
||||||
|
)) . "<br>";
|
||||||
print "S::COLOR rgb->hsl: $rgb[0], $rgb[1], $rgb[2]: "
|
print "S::COLOR rgb->hsl: $rgb[0], $rgb[1], $rgb[2]: "
|
||||||
. DgS::printAr(Colors::rgb2hsl($rgb[0], $rgb[1], $rgb[2])) . "<br>";
|
. DgS::printAr(SetVarType::setArray(
|
||||||
|
Colors::rgb2hsl($rgb[0], $rgb[1], $rgb[2])
|
||||||
|
)) . "<br>";
|
||||||
// D(from hsb/hsl) Note that param 2 + 3 is always 0-100 divided
|
// D(from hsb/hsl) Note that param 2 + 3 is always 0-100 divided
|
||||||
print "S::COLOR hsb->rgb: $hsb[0], $hsb[1], $hsb[2]: "
|
print "S::COLOR hsb->rgb: $hsb[0], $hsb[1], $hsb[2]: "
|
||||||
. DgS::printAr(Colors::hsb2rgb($hsb[0], $hsb[1], $hsb[2])) . "<br>";
|
. DgS::printAr(SetVarType::setArray(
|
||||||
print "S::COLOR hsb_f->rgb: $hsb_f[0], $hsb_f[1], $hsb_f[2]: "
|
Colors::hsb2rgb($hsb[0], $hsb[1], $hsb[2])
|
||||||
. DgS::printAr(Colors::hsb2rgb($hsb_f[0], $hsb_f[1], $hsb_f[2])) . "<br>";
|
)) . "<br>";
|
||||||
|
print "S::COLOR hsb_f->rgb: $hsb_f[0], $hsb_f[1], $hsb_f[2]: "
|
||||||
|
. DgS::printAr(SetVarType::setArray(
|
||||||
|
Colors::hsb2rgb($hsb_f[0], $hsb_f[1], $hsb_f[2])
|
||||||
|
)) . "<br>";
|
||||||
print "S::COLOR hsl->rgb: $hsl[0], $hsl[1], $hsl[2]: "
|
print "S::COLOR hsl->rgb: $hsl[0], $hsl[1], $hsl[2]: "
|
||||||
. DgS::printAr(Colors::hsl2rgb($hsl[0], $hsl[1], $hsl[2])) . "<br>";
|
. DgS::printAr(SetVarType::setArray(
|
||||||
|
Colors::hsl2rgb($hsl[0], $hsl[1], $hsl[2])
|
||||||
|
)) . "<br>";
|
||||||
|
|
||||||
$hsb = [0, 0, 5];
|
$hsb = [0, 0, 5];
|
||||||
print "S::COLOR hsb->rgb: $hsb[0], $hsb[1], $hsb[2]: "
|
print "S::COLOR hsb->rgb: $hsb[0], $hsb[1], $hsb[2]: "
|
||||||
. DgS::printAr(Colors::hsb2rgb($hsb[0], $hsb[1], $hsb[2])) . "<br>";
|
. DgS::printAr(SetVarType::setArray(
|
||||||
|
Colors::hsb2rgb($hsb[0], $hsb[1], $hsb[2])
|
||||||
|
)) . "<br>";
|
||||||
|
|
||||||
// Random text
|
// Random text
|
||||||
$h = rand(0, 359);
|
$h = rand(0, 359);
|
||||||
@@ -84,8 +97,8 @@ $s = rand(15, 70);
|
|||||||
$b = 100;
|
$b = 100;
|
||||||
$l = 50;
|
$l = 50;
|
||||||
print "RANDOM IN: H: " . $h . ", S: " . $s . ", B/L: " . $b . "/" . $l . "<br>";
|
print "RANDOM IN: H: " . $h . ", S: " . $s . ", B/L: " . $b . "/" . $l . "<br>";
|
||||||
print "RANDOM hsb->rgb: <pre>" . DgS::printAr(Colors::hsb2rgb($h, $s, $b)) . "</pre><br>";
|
print "RANDOM hsb->rgb: <pre>" . DgS::printAr(SetVarType::setArray(Colors::hsb2rgb($h, $s, $b))) . "</pre><br>";
|
||||||
print "RANDOM hsl->rgb: <pre>" . DgS::printAr(Colors::hsl2rgb($h, $s, $l)) . "</pre><br>";
|
print "RANDOM hsl->rgb: <pre>" . DgS::printAr(SetVarType::setArray(Colors::hsl2rgb($h, $s, $l))) . "</pre><br>";
|
||||||
|
|
||||||
// TODO: run compare check input must match output
|
// TODO: run compare check input must match output
|
||||||
|
|
||||||
|
|||||||
@@ -13,10 +13,6 @@ $PRINT_ALL = true;
|
|||||||
$ECHO_ALL = true;
|
$ECHO_ALL = true;
|
||||||
$DB_DEBUG = true;
|
$DB_DEBUG = true;
|
||||||
|
|
||||||
if ($DEBUG_ALL) {
|
|
||||||
error_reporting(E_ALL | E_STRICT | E_ERROR | E_WARNING | E_PARSE | E_COMPILE_ERROR);
|
|
||||||
}
|
|
||||||
|
|
||||||
ob_start();
|
ob_start();
|
||||||
|
|
||||||
// basic class test file
|
// basic class test file
|
||||||
|
|||||||
@@ -6,14 +6,10 @@
|
|||||||
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
$DEBUG_ALL_OVERRIDE = 0; // set to 1 to debug on live/remote server locations
|
$DEBUG_ALL_OVERRIDE = false; // set to 1 to debug on live/remote server locations
|
||||||
$DEBUG_ALL = 1;
|
$DEBUG_ALL = true;
|
||||||
$PRINT_ALL = 1;
|
$PRINT_ALL = true;
|
||||||
$DB_DEBUG = 1;
|
$DB_DEBUG = true;
|
||||||
|
|
||||||
if ($DEBUG_ALL) {
|
|
||||||
error_reporting(E_ALL | E_STRICT | E_ERROR | E_WARNING | E_PARSE | E_COMPILE_ERROR);
|
|
||||||
}
|
|
||||||
|
|
||||||
ob_start();
|
ob_start();
|
||||||
|
|
||||||
@@ -34,9 +30,9 @@ $log = new CoreLibs\Debug\Logging([
|
|||||||
// add file date
|
// add file date
|
||||||
'print_file_date' => true,
|
'print_file_date' => true,
|
||||||
// set debug and print flags
|
// set debug and print flags
|
||||||
'debug_all' => $DEBUG_ALL ?? false,
|
'debug_all' => $DEBUG_ALL,
|
||||||
'echo_all' => $ECHO_ALL ?? false,
|
'echo_all' => $ECHO_ALL ?? false,
|
||||||
'print_all' => $PRINT_ALL ?? false,
|
'print_all' => $PRINT_ALL,
|
||||||
]);
|
]);
|
||||||
$datetime_class = 'CoreLibs\Combined\DateTime';
|
$datetime_class = 'CoreLibs\Combined\DateTime';
|
||||||
|
|
||||||
|
|||||||
@@ -31,9 +31,9 @@ $log = new CoreLibs\Debug\Logging([
|
|||||||
// add file date
|
// add file date
|
||||||
'print_file_date' => true,
|
'print_file_date' => true,
|
||||||
// set debug and print flags
|
// set debug and print flags
|
||||||
'debug_all' => $DEBUG_ALL ?? false,
|
'debug_all' => $DEBUG_ALL ?? true,
|
||||||
'echo_all' => $ECHO_ALL ?? false,
|
'echo_all' => $ECHO_ALL,
|
||||||
'print_all' => $PRINT_ALL ?? false,
|
'print_all' => $PRINT_ALL ?? true,
|
||||||
]);
|
]);
|
||||||
// db connection and attach logger
|
// db connection and attach logger
|
||||||
$db = new CoreLibs\DB\IO(DB_CONFIG, $log);
|
$db = new CoreLibs\DB\IO(DB_CONFIG, $log);
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ ob_end_flush();
|
|||||||
use CoreLibs\Debug\Support as DgS;
|
use CoreLibs\Debug\Support as DgS;
|
||||||
use CoreLibs\DB\IO as DbIo;
|
use CoreLibs\DB\IO as DbIo;
|
||||||
use CoreLibs\Debug\Support;
|
use CoreLibs\Debug\Support;
|
||||||
|
use CoreLibs\Convert\SetVarType;
|
||||||
|
|
||||||
$log = new CoreLibs\Debug\Logging([
|
$log = new CoreLibs\Debug\Logging([
|
||||||
'log_folder' => BASE . LOG,
|
'log_folder' => BASE . LOG,
|
||||||
@@ -31,9 +32,9 @@ $log = new CoreLibs\Debug\Logging([
|
|||||||
// add file date
|
// add file date
|
||||||
'print_file_date' => true,
|
'print_file_date' => true,
|
||||||
// set debug and print flags
|
// set debug and print flags
|
||||||
'debug_all' => $DEBUG_ALL ?? false,
|
'debug_all' => $DEBUG_ALL ?? true,
|
||||||
'echo_all' => $ECHO_ALL ?? false,
|
'echo_all' => $ECHO_ALL,
|
||||||
'print_all' => $PRINT_ALL ?? false,
|
'print_all' => $PRINT_ALL ?? true,
|
||||||
]);
|
]);
|
||||||
// db connection and attach logger
|
// db connection and attach logger
|
||||||
$db = new CoreLibs\DB\IO(DB_CONFIG, $log);
|
$db = new CoreLibs\DB\IO(DB_CONFIG, $log);
|
||||||
@@ -131,7 +132,7 @@ $status = $db->dbExec("INSERT INTO test_foo (test, number_a) VALUES "
|
|||||||
print "DIRECT INSERT STATUS: " . Support::printToString($status) . " |<br>"
|
print "DIRECT INSERT STATUS: " . Support::printToString($status) . " |<br>"
|
||||||
. "QUERY: " . $db->dbGetQuery() . " |<br>"
|
. "QUERY: " . $db->dbGetQuery() . " |<br>"
|
||||||
. "DB OBJECT: <pre>" . print_r($status, true) . "</pre>| "
|
. "DB OBJECT: <pre>" . print_r($status, true) . "</pre>| "
|
||||||
. "PRIMARY KEY: " . $db->dbGetInsertPK() . " | "
|
. "PRIMARY KEY: " . Support::printToString($db->dbGetInsertPK()) . " | "
|
||||||
. "RETURNING EXT: " . print_r($db->dbGetReturningExt(), true) . " | "
|
. "RETURNING EXT: " . print_r($db->dbGetReturningExt(), true) . " | "
|
||||||
. "RETURNING EXT[test]: " . print_r($db->dbGetReturningExt('test'), true) . " | "
|
. "RETURNING EXT[test]: " . print_r($db->dbGetReturningExt('test'), true) . " | "
|
||||||
. "RETURNING ARRAY: " . print_r($db->dbGetReturningArray(), true) . "<br>";
|
. "RETURNING ARRAY: " . print_r($db->dbGetReturningArray(), true) . "<br>";
|
||||||
@@ -152,7 +153,7 @@ $status = $db->dbExec($query);
|
|||||||
print "EOM STRING DIRECT INSERT STATUS: " . Support::printToString($status) . " |<br>"
|
print "EOM STRING DIRECT INSERT STATUS: " . Support::printToString($status) . " |<br>"
|
||||||
. "QUERY: " . $db->dbGetQuery() . " |<br>"
|
. "QUERY: " . $db->dbGetQuery() . " |<br>"
|
||||||
. "DB OBJECT: <pre>" . print_r($status, true) . "</pre>| "
|
. "DB OBJECT: <pre>" . print_r($status, true) . "</pre>| "
|
||||||
. "PRIMARY KEY: " . $db->dbGetInsertPK() . " | "
|
. "PRIMARY KEY: " . Support::printToString($db->dbGetInsertPK()) . " | "
|
||||||
. "RETURNING EXT: " . print_r($db->dbGetReturningExt(), true) . " | "
|
. "RETURNING EXT: " . print_r($db->dbGetReturningExt(), true) . " | "
|
||||||
. "RETURNING EXT[test]: " . print_r($db->dbGetReturningExt('test'), true) . " | "
|
. "RETURNING EXT[test]: " . print_r($db->dbGetReturningExt('test'), true) . " | "
|
||||||
. "RETURNING ARRAY: " . print_r($db->dbGetReturningArray(), true) . "<br>";
|
. "RETURNING ARRAY: " . print_r($db->dbGetReturningArray(), true) . "<br>";
|
||||||
@@ -164,12 +165,13 @@ var_dump($db->dbGetReturningExt());
|
|||||||
$last_insert_pk = $db->dbGetInsertPK();
|
$last_insert_pk = $db->dbGetInsertPK();
|
||||||
print "DIRECT INSERT PREVIOUS INSERTED: "
|
print "DIRECT INSERT PREVIOUS INSERTED: "
|
||||||
. print_r($db->dbReturnRow("SELECT test_foo_id, test FROM test_foo "
|
. print_r($db->dbReturnRow("SELECT test_foo_id, test FROM test_foo "
|
||||||
. "WHERE test_foo_id = " . $last_insert_pk), true) . "<br>";
|
. "WHERE test_foo_id = " . (int)$last_insert_pk), true) . "<br>";
|
||||||
|
$__last_insert_pk = (int)$last_insert_pk;
|
||||||
$q = <<<EOM
|
$q = <<<EOM
|
||||||
SELECT
|
SELECT
|
||||||
test_foo_id, test
|
test_foo_id, test
|
||||||
FROM test_foo
|
FROM test_foo
|
||||||
WHERE test_foo_id = $last_insert_pk;
|
WHERE test_foo_id = $__last_insert_pk;
|
||||||
EOM;
|
EOM;
|
||||||
print "EOM READ OF PREVIOUS INSERTED: " . print_r($db->dbReturnRow($q), true) . "<br>";
|
print "EOM READ OF PREVIOUS INSERTED: " . print_r($db->dbReturnRow($q), true) . "<br>";
|
||||||
print "LAST ERROR: " . $db->dbGetLastError() . "<br>";
|
print "LAST ERROR: " . $db->dbGetLastError() . "<br>";
|
||||||
@@ -180,13 +182,13 @@ $db->dbPrepare("ins_test_foo", "INSERT INTO test_foo (test) VALUES ($1) RETURNIN
|
|||||||
$status = $db->dbExecute("ins_test_foo", ['BAR TEST ' . time()]);
|
$status = $db->dbExecute("ins_test_foo", ['BAR TEST ' . time()]);
|
||||||
print "PREPARE INSERT[ins_test_foo] STATUS: " . Support::printToString($status) . " |<br>"
|
print "PREPARE INSERT[ins_test_foo] STATUS: " . Support::printToString($status) . " |<br>"
|
||||||
. "QUERY: " . $db->dbGetPrepareCursorValue('ins_test_foo', 'query') . " |<br>"
|
. "QUERY: " . $db->dbGetPrepareCursorValue('ins_test_foo', 'query') . " |<br>"
|
||||||
. "PRIMARY KEY: " . $db->dbGetInsertPK() . " | "
|
. "PRIMARY KEY: " . Support::printToString($db->dbGetInsertPK()) . " | "
|
||||||
. "RETURNING EXT: " . print_r($db->dbGetReturningExt(), true) . " | "
|
. "RETURNING EXT: " . print_r($db->dbGetReturningExt(), true) . " | "
|
||||||
. "RETURNING RETURN: " . print_r($db->dbGetReturningArray(), true) . "<br>";
|
. "RETURNING RETURN: " . print_r($db->dbGetReturningArray(), true) . "<br>";
|
||||||
|
|
||||||
print "PREPARE INSERT PREVIOUS INSERTED: "
|
print "PREPARE INSERT PREVIOUS INSERTED: "
|
||||||
. print_r($db->dbReturnRow("SELECT test_foo_id, test FROM test_foo "
|
. print_r($db->dbReturnRow("SELECT test_foo_id, test FROM test_foo "
|
||||||
. "WHERE test_foo_id = " . $db->dbGetInsertPK()), true) . "<br>";
|
. "WHERE test_foo_id = " . (int)$db->dbGetInsertPK()), true) . "<br>";
|
||||||
|
|
||||||
print "PREPARE CURSOR RETURN:<br>";
|
print "PREPARE CURSOR RETURN:<br>";
|
||||||
foreach (['pk_name', 'count', 'query', 'returning_id'] as $key) {
|
foreach (['pk_name', 'count', 'query', 'returning_id'] as $key) {
|
||||||
@@ -205,7 +207,7 @@ $db->dbPrepare("ins_test_foo_eom", $query);
|
|||||||
$status = $db->dbExecute("ins_test_foo_eom", ['EOM BAR TEST ' . time()]);
|
$status = $db->dbExecute("ins_test_foo_eom", ['EOM BAR TEST ' . time()]);
|
||||||
print "EOM STRING PREPARE INSERT[ins_test_foo_eom] STATUS: " . Support::printToString($status) . " |<br>"
|
print "EOM STRING PREPARE INSERT[ins_test_foo_eom] STATUS: " . Support::printToString($status) . " |<br>"
|
||||||
. "QUERY: " . $db->dbGetPrepareCursorValue('ins_test_foo_eom', 'query') . " |<br>"
|
. "QUERY: " . $db->dbGetPrepareCursorValue('ins_test_foo_eom', 'query') . " |<br>"
|
||||||
. "PRIMARY KEY: " . $db->dbGetInsertPK() . " | "
|
. "PRIMARY KEY: " . Support::printToString($db->dbGetInsertPK()) . " | "
|
||||||
. "RETURNING EXT: " . print_r($db->dbGetReturningExt(), true) . " | "
|
. "RETURNING EXT: " . print_r($db->dbGetReturningExt(), true) . " | "
|
||||||
. "RETURNING RETURN: " . print_r($db->dbGetReturningArray(), true) . "<br>";
|
. "RETURNING RETURN: " . print_r($db->dbGetReturningArray(), true) . "<br>";
|
||||||
|
|
||||||
@@ -255,21 +257,21 @@ print "EOM STRING DIRECT MULTIPLE INSERT WITH RETURN STATUS: " . Support::printT
|
|||||||
$status = $db->dbExec("INSERT INTO test_foo (test) VALUES ('FOO; TEST " . time() . "')");
|
$status = $db->dbExec("INSERT INTO test_foo (test) VALUES ('FOO; TEST " . time() . "')");
|
||||||
print "DIRECT INSERT NO RETURN STATUS: " . Support::printToString($status) . " |<br>"
|
print "DIRECT INSERT NO RETURN STATUS: " . Support::printToString($status) . " |<br>"
|
||||||
. "QUERY: " . $db->dbGetQuery() . " |<br>"
|
. "QUERY: " . $db->dbGetQuery() . " |<br>"
|
||||||
. "PRIMARY KEY: " . $db->dbGetInsertPK() . " | "
|
. "PRIMARY KEY: " . Support::printToString($db->dbGetInsertPK()) . " | "
|
||||||
. "RETURNING EXT: " . print_r($db->dbGetReturningExt(), true) . " | "
|
. "RETURNING EXT: " . print_r($db->dbGetReturningExt(), true) . " | "
|
||||||
. "RETURNING ARRAY: " . print_r($db->dbGetReturningArray(), true) . "<br>";
|
. "RETURNING ARRAY: " . print_r($db->dbGetReturningArray(), true) . "<br>";
|
||||||
$last_insert_pk = $db->dbGetInsertPK();
|
$last_insert_pk = $db->dbGetInsertPK();
|
||||||
|
|
||||||
// is_array read test
|
// is_array read test
|
||||||
$q = "SELECT test_foo_id, test FROM test_foo WHERE test_foo_id = " . $last_insert_pk;
|
$q = "SELECT test_foo_id, test FROM test_foo WHERE test_foo_id = " . (int)$last_insert_pk;
|
||||||
if (is_array($s_res = $db->dbReturnRow($q)) && !empty($s_res['test'])) {
|
if (is_array($s_res = $db->dbReturnRow($q)) && !empty($s_res['test'])) {
|
||||||
print "WE HAVE DATA FOR: " . $last_insert_pk . " WITH: " . $s_res['test'] . "<br>";
|
print "WE HAVE DATA FOR: " . Support::printToString($last_insert_pk) . " WITH: " . $s_res['test'] . "<br>";
|
||||||
}
|
}
|
||||||
|
|
||||||
// UPDATE WITH RETURNING
|
// UPDATE WITH RETURNING
|
||||||
$status = $db->dbExec("UPDATE test_foo SET test = 'SOMETHING DIFFERENT' "
|
$status = $db->dbExec("UPDATE test_foo SET test = 'SOMETHING DIFFERENT' "
|
||||||
. "WHERE test_foo_id = " . $last_insert_pk . " RETURNING test");
|
. "WHERE test_foo_id = " . (int)$last_insert_pk . " RETURNING test");
|
||||||
print "UPDATE WITH PK " . $last_insert_pk
|
print "UPDATE WITH PK " . Support::printToString($last_insert_pk)
|
||||||
. " RETURN STATUS: " . Support::printToString($status) . " |<br>"
|
. " RETURN STATUS: " . Support::printToString($status) . " |<br>"
|
||||||
. "QUERY: " . $db->dbGetQuery() . " |<br>"
|
. "QUERY: " . $db->dbGetQuery() . " |<br>"
|
||||||
. "RETURNING EXT: " . print_r($db->dbGetReturningExt(), true) . " | "
|
. "RETURNING EXT: " . print_r($db->dbGetReturningExt(), true) . " | "
|
||||||
@@ -279,14 +281,14 @@ print "UPDATE WITH PK " . $last_insert_pk
|
|||||||
$status = $db->dbExec("INSERT INTO test_foobar (type, integer) VALUES ('WITHOUT DATA', 456)");
|
$status = $db->dbExec("INSERT INTO test_foobar (type, integer) VALUES ('WITHOUT DATA', 456)");
|
||||||
print "INSERT WITH NO PRIMARY KEY NO RETURNING STATUS: " . Support::printToString($status) . " |<br>"
|
print "INSERT WITH NO PRIMARY KEY NO RETURNING STATUS: " . Support::printToString($status) . " |<br>"
|
||||||
. "QUERY: " . $db->dbGetQuery() . " |<br>"
|
. "QUERY: " . $db->dbGetQuery() . " |<br>"
|
||||||
. "PRIMARY KEY: " . $db->dbGetInsertPK() . " | "
|
. "PRIMARY KEY: " . Support::printToString($db->dbGetInsertPK()) . " | "
|
||||||
. "RETURNING EXT: " . print_r($db->dbGetReturningExt(), true) . " | "
|
. "RETURNING EXT: " . print_r($db->dbGetReturningExt(), true) . " | "
|
||||||
. "RETURNING ARRAY: " . print_r($db->dbGetReturningArray(), true) . "<br>";
|
. "RETURNING ARRAY: " . print_r($db->dbGetReturningArray(), true) . "<br>";
|
||||||
|
|
||||||
$status = $db->dbExec("INSERT INTO test_foobar (type, integer) VALUES ('WITH DATA', 123) RETURNING type, integer");
|
$status = $db->dbExec("INSERT INTO test_foobar (type, integer) VALUES ('WITH DATA', 123) RETURNING type, integer");
|
||||||
print "INSERT WITH NO PRIMARY KEY WITH RETURNING STATUS: " . Support::printToString($status) . " |<br>"
|
print "INSERT WITH NO PRIMARY KEY WITH RETURNING STATUS: " . Support::printToString($status) . " |<br>"
|
||||||
. "QUERY: " . $db->dbGetQuery() . " |<br>"
|
. "QUERY: " . $db->dbGetQuery() . " |<br>"
|
||||||
. "PRIMARY KEY: " . $db->dbGetInsertPK() . " | "
|
. "PRIMARY KEY: " . Support::printToString($db->dbGetInsertPK()) . " | "
|
||||||
. "RETURNING EXT: " . print_r($db->dbGetReturningExt(), true) . " | "
|
. "RETURNING EXT: " . print_r($db->dbGetReturningExt(), true) . " | "
|
||||||
. "RETURNING ARRAY: " . print_r($db->dbGetReturningArray(), true) . "<br>";
|
. "RETURNING ARRAY: " . print_r($db->dbGetReturningArray(), true) . "<br>";
|
||||||
|
|
||||||
@@ -339,7 +341,7 @@ echo "<hr>";
|
|||||||
|
|
||||||
// NOTE: try to replacate connection still exists if script is run a second time
|
// NOTE: try to replacate connection still exists if script is run a second time
|
||||||
// open pg bouncer connection
|
// open pg bouncer connection
|
||||||
$db_pgb = new CoreLibs\DB\IO($DB_CONFIG['test_pgbouncer'], $log);
|
$db_pgb = new CoreLibs\DB\IO($DB_CONFIG['test_pgbouncer'] ?? [], $log);
|
||||||
print "[PGB] DBINFO: " . $db_pgb->dbInfo() . "<br>";
|
print "[PGB] DBINFO: " . $db_pgb->dbInfo() . "<br>";
|
||||||
if ($db->dbPrepare('pgb_sel_test_foo', $q_prep) === false) {
|
if ($db->dbPrepare('pgb_sel_test_foo', $q_prep) === false) {
|
||||||
print "[PGB] [1] Error in pgb_sel_test_foo prepare<br>";
|
print "[PGB] [1] Error in pgb_sel_test_foo prepare<br>";
|
||||||
@@ -356,7 +358,9 @@ $db_pgb->dbClose();
|
|||||||
|
|
||||||
# db write class test
|
# db write class test
|
||||||
$table = 'test_foo';
|
$table = 'test_foo';
|
||||||
print "TABLE META DATA: " . DgS::printAr($db->dbShowTableMetaData($table)) . "<br>";
|
print "TABLE META DATA: " . DgS::printAr(SetVarType::setArray(
|
||||||
|
$db->dbShowTableMetaData($table)
|
||||||
|
)) . "<br>";
|
||||||
// insert first, then use primary key to update
|
// insert first, then use primary key to update
|
||||||
$primary_key = ''; # unset
|
$primary_key = ''; # unset
|
||||||
$db_write_table = ['test', 'string_a', 'number_a', 'some_bool'];
|
$db_write_table = ['test', 'string_a', 'number_a', 'some_bool'];
|
||||||
@@ -379,7 +383,7 @@ $data = [
|
|||||||
];
|
];
|
||||||
$primary_key = $db->dbWriteDataExt(
|
$primary_key = $db->dbWriteDataExt(
|
||||||
$db_write_table,
|
$db_write_table,
|
||||||
$primary_key,
|
(int)$primary_key,
|
||||||
$table,
|
$table,
|
||||||
$object_fields_not_touch,
|
$object_fields_not_touch,
|
||||||
$object_fields_not_update,
|
$object_fields_not_update,
|
||||||
@@ -391,7 +395,7 @@ $data = [
|
|||||||
];
|
];
|
||||||
$primary_key = $db->dbWriteDataExt(
|
$primary_key = $db->dbWriteDataExt(
|
||||||
$db_write_table,
|
$db_write_table,
|
||||||
$primary_key,
|
(int)$primary_key,
|
||||||
$table,
|
$table,
|
||||||
$object_fields_not_touch,
|
$object_fields_not_touch,
|
||||||
$object_fields_not_update,
|
$object_fields_not_update,
|
||||||
@@ -403,7 +407,7 @@ $data = [
|
|||||||
];
|
];
|
||||||
$primary_key = $db->dbWriteDataExt(
|
$primary_key = $db->dbWriteDataExt(
|
||||||
$db_write_table,
|
$db_write_table,
|
||||||
$primary_key,
|
(int)$primary_key,
|
||||||
$table,
|
$table,
|
||||||
$object_fields_not_touch,
|
$object_fields_not_touch,
|
||||||
$object_fields_not_update,
|
$object_fields_not_update,
|
||||||
@@ -508,24 +512,24 @@ while (($ret = $db->dbCheckAsync()) === true)
|
|||||||
// search path check
|
// search path check
|
||||||
$q = "SHOW search_path";
|
$q = "SHOW search_path";
|
||||||
$cursor = $db->dbExec($q);
|
$cursor = $db->dbExec($q);
|
||||||
$data = $db->dbFetchArray($cursor)['search_path'];
|
$data = $db->dbFetchArray($cursor)['search_path'] ?? '';
|
||||||
print "RETURN DATA FOR search_path: " . $data . "<br>";
|
print "RETURN DATA FOR search_path: " . $data . "<br>";
|
||||||
// print "RETURN DATA FOR search_path: " . DgS::printAr($data) . "<br>";
|
// print "RETURN DATA FOR search_path: " . DgS::printAr($data) . "<br>";
|
||||||
// insert something into test.schema_test and see if we get the PK back
|
// insert something into test.schema_test and see if we get the PK back
|
||||||
$status = $db->dbExec(
|
$status = $db->dbExec(
|
||||||
"INSERT INTO test.schema_test (contents, id) VALUES "
|
"INSERT INTO test.schema_test (contents, id) VALUES "
|
||||||
. "('TIME: " . time() . "', " . rand(1, 10) . ")"
|
. "('TIME: " . (string)time() . "', " . (string)rand(1, 10) . ")"
|
||||||
);
|
);
|
||||||
print "OTHER SCHEMA INSERT STATUS: "
|
print "OTHER SCHEMA INSERT STATUS: "
|
||||||
. Support::printToString($status)
|
. Support::printToString($status)
|
||||||
. " | PK NAME: " . $db->dbGetInsertPKName()
|
. " | PK NAME: " . $db->dbGetInsertPKName()
|
||||||
. ", PRIMARY KEY: " . $db->dbGetInsertPK() . "<br>";
|
. ", PRIMARY KEY: " . Support::printToString($db->dbGetInsertPK()) . "<br>";
|
||||||
|
|
||||||
print "<b>NULL TEST DB READ</b><br>";
|
print "<b>NULL TEST DB READ</b><br>";
|
||||||
$q = "SELECT uid, null_varchar, null_int FROM test_null_data WHERE uid = 'A'";
|
$q = "SELECT uid, null_varchar, null_int FROM test_null_data WHERE uid = 'A'";
|
||||||
$res = $db->dbReturnRow($q);
|
$res = $db->dbReturnRow($q);
|
||||||
var_dump($res);
|
var_dump($res);
|
||||||
print "RES: " . DgS::printAr($res) . "<br>";
|
print "RES: " . DgS::printAr(SetVarType::setArray($res)) . "<br>";
|
||||||
print "ISSET: " . isset($res['null_varchar']) . "<br>";
|
print "ISSET: " . isset($res['null_varchar']) . "<br>";
|
||||||
print "EMPTY: " . empty($res['null_varchar']) . "<br>";
|
print "EMPTY: " . empty($res['null_varchar']) . "<br>";
|
||||||
|
|
||||||
|
|||||||
@@ -13,10 +13,6 @@ $PRINT_ALL = false;
|
|||||||
$ECHO_ALL = true;
|
$ECHO_ALL = true;
|
||||||
$DB_DEBUG = true;
|
$DB_DEBUG = true;
|
||||||
|
|
||||||
if ($DEBUG_ALL) {
|
|
||||||
error_reporting(E_ALL | E_STRICT | E_ERROR | E_WARNING | E_PARSE | E_COMPILE_ERROR);
|
|
||||||
}
|
|
||||||
|
|
||||||
ob_start();
|
ob_start();
|
||||||
|
|
||||||
// basic class test file
|
// basic class test file
|
||||||
@@ -51,12 +47,22 @@ print "<body>";
|
|||||||
print '<div><a href="class_test.php">Class Test Master</a></div>';
|
print '<div><a href="class_test.php">Class Test Master</a></div>';
|
||||||
print '<div><h1>' . $PAGE_NAME . '</h1></div>';
|
print '<div><h1>' . $PAGE_NAME . '</h1></div>';
|
||||||
|
|
||||||
function test()
|
/**
|
||||||
|
* Undocumented function
|
||||||
|
*
|
||||||
|
* @return string|null
|
||||||
|
*/
|
||||||
|
function test(): ?string
|
||||||
{
|
{
|
||||||
return DebugSupport::getCallerMethod(1);
|
return DebugSupport::getCallerMethod(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
function test2()
|
/**
|
||||||
|
* Undocumented function
|
||||||
|
*
|
||||||
|
* @return array<mixed>
|
||||||
|
*/
|
||||||
|
function test2(): array
|
||||||
{
|
{
|
||||||
return DebugSupport::getCallerMethodList(1);
|
return DebugSupport::getCallerMethodList(1);
|
||||||
}
|
}
|
||||||
@@ -108,19 +114,28 @@ $new_log = new CoreLibs\Debug\Logging([
|
|||||||
$new_log->debug('OPTIONS TYPE', 'New Type error');
|
$new_log->debug('OPTIONS TYPE', 'New Type error');
|
||||||
print "OPTIONS LOGGER:<br>" . $new_log->printErrorMsg();
|
print "OPTIONS LOGGER:<br>" . $new_log->printErrorMsg();
|
||||||
$new_log->setLogLevel('debug', 'on', ['A', 'B', 'C' => false]);
|
$new_log->setLogLevel('debug', 'on', ['A', 'B', 'C' => false]);
|
||||||
print "LOG LEVEL: " . DebugSupport::printAr($new_log->getLogLevel('debug', 'on')) . "<br>";
|
print "LOG LEVEL: " . DebugSupport::printAr(\CoreLibs\Convert\SetVarType::setArray(
|
||||||
|
$new_log->getLogLevel('debug', 'on')
|
||||||
|
)) . "<br>";
|
||||||
|
|
||||||
echo "<b>CLASS DEBUG CALL</b><br>";
|
echo "<b>CLASS DEBUG CALL</b><br>";
|
||||||
|
|
||||||
// @codingStandardsIgnoreLine
|
// @codingStandardsIgnoreLine
|
||||||
class TestL
|
class TestL
|
||||||
{
|
{
|
||||||
|
/** @var \CoreLibs\Debug\Logging */
|
||||||
public $log;
|
public $log;
|
||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
$this->log = new CoreLibs\Debug\Logging();
|
$this->log = new CoreLibs\Debug\Logging();
|
||||||
}
|
}
|
||||||
public function test(string $ts = null)
|
/**
|
||||||
|
* Undocumented function
|
||||||
|
*
|
||||||
|
* @param string|null $ts
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function test(?string $ts = null): bool
|
||||||
{
|
{
|
||||||
print "* GETCALLERCLASS(INSIDE CLASS): " . \CoreLibs\Debug\Support::getCallerClass() . "<br>";
|
print "* GETCALLERCLASS(INSIDE CLASS): " . \CoreLibs\Debug\Support::getCallerClass() . "<br>";
|
||||||
$this->log->debug('TESTL', 'Logging in class testL' . ($ts !== null ? ': ' . $ts : ''));
|
$this->log->debug('TESTL', 'Logging in class testL' . ($ts !== null ? ': ' . $ts : ''));
|
||||||
@@ -131,12 +146,18 @@ class TestL
|
|||||||
// @codingStandardsIgnoreLine
|
// @codingStandardsIgnoreLine
|
||||||
class TestR extends TestL
|
class TestR extends TestL
|
||||||
{
|
{
|
||||||
|
/** @var string */
|
||||||
public $foo;
|
public $foo;
|
||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
parent::__construct();
|
parent::__construct();
|
||||||
}
|
}
|
||||||
public function subTest()
|
/**
|
||||||
|
* Undocumented function
|
||||||
|
*
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function subTest(): bool
|
||||||
{
|
{
|
||||||
print "** GETCALLERCLASS(INSIDE EXTND CLASS): " . \CoreLibs\Debug\Support::getCallerClass() . "<br>";
|
print "** GETCALLERCLASS(INSIDE EXTND CLASS): " . \CoreLibs\Debug\Support::getCallerClass() . "<br>";
|
||||||
$this->log->debug('TESTR', 'Logging in class testR (extends testL)');
|
$this->log->debug('TESTR', 'Logging in class testR (extends testL)');
|
||||||
@@ -160,12 +181,18 @@ print "CLASS EXTEND: PRINTERRORMSG: <br>" . $tr->log->printErrorMsg() . "<br>";
|
|||||||
// @codingStandardsIgnoreLine
|
// @codingStandardsIgnoreLine
|
||||||
class AttachOutside
|
class AttachOutside
|
||||||
{
|
{
|
||||||
|
/** @var \CoreLibs\Debug\Logging */
|
||||||
public $log;
|
public $log;
|
||||||
public function __construct(object $logger_class)
|
public function __construct(\CoreLibs\Debug\Logging $logger_class)
|
||||||
{
|
{
|
||||||
$this->log = $logger_class;
|
$this->log = $logger_class;
|
||||||
}
|
}
|
||||||
public function test()
|
/**
|
||||||
|
* Undocumented function
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function test(): string
|
||||||
{
|
{
|
||||||
$this->log->debug('ATTACHOUTSIDE', 'A test');
|
$this->log->debug('ATTACHOUTSIDE', 'A test');
|
||||||
return get_class($this);
|
return get_class($this);
|
||||||
|
|||||||
@@ -6,14 +6,10 @@
|
|||||||
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
$DEBUG_ALL_OVERRIDE = 0; // set to 1 to debug on live/remote server locations
|
$DEBUG_ALL_OVERRIDE = false; // set to 1 to debug on live/remote server locations
|
||||||
$DEBUG_ALL = 1;
|
$DEBUG_ALL = true;
|
||||||
$PRINT_ALL = 1;
|
$PRINT_ALL = true;
|
||||||
$DB_DEBUG = 1;
|
$DB_DEBUG = true;
|
||||||
|
|
||||||
if ($DEBUG_ALL) {
|
|
||||||
error_reporting(E_ALL | E_STRICT | E_ERROR | E_WARNING | E_PARSE | E_COMPILE_ERROR);
|
|
||||||
}
|
|
||||||
|
|
||||||
ob_start();
|
ob_start();
|
||||||
|
|
||||||
@@ -34,9 +30,9 @@ $log = new CoreLibs\Debug\Logging([
|
|||||||
// add file date
|
// add file date
|
||||||
'print_file_date' => true,
|
'print_file_date' => true,
|
||||||
// set debug and print flags
|
// set debug and print flags
|
||||||
'debug_all' => $DEBUG_ALL ?? false,
|
'debug_all' => $DEBUG_ALL,
|
||||||
'echo_all' => $ECHO_ALL ?? false,
|
'echo_all' => $ECHO_ALL ?? false,
|
||||||
'print_all' => $PRINT_ALL ?? false,
|
'print_all' => $PRINT_ALL,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$PAGE_NAME = 'TEST CLASS: HTML/ELEMENTS';
|
$PAGE_NAME = 'TEST CLASS: HTML/ELEMENTS';
|
||||||
|
|||||||
@@ -6,14 +6,10 @@
|
|||||||
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
$DEBUG_ALL_OVERRIDE = 0; // set to 1 to debug on live/remote server locations
|
$DEBUG_ALL_OVERRIDE = false; // set to 1 to debug on live/remote server locations
|
||||||
$DEBUG_ALL = 1;
|
$DEBUG_ALL = true;
|
||||||
$PRINT_ALL = 1;
|
$PRINT_ALL = true;
|
||||||
$DB_DEBUG = 1;
|
$DB_DEBUG = true;
|
||||||
|
|
||||||
if ($DEBUG_ALL) {
|
|
||||||
error_reporting(E_ALL | E_STRICT | E_ERROR | E_WARNING | E_PARSE | E_COMPILE_ERROR);
|
|
||||||
}
|
|
||||||
|
|
||||||
ob_start();
|
ob_start();
|
||||||
|
|
||||||
@@ -35,9 +31,9 @@ $log = new CoreLibs\Debug\Logging([
|
|||||||
// add file date
|
// add file date
|
||||||
'print_file_date' => true,
|
'print_file_date' => true,
|
||||||
// set debug and print flags
|
// set debug and print flags
|
||||||
'debug_all' => $DEBUG_ALL ?? false,
|
'debug_all' => $DEBUG_ALL,
|
||||||
'echo_all' => $ECHO_ALL ?? false,
|
'echo_all' => $ECHO_ALL ?? false,
|
||||||
'print_all' => $PRINT_ALL ?? false,
|
'print_all' => $PRINT_ALL,
|
||||||
]);
|
]);
|
||||||
// class type
|
// class type
|
||||||
$_chk_enc = new CoreLibs\Check\Encoding();
|
$_chk_enc = new CoreLibs\Check\Encoding();
|
||||||
@@ -102,7 +98,7 @@ foreach ($enc_strings as $_string) {
|
|||||||
// static use
|
// static use
|
||||||
$_string = $enc_strings[1];
|
$_string = $enc_strings[1];
|
||||||
$string = $chk_enc::checkConvertEncoding($_string, 'UTF-8', 'ISO-2022-JP-MS');
|
$string = $chk_enc::checkConvertEncoding($_string, 'UTF-8', 'ISO-2022-JP-MS');
|
||||||
print "S::ENC CHECK: $_string: " . ($string === false ? '-OK-' : $string) . "<br>";
|
print "S::ENC CHECK: $_string: " . ($string === false ? '-OK-' : $log->prAr($string)) . "<br>";
|
||||||
|
|
||||||
// error message
|
// error message
|
||||||
print $log->printErrorMsg();
|
print $log->printErrorMsg();
|
||||||
|
|||||||
@@ -6,14 +6,10 @@
|
|||||||
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
$DEBUG_ALL_OVERRIDE = 0; // set to 1 to debug on live/remote server locations
|
$DEBUG_ALL_OVERRIDE = false; // set to 1 to debug on live/remote server locations
|
||||||
$DEBUG_ALL = 1;
|
$DEBUG_ALL = true;
|
||||||
$PRINT_ALL = 1;
|
$PRINT_ALL = true;
|
||||||
$DB_DEBUG = 1;
|
$DB_DEBUG = true;
|
||||||
|
|
||||||
if ($DEBUG_ALL) {
|
|
||||||
error_reporting(E_ALL | E_STRICT | E_ERROR | E_WARNING | E_PARSE | E_COMPILE_ERROR);
|
|
||||||
}
|
|
||||||
|
|
||||||
ob_start();
|
ob_start();
|
||||||
|
|
||||||
@@ -33,9 +29,9 @@ $log = new CoreLibs\Debug\Logging([
|
|||||||
// add file date
|
// add file date
|
||||||
'print_file_date' => true,
|
'print_file_date' => true,
|
||||||
// set debug and print flags
|
// set debug and print flags
|
||||||
'debug_all' => $DEBUG_ALL ?? false,
|
'debug_all' => $DEBUG_ALL,
|
||||||
'echo_all' => $ECHO_ALL ?? false,
|
'echo_all' => $ECHO_ALL ?? false,
|
||||||
'print_all' => $PRINT_ALL ?? false,
|
'print_all' => $PRINT_ALL,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$PAGE_NAME = 'TEST CLASS: FILE';
|
$PAGE_NAME = 'TEST CLASS: FILE';
|
||||||
|
|||||||
@@ -6,14 +6,10 @@
|
|||||||
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
$DEBUG_ALL_OVERRIDE = 0; // set to 1 to debug on live/remote server locations
|
$DEBUG_ALL_OVERRIDE = false; // set to 1 to debug on live/remote server locations
|
||||||
$DEBUG_ALL = 1;
|
$DEBUG_ALL = true;
|
||||||
$PRINT_ALL = 1;
|
$PRINT_ALL = true;
|
||||||
$DB_DEBUG = 1;
|
$DB_DEBUG = true;
|
||||||
|
|
||||||
if ($DEBUG_ALL) {
|
|
||||||
error_reporting(E_ALL | E_STRICT | E_ERROR | E_WARNING | E_PARSE | E_COMPILE_ERROR);
|
|
||||||
}
|
|
||||||
|
|
||||||
ob_start();
|
ob_start();
|
||||||
|
|
||||||
@@ -33,9 +29,9 @@ $log = new CoreLibs\Debug\Logging([
|
|||||||
// add file date
|
// add file date
|
||||||
'print_file_date' => true,
|
'print_file_date' => true,
|
||||||
// set debug and print flags
|
// set debug and print flags
|
||||||
'debug_all' => $DEBUG_ALL ?? false,
|
'debug_all' => $DEBUG_ALL,
|
||||||
'echo_all' => $ECHO_ALL ?? false,
|
'echo_all' => $ECHO_ALL ?? false,
|
||||||
'print_all' => $PRINT_ALL ?? false,
|
'print_all' => $PRINT_ALL,
|
||||||
]);
|
]);
|
||||||
$hash_class = 'CoreLibs\Create\Hash';
|
$hash_class = 'CoreLibs\Create\Hash';
|
||||||
|
|
||||||
|
|||||||
@@ -6,14 +6,10 @@
|
|||||||
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
$DEBUG_ALL_OVERRIDE = 0; // set to 1 to debug on live/remote server locations
|
$DEBUG_ALL_OVERRIDE = false; // set to 1 to debug on live/remote server locations
|
||||||
$DEBUG_ALL = 1;
|
$DEBUG_ALL = true;
|
||||||
$PRINT_ALL = 1;
|
$PRINT_ALL = true;
|
||||||
$DB_DEBUG = 1;
|
$DB_DEBUG = true;
|
||||||
|
|
||||||
if ($DEBUG_ALL) {
|
|
||||||
error_reporting(E_ALL | E_STRICT | E_ERROR | E_WARNING | E_PARSE | E_COMPILE_ERROR);
|
|
||||||
}
|
|
||||||
|
|
||||||
ob_start();
|
ob_start();
|
||||||
|
|
||||||
@@ -34,9 +30,9 @@ $log = new CoreLibs\Debug\Logging([
|
|||||||
// add file date
|
// add file date
|
||||||
'print_file_date' => true,
|
'print_file_date' => true,
|
||||||
// set debug and print flags
|
// set debug and print flags
|
||||||
'debug_all' => $DEBUG_ALL ?? false,
|
'debug_all' => $DEBUG_ALL,
|
||||||
'echo_all' => $ECHO_ALL ?? false,
|
'echo_all' => $ECHO_ALL ?? false,
|
||||||
'print_all' => $PRINT_ALL ?? false,
|
'print_all' => $PRINT_ALL,
|
||||||
]);
|
]);
|
||||||
$_html = new CoreLibs\Convert\Html();
|
$_html = new CoreLibs\Convert\Html();
|
||||||
$_elements = new CoreLibs\Output\Form\Elements();
|
$_elements = new CoreLibs\Output\Form\Elements();
|
||||||
|
|||||||
@@ -6,14 +6,10 @@
|
|||||||
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
$DEBUG_ALL_OVERRIDE = 0; // set to 1 to debug on live/remote server locations
|
$DEBUG_ALL_OVERRIDE = false; // set to 1 to debug on live/remote server locations
|
||||||
$DEBUG_ALL = 1;
|
$DEBUG_ALL = true;
|
||||||
$PRINT_ALL = 1;
|
$PRINT_ALL = true;
|
||||||
$DB_DEBUG = 1;
|
$DB_DEBUG = true;
|
||||||
|
|
||||||
if ($DEBUG_ALL) {
|
|
||||||
error_reporting(E_ALL | E_STRICT | E_ERROR | E_WARNING | E_PARSE | E_COMPILE_ERROR);
|
|
||||||
}
|
|
||||||
|
|
||||||
ob_start();
|
ob_start();
|
||||||
|
|
||||||
@@ -33,9 +29,9 @@ $log = new CoreLibs\Debug\Logging([
|
|||||||
// add file date
|
// add file date
|
||||||
'print_file_date' => true,
|
'print_file_date' => true,
|
||||||
// set debug and print flags
|
// set debug and print flags
|
||||||
'debug_all' => $DEBUG_ALL ?? false,
|
'debug_all' => $DEBUG_ALL,
|
||||||
'echo_all' => $ECHO_ALL ?? false,
|
'echo_all' => $ECHO_ALL ?? false,
|
||||||
'print_all' => $PRINT_ALL ?? false,
|
'print_all' => $PRINT_ALL,
|
||||||
]);
|
]);
|
||||||
$_image = new CoreLibs\Output\Image();
|
$_image = new CoreLibs\Output\Image();
|
||||||
$image_class = 'CoreLibs\Output\Image';
|
$image_class = 'CoreLibs\Output\Image';
|
||||||
@@ -54,12 +50,15 @@ $thumb_width = 250;
|
|||||||
$thumb_height = 300;
|
$thumb_height = 300;
|
||||||
// class
|
// class
|
||||||
$image = BASE . LAYOUT . CONTENT_PATH . IMAGES . 'no_picture_square.jpg';
|
$image = BASE . LAYOUT . CONTENT_PATH . IMAGES . 'no_picture_square.jpg';
|
||||||
|
// folders
|
||||||
|
$cache_folder = BASE . LAYOUT . CONTENT_PATH . CACHE . IMAGES;
|
||||||
|
$web_folder = LAYOUT . CACHE . IMAGES;
|
||||||
// rotate image first
|
// rotate image first
|
||||||
$_image->correctImageOrientation($image);
|
$_image->correctImageOrientation($image);
|
||||||
// thumbnail tests
|
// thumbnail tests
|
||||||
echo "<div>CLASS->CREATETHUMBNAILSIMPLE: "
|
echo "<div>CLASS->CREATETHUMBNAILSIMPLE: "
|
||||||
. basename($image) . ": WIDTH: $thumb_width<br><img src="
|
. basename($image) . ": WIDTH: $thumb_width<br><img src="
|
||||||
. $_image->createThumbnailSimple($image, $thumb_width) . "></div>";
|
. $_image->createThumbnailSimple($image, $thumb_width, 0, $cache_folder, $web_folder) . "></div>";
|
||||||
// static
|
// static
|
||||||
$image = BASE . LAYOUT . CONTENT_PATH . IMAGES . 'no_picture.jpg';
|
$image = BASE . LAYOUT . CONTENT_PATH . IMAGES . 'no_picture.jpg';
|
||||||
// rotate image first
|
// rotate image first
|
||||||
@@ -67,7 +66,7 @@ $image_class::correctImageOrientation($image);
|
|||||||
// thumbnail tests
|
// thumbnail tests
|
||||||
echo "<div>S::CREATETHUMBNAILSIMPLE: "
|
echo "<div>S::CREATETHUMBNAILSIMPLE: "
|
||||||
. basename($image) . ": WIDTH: $thumb_width<br><img src="
|
. basename($image) . ": WIDTH: $thumb_width<br><img src="
|
||||||
. $image_class::createThumbnailSimple($image, $thumb_width) . "></div>";
|
. $image_class::createThumbnailSimple($image, $thumb_width, 0, $cache_folder, $web_folder) . "></div>";
|
||||||
|
|
||||||
echo "U-STATIC VARIOUS:<br>";
|
echo "U-STATIC VARIOUS:<br>";
|
||||||
// image thumbnail
|
// image thumbnail
|
||||||
@@ -92,21 +91,29 @@ $images = array(
|
|||||||
$finfo = new finfo(FILEINFO_MIME_TYPE);
|
$finfo = new finfo(FILEINFO_MIME_TYPE);
|
||||||
foreach ($images as $image) {
|
foreach ($images as $image) {
|
||||||
$image = BASE . LAYOUT . CONTENT_PATH . IMAGES . $image;
|
$image = BASE . LAYOUT . CONTENT_PATH . IMAGES . $image;
|
||||||
list ($height, $width, $img_type) = getimagesize($image);
|
list ($height, $width, $img_type) = \CoreLibs\Convert\SetVarType::setArray(getimagesize($image));
|
||||||
echo "<div><b>IMAGE INFO</b>: " . $height . "x" . $width . ", TYPE: "
|
echo "<div><b>IMAGE INFO</b>: " . $height . "x" . $width . ", TYPE: "
|
||||||
. $img_type . " [" . $finfo->file($image) . "]</div>";
|
. $log->prAr($img_type) . " [" . $finfo->file($image) . "]</div>";
|
||||||
// rotate image first
|
// rotate image first
|
||||||
Image::correctImageOrientation($image);
|
Image::correctImageOrientation($image);
|
||||||
// thumbnail tests
|
// thumbnail tests
|
||||||
echo "<div>" . basename($image) . ": WIDTH: $thumb_width<br><img src="
|
echo "<div>" . basename($image) . ": WIDTH: $thumb_width<br><img src="
|
||||||
. Image::createThumbnailSimple($image, $thumb_width) . "></div>";
|
. Image::createThumbnailSimple($image, $thumb_width, 0, $cache_folder, $web_folder) . "></div>";
|
||||||
echo "<div>" . basename($image) . ": HEIGHT: $thumb_height<br><img src="
|
echo "<div>" . basename($image) . ": HEIGHT: $thumb_height<br><img src="
|
||||||
. Image::createThumbnailSimple($image, 0, $thumb_height) . "></div>";
|
. Image::createThumbnailSimple($image, 0, $thumb_height, $cache_folder, $web_folder) . "></div>";
|
||||||
echo "<div>" . basename($image) . ": WIDTH/HEIGHT: $thumb_width x $thumb_height<br><img src="
|
echo "<div>" . basename($image) . ": WIDTH/HEIGHT: $thumb_width x $thumb_height<br><img src="
|
||||||
. Image::createThumbnailSimple($image, $thumb_width, $thumb_height) . "></div>";
|
. Image::createThumbnailSimple($image, $thumb_width, $thumb_height, $cache_folder, $web_folder) . "></div>";
|
||||||
// test with dummy
|
// test with dummy
|
||||||
echo "<div>" . basename($image) . ": WIDTH/HEIGHT: $thumb_width x $thumb_height (+DUMMY)<br><img src="
|
echo "<div>" . basename($image) . ": WIDTH/HEIGHT: $thumb_width x $thumb_height (+DUMMY)<br><img src="
|
||||||
. Image::createThumbnailSimple($image, $thumb_width, $thumb_height, null, true, false) . "></div>";
|
. Image::createThumbnailSimple(
|
||||||
|
$image,
|
||||||
|
$thumb_width,
|
||||||
|
$thumb_height,
|
||||||
|
$cache_folder,
|
||||||
|
$web_folder,
|
||||||
|
true,
|
||||||
|
false
|
||||||
|
) . "></div>";
|
||||||
echo "<hr>";
|
echo "<hr>";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -6,14 +6,10 @@
|
|||||||
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
$DEBUG_ALL_OVERRIDE = 0; // set to 1 to debug on live/remote server locations
|
$DEBUG_ALL_OVERRIDE = false; // set to 1 to debug on live/remote server locations
|
||||||
$DEBUG_ALL = 1;
|
$DEBUG_ALL = true;
|
||||||
$PRINT_ALL = 1;
|
$PRINT_ALL = true;
|
||||||
$DB_DEBUG = 1;
|
$DB_DEBUG = true;
|
||||||
|
|
||||||
if ($DEBUG_ALL) {
|
|
||||||
error_reporting(E_ALL | E_STRICT | E_ERROR | E_WARNING | E_PARSE | E_COMPILE_ERROR);
|
|
||||||
}
|
|
||||||
|
|
||||||
ob_start();
|
ob_start();
|
||||||
|
|
||||||
@@ -34,9 +30,9 @@ $log = new CoreLibs\Debug\Logging([
|
|||||||
// add file date
|
// add file date
|
||||||
'print_file_date' => true,
|
'print_file_date' => true,
|
||||||
// set debug and print flags
|
// set debug and print flags
|
||||||
'debug_all' => $DEBUG_ALL ?? false,
|
'debug_all' => $DEBUG_ALL,
|
||||||
'echo_all' => $ECHO_ALL ?? false,
|
'echo_all' => $ECHO_ALL ?? false,
|
||||||
'print_all' => $PRINT_ALL ?? false,
|
'print_all' => $PRINT_ALL,
|
||||||
]);
|
]);
|
||||||
$json_class = 'CoreLibs\Convert\Json';
|
$json_class = 'CoreLibs\Convert\Json';
|
||||||
|
|
||||||
|
|||||||
@@ -6,14 +6,10 @@
|
|||||||
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
$DEBUG_ALL_OVERRIDE = 0; // set to 1 to debug on live/remote server locations
|
$DEBUG_ALL_OVERRIDE = false; // set to 1 to debug on live/remote server locations
|
||||||
$DEBUG_ALL = 1;
|
$DEBUG_ALL = true;
|
||||||
$PRINT_ALL = 1;
|
$PRINT_ALL = true;
|
||||||
$DB_DEBUG = 1;
|
$DB_DEBUG = true;
|
||||||
|
|
||||||
if ($DEBUG_ALL) {
|
|
||||||
error_reporting(E_ALL | E_STRICT | E_ERROR | E_WARNING | E_PARSE | E_COMPILE_ERROR);
|
|
||||||
}
|
|
||||||
|
|
||||||
ob_start();
|
ob_start();
|
||||||
|
|
||||||
@@ -33,30 +29,44 @@ print '<div><a href="class_test.php">Class Test Master</a></div>';
|
|||||||
print '<div><h1>' . $PAGE_NAME . '</h1></div>';
|
print '<div><h1>' . $PAGE_NAME . '</h1></div>';
|
||||||
|
|
||||||
use CoreLibs\Language\L10n;
|
use CoreLibs\Language\L10n;
|
||||||
|
use CoreLibs\Language;
|
||||||
use CoreLibs\Debug\Support;
|
use CoreLibs\Debug\Support;
|
||||||
|
|
||||||
echo "<br><b>LIST LOCALES</b><br>";
|
echo "<br><b>LIST LOCALES</b><br>";
|
||||||
|
|
||||||
$locale = 'en_US.UTF-8';
|
$locale = 'en_US.UTF-8';
|
||||||
$locales = CoreLibs\Language\L10n::listLocales($locale);
|
$locales = L10n::listLocales($locale);
|
||||||
print "[" . $locale . "] LOCALES: " . Support::printAr($locales) . "<br>";
|
print "[" . $locale . "] LOCALES: " . Support::printAr($locales) . "<br>";
|
||||||
$locale = 'en.UTF-8';
|
$locale = 'en.UTF-8';
|
||||||
$locales = CoreLibs\Language\L10n::listLocales($locale);
|
$locales = L10n::listLocales($locale);
|
||||||
print "[" . $locale . "] LOCALES: " . Support::printAr($locales) . "<br>";
|
print "[" . $locale . "] LOCALES: " . Support::printAr($locales) . "<br>";
|
||||||
|
|
||||||
echo "<br><b>LOCALE INFO</b><br>";
|
echo "<br><b>PARSE LOCAL</b><br>";
|
||||||
$locale = 'en_US.UTF-8';
|
$locale = 'en_US.UTF-8';
|
||||||
$locale_info = CoreLibs\Language\L10n::parseLocale($locale);
|
$locale_info = L10n::parseLocale($locale);
|
||||||
print "[" . $locale . "] INFO: " . Support::printAr($locale_info) . "<br>";
|
print "[" . $locale . "] INFO: " . Support::printAr($locale_info) . "<br>";
|
||||||
$locale = 'en.UTF-8';
|
$locale = 'en.UTF-8';
|
||||||
$locale_info = CoreLibs\Language\L10n::parseLocale($locale);
|
$locale_info = L10n::parseLocale($locale);
|
||||||
print "[" . $locale . "] INFO: " . Support::printAr($locale_info) . "<br>";
|
print "[" . $locale . "] INFO: " . Support::printAr($locale_info) . "<br>";
|
||||||
|
|
||||||
echo "<br><b>AUTO DETECT</b><br>";
|
echo "<br><b>AUTO DETECT</b><br>";
|
||||||
|
|
||||||
$get_locale = \CoreLibs\Language\GetLocale::setLocale();
|
// DEPRECATED
|
||||||
print "[AUTO]: " . Support::printAr($get_locale) . "<br>";
|
// $get_locale = Language\GetLocale::setLocale();
|
||||||
$get_locale = \CoreLibs\Language\GetLocale::setLocale('en', 'foo', 'ISO-8895');
|
// print "[AUTO, DEPRECATED]: " . Support::printAr($get_locale) . "<br>";
|
||||||
|
$get_locale = Language\GetLocale::setLocale(
|
||||||
|
SITE_LOCALE,
|
||||||
|
str_replace('/', '', CONTENT_PATH),
|
||||||
|
null,
|
||||||
|
BASE . INCLUDES . LOCALE
|
||||||
|
);
|
||||||
|
print "[NAMED CONSTANTS OUTSIDE]: " . Support::printAr($get_locale) . "<br>";
|
||||||
|
$get_locale = Language\GetLocale::setLocale(
|
||||||
|
'en',
|
||||||
|
'foo',
|
||||||
|
'ISO-8895',
|
||||||
|
BASE . INCLUDES . LOCALE
|
||||||
|
);
|
||||||
print "[OVERRIDE]: " . Support::printAr($get_locale) . "<br>";
|
print "[OVERRIDE]: " . Support::printAr($get_locale) . "<br>";
|
||||||
|
|
||||||
// try to load non existing
|
// try to load non existing
|
||||||
@@ -69,7 +79,7 @@ $domain = 'admin';
|
|||||||
$encoding = 'UTF-8';
|
$encoding = 'UTF-8';
|
||||||
$path = BASE . INCLUDES . LOCALE;
|
$path = BASE . INCLUDES . LOCALE;
|
||||||
// load direct
|
// load direct
|
||||||
$l = new CoreLibs\Language\L10n($lang, $domain, $path);
|
$l = new L10n($lang, $domain, $path);
|
||||||
echo "*<br>";
|
echo "*<br>";
|
||||||
echo "LANGUAGE WANT/SET: " . $lang . '/' . $l->getLocale() . "<br>";
|
echo "LANGUAGE WANT/SET: " . $lang . '/' . $l->getLocale() . "<br>";
|
||||||
echo "DOMAIN WANT/SET: " . $domain . '/' . $l->getDomain() . "<br>";
|
echo "DOMAIN WANT/SET: " . $domain . '/' . $l->getDomain() . "<br>";
|
||||||
|
|||||||
@@ -6,14 +6,10 @@
|
|||||||
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
$DEBUG_ALL_OVERRIDE = 0; // set to 1 to debug on live/remote server locations
|
$DEBUG_ALL_OVERRIDE = false; // set to 1 to debug on live/remote server locations
|
||||||
$DEBUG_ALL = 1;
|
$DEBUG_ALL = true;
|
||||||
$PRINT_ALL = 1;
|
$PRINT_ALL = true;
|
||||||
$DB_DEBUG = 1;
|
$DB_DEBUG = true;
|
||||||
|
|
||||||
if ($DEBUG_ALL) {
|
|
||||||
error_reporting(E_ALL | E_STRICT | E_ERROR | E_WARNING | E_PARSE | E_COMPILE_ERROR);
|
|
||||||
}
|
|
||||||
|
|
||||||
ob_start();
|
ob_start();
|
||||||
|
|
||||||
@@ -32,13 +28,26 @@ $log = new CoreLibs\Debug\Logging([
|
|||||||
// add file date
|
// add file date
|
||||||
'print_file_date' => true,
|
'print_file_date' => true,
|
||||||
// set debug and print flags
|
// set debug and print flags
|
||||||
'debug_all' => $DEBUG_ALL ?? false,
|
'debug_all' => $DEBUG_ALL,
|
||||||
'echo_all' => $ECHO_ALL ?? false,
|
'echo_all' => $ECHO_ALL ?? false,
|
||||||
'print_all' => $PRINT_ALL ?? false,
|
'print_all' => $PRINT_ALL,
|
||||||
]);
|
]);
|
||||||
$db = new CoreLibs\DB\IO(DB_CONFIG, $log);
|
$db = new CoreLibs\DB\IO(DB_CONFIG, $log);
|
||||||
$login = new CoreLibs\ACL\Login($db, $log, $session);
|
$login = new CoreLibs\ACL\Login(
|
||||||
|
$db,
|
||||||
|
$log,
|
||||||
|
$session,
|
||||||
|
[
|
||||||
|
'auto_login' => false,
|
||||||
|
'default_acl_level' => DEFAULT_ACL_LEVEL,
|
||||||
|
'logout_target' => LOGOUT_TARGET,
|
||||||
|
'site_locale' => SITE_LOCALE,
|
||||||
|
'site_domain' => SITE_DOMAIN,
|
||||||
|
'locale_path' => BASE . INCLUDES . LOCALE,
|
||||||
|
]
|
||||||
|
);
|
||||||
ob_end_flush();
|
ob_end_flush();
|
||||||
|
$login->loginMainCall();
|
||||||
|
|
||||||
$PAGE_NAME = 'TEST CLASS: LOGIN';
|
$PAGE_NAME = 'TEST CLASS: LOGIN';
|
||||||
print "<!DOCTYPE html>";
|
print "<!DOCTYPE html>";
|
||||||
@@ -53,7 +62,7 @@ echo "MIN ACCESS BASE: " . ($login->loginCheckAccessBase('admin') ? 'OK' : 'BAD'
|
|||||||
echo "MIN ACCESS PAGE: " . ($login->loginCheckAccessPage('admin') ? 'OK' : 'BAD') . "<br>";
|
echo "MIN ACCESS PAGE: " . ($login->loginCheckAccessPage('admin') ? 'OK' : 'BAD') . "<br>";
|
||||||
|
|
||||||
echo "ACL: " . \CoreLibs\Debug\Support::printAr($login->loginGetAcl()) . "<br>";
|
echo "ACL: " . \CoreLibs\Debug\Support::printAr($login->loginGetAcl()) . "<br>";
|
||||||
echo "ACL (MIN): " . \CoreLibs\Debug\Support::printAr($login->loginGetAcl()['min']) . "<br>";
|
echo "ACL (MIN): " . \CoreLibs\Debug\Support::printAr($login->loginGetAcl()['min'] ?? []) . "<br>";
|
||||||
|
|
||||||
// error message
|
// error message
|
||||||
print $log->printErrorMsg();
|
print $log->printErrorMsg();
|
||||||
|
|||||||
@@ -6,14 +6,10 @@
|
|||||||
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
$DEBUG_ALL_OVERRIDE = 0; // set to 1 to debug on live/remote server locations
|
$DEBUG_ALL_OVERRIDE = false; // set to 1 to debug on live/remote server locations
|
||||||
$DEBUG_ALL = 1;
|
$DEBUG_ALL = true;
|
||||||
$PRINT_ALL = 1;
|
$PRINT_ALL = true;
|
||||||
$DB_DEBUG = 1;
|
$DB_DEBUG = true;
|
||||||
|
|
||||||
if ($DEBUG_ALL) {
|
|
||||||
error_reporting(E_ALL | E_STRICT | E_ERROR | E_WARNING | E_PARSE | E_COMPILE_ERROR);
|
|
||||||
}
|
|
||||||
|
|
||||||
ob_start();
|
ob_start();
|
||||||
|
|
||||||
@@ -31,9 +27,9 @@ $log = new CoreLibs\Debug\Logging([
|
|||||||
// add file date
|
// add file date
|
||||||
'print_file_date' => true,
|
'print_file_date' => true,
|
||||||
// set debug and print flags
|
// set debug and print flags
|
||||||
'debug_all' => $DEBUG_ALL ?? false,
|
'debug_all' => $DEBUG_ALL,
|
||||||
'echo_all' => $ECHO_ALL ?? false,
|
'echo_all' => $ECHO_ALL ?? false,
|
||||||
'print_all' => $PRINT_ALL ?? false,
|
'print_all' => $PRINT_ALL,
|
||||||
]);
|
]);
|
||||||
$_math = new CoreLibs\Convert\Math();
|
$_math = new CoreLibs\Convert\Math();
|
||||||
$math_class = 'CoreLibs\Convert\Math';
|
$math_class = 'CoreLibs\Convert\Math';
|
||||||
|
|||||||
@@ -6,14 +6,10 @@
|
|||||||
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
$DEBUG_ALL_OVERRIDE = 0; // set to 1 to debug on live/remote server locations
|
$DEBUG_ALL_OVERRIDE = false; // set to 1 to debug on live/remote server locations
|
||||||
$DEBUG_ALL = 1;
|
$DEBUG_ALL = true;
|
||||||
$PRINT_ALL = 1;
|
$PRINT_ALL = true;
|
||||||
$DB_DEBUG = 1;
|
$DB_DEBUG = true;
|
||||||
|
|
||||||
if ($DEBUG_ALL) {
|
|
||||||
error_reporting(E_ALL | E_STRICT | E_ERROR | E_WARNING | E_PARSE | E_COMPILE_ERROR);
|
|
||||||
}
|
|
||||||
|
|
||||||
ob_start();
|
ob_start();
|
||||||
|
|
||||||
@@ -34,9 +30,9 @@ $log = new CoreLibs\Debug\Logging([
|
|||||||
// add file date
|
// add file date
|
||||||
'print_file_date' => true,
|
'print_file_date' => true,
|
||||||
// set debug and print flags
|
// set debug and print flags
|
||||||
'debug_all' => $DEBUG_ALL ?? false,
|
'debug_all' => $DEBUG_ALL,
|
||||||
'echo_all' => $ECHO_ALL ?? false,
|
'echo_all' => $ECHO_ALL ?? false,
|
||||||
'print_all' => $PRINT_ALL ?? false,
|
'print_all' => $PRINT_ALL,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$PAGE_NAME = 'TEST CLASS: MEMORY USAGE';
|
$PAGE_NAME = 'TEST CLASS: MEMORY USAGE';
|
||||||
|
|||||||
@@ -4,16 +4,12 @@
|
|||||||
* @phan-file-suppress PhanTypeSuspiciousStringExpression
|
* @phan-file-suppress PhanTypeSuspiciousStringExpression
|
||||||
*/
|
*/
|
||||||
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
$DEBUG_ALL_OVERRIDE = 0; // set to 1 to debug on live/remote server locations
|
$DEBUG_ALL_OVERRIDE = false; // set to 1 to debug on live/remote server locations
|
||||||
$DEBUG_ALL = 1;
|
$DEBUG_ALL = true;
|
||||||
$PRINT_ALL = 1;
|
$PRINT_ALL = true;
|
||||||
$DB_DEBUG = 1;
|
$DB_DEBUG = true;
|
||||||
|
|
||||||
if ($DEBUG_ALL) {
|
|
||||||
error_reporting(E_ALL | E_STRICT | E_ERROR | E_WARNING | E_PARSE | E_COMPILE_ERROR);
|
|
||||||
}
|
|
||||||
|
|
||||||
ob_start();
|
ob_start();
|
||||||
|
|
||||||
@@ -31,9 +27,9 @@ $log = new CoreLibs\Debug\Logging([
|
|||||||
// add file date
|
// add file date
|
||||||
'print_file_date' => true,
|
'print_file_date' => true,
|
||||||
// set debug and print flags
|
// set debug and print flags
|
||||||
'debug_all' => $DEBUG_ALL ?? false,
|
'debug_all' => $DEBUG_ALL,
|
||||||
'echo_all' => $ECHO_ALL ?? false,
|
'echo_all' => $ECHO_ALL ?? false,
|
||||||
'print_all' => $PRINT_ALL ?? false,
|
'print_all' => $PRINT_ALL,
|
||||||
]);
|
]);
|
||||||
$_mime = new CoreLibs\Convert\MimeAppName();
|
$_mime = new CoreLibs\Convert\MimeAppName();
|
||||||
|
|
||||||
|
|||||||
@@ -11,10 +11,6 @@ $DEBUG_ALL = true;
|
|||||||
$PRINT_ALL = true;
|
$PRINT_ALL = true;
|
||||||
$DB_DEBUG = true;
|
$DB_DEBUG = true;
|
||||||
|
|
||||||
if ($DEBUG_ALL) {
|
|
||||||
error_reporting(E_ALL | E_STRICT | E_ERROR | E_WARNING | E_PARSE | E_COMPILE_ERROR);
|
|
||||||
}
|
|
||||||
|
|
||||||
ob_start();
|
ob_start();
|
||||||
|
|
||||||
// basic class test file
|
// basic class test file
|
||||||
@@ -63,11 +59,28 @@ $log = new CoreLibs\Debug\Logging([
|
|||||||
// add file date
|
// add file date
|
||||||
'print_file_date' => true,
|
'print_file_date' => true,
|
||||||
// set debug and print flags
|
// set debug and print flags
|
||||||
'debug_all' => $DEBUG_ALL ?? false,
|
'debug_all' => $DEBUG_ALL,
|
||||||
'echo_all' => $ECHO_ALL ?? false,
|
'echo_all' => $ECHO_ALL,
|
||||||
'print_all' => $PRINT_ALL ?? false,
|
'print_all' => $PRINT_ALL,
|
||||||
]);
|
]);
|
||||||
$form = new CoreLibs\Output\Form\Generate(DB_CONFIG, $log, table_arrays: $table_arrays);
|
$locale = CoreLibs\Language\GetLocale::setLocale(
|
||||||
|
SITE_LOCALE,
|
||||||
|
SITE_DOMAIN,
|
||||||
|
SITE_ENCODING,
|
||||||
|
BASE . INCLUDES . LOCALE
|
||||||
|
);
|
||||||
|
$l10n = new CoreLibs\Language\L10n(
|
||||||
|
SITE_LOCALE,
|
||||||
|
SITE_DOMAIN,
|
||||||
|
BASE . INCLUDES . LOCALE
|
||||||
|
);
|
||||||
|
$form = new CoreLibs\Output\Form\Generate(
|
||||||
|
DB_CONFIG,
|
||||||
|
$log,
|
||||||
|
$l10n,
|
||||||
|
$locale,
|
||||||
|
table_arrays: $table_arrays
|
||||||
|
);
|
||||||
|
|
||||||
$PAGE_NAME = 'TEST CLASS: FORM GENERATE';
|
$PAGE_NAME = 'TEST CLASS: FORM GENERATE';
|
||||||
print "<!DOCTYPE html>";
|
print "<!DOCTYPE html>";
|
||||||
|
|||||||
@@ -6,14 +6,10 @@
|
|||||||
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
$DEBUG_ALL_OVERRIDE = 0; // set to 1 to debug on live/remote server locations
|
$DEBUG_ALL_OVERRIDE = false; // set to 1 to debug on live/remote server locations
|
||||||
$DEBUG_ALL = 1;
|
$DEBUG_ALL = true;
|
||||||
$PRINT_ALL = 1;
|
$PRINT_ALL = true;
|
||||||
$DB_DEBUG = 1;
|
$DB_DEBUG = true;
|
||||||
|
|
||||||
if ($DEBUG_ALL) {
|
|
||||||
error_reporting(E_ALL | E_STRICT | E_ERROR | E_WARNING | E_PARSE | E_COMPILE_ERROR);
|
|
||||||
}
|
|
||||||
|
|
||||||
ob_start();
|
ob_start();
|
||||||
|
|
||||||
@@ -33,9 +29,9 @@ $log = new CoreLibs\Debug\Logging([
|
|||||||
// add file date
|
// add file date
|
||||||
'print_file_date' => true,
|
'print_file_date' => true,
|
||||||
// set debug and print flags
|
// set debug and print flags
|
||||||
'debug_all' => $DEBUG_ALL ?? false,
|
'debug_all' => $DEBUG_ALL,
|
||||||
'echo_all' => $ECHO_ALL ?? false,
|
'echo_all' => $ECHO_ALL ?? false,
|
||||||
'print_all' => $PRINT_ALL ?? false,
|
'print_all' => $PRINT_ALL,
|
||||||
]);
|
]);
|
||||||
$_password = new CoreLibs\Check\Password();
|
$_password = new CoreLibs\Check\Password();
|
||||||
$password_class = 'CoreLibs\Check\Password';
|
$password_class = 'CoreLibs\Check\Password';
|
||||||
|
|||||||
@@ -11,9 +11,6 @@ $DEBUG_ALL = true;
|
|||||||
$PRINT_ALL = true;
|
$PRINT_ALL = true;
|
||||||
$DB_DEBUG = true;
|
$DB_DEBUG = true;
|
||||||
|
|
||||||
if ($DEBUG_ALL) {
|
|
||||||
error_reporting(E_ALL | E_STRICT | E_ERROR | E_WARNING | E_PARSE | E_COMPILE_ERROR);
|
|
||||||
}
|
|
||||||
|
|
||||||
ob_start();
|
ob_start();
|
||||||
|
|
||||||
@@ -33,19 +30,43 @@ $log = new CoreLibs\Debug\Logging([
|
|||||||
// add file date
|
// add file date
|
||||||
'print_file_date' => true,
|
'print_file_date' => true,
|
||||||
// set debug and print flags
|
// set debug and print flags
|
||||||
'debug_all' => $DEBUG_ALL ?? false,
|
'debug_all' => $DEBUG_ALL,
|
||||||
'echo_all' => $ECHO_ALL ?? false,
|
'echo_all' => $ECHO_ALL ?? false,
|
||||||
'print_all' => $PRINT_ALL ?? false,
|
'print_all' => $PRINT_ALL,
|
||||||
]);
|
]);
|
||||||
$db = new CoreLibs\DB\IO(DB_CONFIG, $log);
|
$db = new CoreLibs\DB\IO(DB_CONFIG, $log);
|
||||||
$login = new CoreLibs\ACL\Login($db, $log, $session);
|
$locale = \CoreLibs\Language\GetLocale::setLocale(
|
||||||
$locale = \CoreLibs\Language\GetLocale::setLocale();
|
SITE_LOCALE,
|
||||||
|
SITE_DOMAIN,
|
||||||
|
SITE_ENCODING,
|
||||||
|
BASE . INCLUDES . LOCALE
|
||||||
|
);
|
||||||
$l10n = new \CoreLibs\Language\L10n(
|
$l10n = new \CoreLibs\Language\L10n(
|
||||||
$locale['locale'],
|
$locale['locale'],
|
||||||
$locale['domain'],
|
$locale['domain'],
|
||||||
$locale['path'],
|
$locale['path'],
|
||||||
);
|
);
|
||||||
$backend = new CoreLibs\Admin\Backend($db, $log, $session, $l10n, $locale);
|
$login = new CoreLibs\ACL\Login(
|
||||||
|
$db,
|
||||||
|
$log,
|
||||||
|
$session,
|
||||||
|
[
|
||||||
|
'auto_login' => true,
|
||||||
|
'default_acl_level' => DEFAULT_ACL_LEVEL,
|
||||||
|
'logout_target' => LOGOUT_TARGET,
|
||||||
|
'site_locale' => $locale['locale'],
|
||||||
|
'site_domain' => $locale['domain'],
|
||||||
|
'locale_path' => $locale['path'],
|
||||||
|
]
|
||||||
|
);
|
||||||
|
$backend = new CoreLibs\Admin\Backend(
|
||||||
|
$db,
|
||||||
|
$log,
|
||||||
|
$session,
|
||||||
|
$l10n,
|
||||||
|
$locale,
|
||||||
|
DEFAULT_ACL_LEVEL
|
||||||
|
);
|
||||||
$backend->db->dbInfo(true);
|
$backend->db->dbInfo(true);
|
||||||
ob_end_flush();
|
ob_end_flush();
|
||||||
|
|
||||||
@@ -126,7 +147,9 @@ foreach (['on', 'off'] as $flag) {
|
|||||||
foreach (['debug', 'echo', 'print'] as $type) {
|
foreach (['debug', 'echo', 'print'] as $type) {
|
||||||
$prefix = $flag == 'off' ? 'NOT ' : '';
|
$prefix = $flag == 'off' ? 'NOT ' : '';
|
||||||
print $prefix . strtoupper($type) . ' OUT: '
|
print $prefix . strtoupper($type) . ' OUT: '
|
||||||
. \CoreLibs\Debug\Support::printAr($backend->log->getLogLevel($type, $flag)) . '<br>';
|
. \CoreLibs\Debug\Support::printAr(\CoreLibs\Convert\SetVarType::setArray(
|
||||||
|
$backend->log->getLogLevel($type, $flag)
|
||||||
|
)) . '<br>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
foreach (['debug', 'echo', 'print'] as $type) {
|
foreach (['debug', 'echo', 'print'] as $type) {
|
||||||
|
|||||||
@@ -6,14 +6,10 @@
|
|||||||
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
$DEBUG_ALL_OVERRIDE = 0; // set to 1 to debug on live/remote server locations
|
$DEBUG_ALL_OVERRIDE = false; // set to 1 to debug on live/remote server locations
|
||||||
$DEBUG_ALL = 1;
|
$DEBUG_ALL = true;
|
||||||
$PRINT_ALL = 1;
|
$PRINT_ALL = true;
|
||||||
$DB_DEBUG = 1;
|
$DB_DEBUG = true;
|
||||||
|
|
||||||
if ($DEBUG_ALL) {
|
|
||||||
error_reporting(E_ALL | E_STRICT | E_ERROR | E_WARNING | E_PARSE | E_COMPILE_ERROR);
|
|
||||||
}
|
|
||||||
|
|
||||||
ob_start();
|
ob_start();
|
||||||
|
|
||||||
@@ -33,9 +29,9 @@ $log = new CoreLibs\Debug\Logging([
|
|||||||
// add file date
|
// add file date
|
||||||
'print_file_date' => true,
|
'print_file_date' => true,
|
||||||
// set debug and print flags
|
// set debug and print flags
|
||||||
'debug_all' => $DEBUG_ALL ?? false,
|
'debug_all' => $DEBUG_ALL,
|
||||||
'echo_all' => $ECHO_ALL ?? false,
|
'echo_all' => $ECHO_ALL ?? false,
|
||||||
'print_all' => $PRINT_ALL ?? false,
|
'print_all' => $PRINT_ALL,
|
||||||
]);
|
]);
|
||||||
$_phpv = new CoreLibs\Check\PhpVersion();
|
$_phpv = new CoreLibs\Check\PhpVersion();
|
||||||
$phpv_class = 'CoreLibs\Check\PhpVersion';
|
$phpv_class = 'CoreLibs\Check\PhpVersion';
|
||||||
@@ -71,6 +67,8 @@ print "S::MAX $max_version_ss: " . (string)$phpv_class::checkPHPVersion(null, $m
|
|||||||
// use stats
|
// use stats
|
||||||
print "U-S::MIN: $min_version: " . (string)PhpVersion::checkPHPVersion($min_version) . "<br>";
|
print "U-S::MIN: $min_version: " . (string)PhpVersion::checkPHPVersion($min_version) . "<br>";
|
||||||
|
|
||||||
|
print "PHP_VERSION_ID: " . PHP_VERSION_ID . "<br>";
|
||||||
|
|
||||||
// error message
|
// error message
|
||||||
print $log->printErrorMsg();
|
print $log->printErrorMsg();
|
||||||
|
|
||||||
|
|||||||
@@ -6,14 +6,10 @@
|
|||||||
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
$DEBUG_ALL_OVERRIDE = 0; // set to 1 to debug on live/remote server locations
|
$DEBUG_ALL_OVERRIDE = false; // set to 1 to debug on live/remote server locations
|
||||||
$DEBUG_ALL = 1;
|
$DEBUG_ALL = true;
|
||||||
$PRINT_ALL = 1;
|
$PRINT_ALL = true;
|
||||||
$DB_DEBUG = 1;
|
$DB_DEBUG = true;
|
||||||
|
|
||||||
if ($DEBUG_ALL) {
|
|
||||||
error_reporting(E_ALL | E_STRICT | E_ERROR | E_WARNING | E_PARSE | E_COMPILE_ERROR);
|
|
||||||
}
|
|
||||||
|
|
||||||
ob_start();
|
ob_start();
|
||||||
|
|
||||||
@@ -33,9 +29,9 @@ $log = new CoreLibs\Debug\Logging([
|
|||||||
// add file date
|
// add file date
|
||||||
'print_file_date' => true,
|
'print_file_date' => true,
|
||||||
// set debug and print flags
|
// set debug and print flags
|
||||||
'debug_all' => $DEBUG_ALL ?? false,
|
'debug_all' => $DEBUG_ALL,
|
||||||
'echo_all' => $ECHO_ALL ?? false,
|
'echo_all' => $ECHO_ALL ?? false,
|
||||||
'print_all' => $PRINT_ALL ?? false,
|
'print_all' => $PRINT_ALL,
|
||||||
]);
|
]);
|
||||||
$array_class = 'CoreLibs\Create\RandomKey';
|
$array_class = 'CoreLibs\Create\RandomKey';
|
||||||
|
|
||||||
|
|||||||
@@ -24,9 +24,9 @@ $log = new CoreLibs\Debug\Logging([
|
|||||||
// add file date
|
// add file date
|
||||||
'print_file_date' => true,
|
'print_file_date' => true,
|
||||||
// set debug and print flags
|
// set debug and print flags
|
||||||
'debug_all' => $DEBUG_ALL ?? false,
|
'debug_all' => $DEBUG_ALL ?? true,
|
||||||
'echo_all' => $ECHO_ALL ?? false,
|
'echo_all' => $ECHO_ALL ?? false,
|
||||||
'print_all' => $PRINT_ALL ?? false,
|
'print_all' => $PRINT_ALL ?? true,
|
||||||
]);
|
]);
|
||||||
$ref_class = 'CoreLibs\Get\ReadEnvFile';
|
$ref_class = 'CoreLibs\Get\ReadEnvFile';
|
||||||
|
|
||||||
|
|||||||
@@ -6,14 +6,10 @@
|
|||||||
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
$DEBUG_ALL_OVERRIDE = 0; // set to 1 to debug on live/remote server locations
|
$DEBUG_ALL_OVERRIDE = false; // set to 1 to debug on live/remote server locations
|
||||||
$DEBUG_ALL = 1;
|
$DEBUG_ALL = true;
|
||||||
$PRINT_ALL = 1;
|
$PRINT_ALL = true;
|
||||||
$DB_DEBUG = 1;
|
$DB_DEBUG = true;
|
||||||
|
|
||||||
if ($DEBUG_ALL) {
|
|
||||||
error_reporting(E_ALL | E_STRICT | E_ERROR | E_WARNING | E_PARSE | E_COMPILE_ERROR);
|
|
||||||
}
|
|
||||||
|
|
||||||
ob_start();
|
ob_start();
|
||||||
|
|
||||||
@@ -33,9 +29,9 @@ $log = new CoreLibs\Debug\Logging([
|
|||||||
// add file date
|
// add file date
|
||||||
'print_file_date' => true,
|
'print_file_date' => true,
|
||||||
// set debug and print flags
|
// set debug and print flags
|
||||||
'debug_all' => $DEBUG_ALL ?? false,
|
'debug_all' => $DEBUG_ALL,
|
||||||
'echo_all' => $ECHO_ALL ?? false,
|
'echo_all' => $ECHO_ALL ?? false,
|
||||||
'print_all' => $PRINT_ALL ?? false,
|
'print_all' => $PRINT_ALL,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$PAGE_NAME = 'TEST CLASS: RUNNING TIME';
|
$PAGE_NAME = 'TEST CLASS: RUNNING TIME';
|
||||||
|
|||||||
@@ -2,14 +2,10 @@
|
|||||||
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
$DEBUG_ALL_OVERRIDE = 0; // set to 1 to debug on live/remote server locations
|
$DEBUG_ALL_OVERRIDE = false; // set to 1 to debug on live/remote server locations
|
||||||
$DEBUG_ALL = 1;
|
$DEBUG_ALL = true;
|
||||||
$PRINT_ALL = 1;
|
$PRINT_ALL = true;
|
||||||
$DB_DEBUG = 1;
|
$DB_DEBUG = true;
|
||||||
|
|
||||||
if ($DEBUG_ALL) {
|
|
||||||
error_reporting(E_ALL | E_STRICT | E_ERROR | E_WARNING | E_PARSE | E_COMPILE_ERROR);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Undocumented function
|
* Undocumented function
|
||||||
@@ -53,9 +49,9 @@ $log = new CoreLibs\Debug\Logging([
|
|||||||
// add file date
|
// add file date
|
||||||
'print_file_date' => true,
|
'print_file_date' => true,
|
||||||
// set debug and print flags
|
// set debug and print flags
|
||||||
'debug_all' => $DEBUG_ALL ?? false,
|
'debug_all' => $DEBUG_ALL,
|
||||||
'echo_all' => $ECHO_ALL ?? false,
|
'echo_all' => $ECHO_ALL ?? false,
|
||||||
'print_all' => $PRINT_ALL ?? false,
|
'print_all' => $PRINT_ALL,
|
||||||
]);
|
]);
|
||||||
use CoreLibs\Create\Session;
|
use CoreLibs\Create\Session;
|
||||||
$session = new Session();
|
$session = new Session();
|
||||||
@@ -128,11 +124,11 @@ $session->unsetS('setwrap');
|
|||||||
print "[READ WRAP] unset setwrap: " . $session->getS('setwrap') . "<br>";
|
print "[READ WRAP] unset setwrap: " . $session->getS('setwrap') . "<br>";
|
||||||
print "[READ WRAP] unset Isset: " . ($session->issetS('setwrap') ? 'Yes' : 'No') . "<br>";
|
print "[READ WRAP] unset Isset: " . ($session->issetS('setwrap') ? 'Yes' : 'No') . "<br>";
|
||||||
// test __get/__set
|
// test __get/__set
|
||||||
$session->setwrap = 'YES, magic set _SESSION var';
|
$session->setwrap = 'YES, magic set _SESSION var'; /** @phpstan-ignore-line GET/SETTER */
|
||||||
print "[READ MAGIC] A setwrap: " . $session->setwrap . "<br>";
|
print "[READ MAGIC] A setwrap: " . ($session->setwrap ?? '') . "<br>";
|
||||||
print "[READ MAGIC] Isset: " . (isset($session->setwrap) ? 'Yes' : 'No') . "<br>";
|
print "[READ MAGIC] Isset: " . (isset($session->setwrap) ? 'Yes' : 'No') . "<br>";
|
||||||
unset($session->setwrap);
|
unset($session->setwrap);
|
||||||
print "[READ MAGIC] unset setwrap: " . $session->setwrap . "<br>";
|
print "[READ MAGIC] unset setwrap: " . ($session->setwrap ?? '') . "<br>";
|
||||||
print "[READ MAGIC] unset Isset: " . (isset($session->setwrap) ? 'Yes' : 'No') . "<br>";
|
print "[READ MAGIC] unset Isset: " . (isset($session->setwrap) ? 'Yes' : 'No') . "<br>";
|
||||||
|
|
||||||
// differnt session name
|
// differnt session name
|
||||||
|
|||||||
@@ -2,14 +2,10 @@
|
|||||||
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
$DEBUG_ALL_OVERRIDE = 0; // set to 1 to debug on live/remote server locations
|
$DEBUG_ALL_OVERRIDE = false; // set to 1 to debug on live/remote server locations
|
||||||
$DEBUG_ALL = 1;
|
$DEBUG_ALL = true;
|
||||||
$PRINT_ALL = 1;
|
$PRINT_ALL = true;
|
||||||
$DB_DEBUG = 1;
|
$DB_DEBUG = true;
|
||||||
|
|
||||||
if ($DEBUG_ALL) {
|
|
||||||
error_reporting(E_ALL | E_STRICT | E_ERROR | E_WARNING | E_PARSE | E_COMPILE_ERROR);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Undocumented function
|
* Undocumented function
|
||||||
@@ -53,9 +49,9 @@ $log = new CoreLibs\Debug\Logging([
|
|||||||
// add file date
|
// add file date
|
||||||
'print_file_date' => true,
|
'print_file_date' => true,
|
||||||
// set debug and print flags
|
// set debug and print flags
|
||||||
'debug_all' => $DEBUG_ALL ?? false,
|
'debug_all' => $DEBUG_ALL,
|
||||||
'echo_all' => $ECHO_ALL ?? false,
|
'echo_all' => $ECHO_ALL ?? false,
|
||||||
'print_all' => $PRINT_ALL ?? false,
|
'print_all' => $PRINT_ALL,
|
||||||
]);
|
]);
|
||||||
use CoreLibs\Create\Session;
|
use CoreLibs\Create\Session;
|
||||||
$session = new Session();
|
$session = new Session();
|
||||||
|
|||||||
@@ -11,10 +11,6 @@ $DEBUG_ALL = true;
|
|||||||
$PRINT_ALL = true;
|
$PRINT_ALL = true;
|
||||||
$DB_DEBUG = true;
|
$DB_DEBUG = true;
|
||||||
|
|
||||||
if ($DEBUG_ALL) {
|
|
||||||
error_reporting(E_ALL | E_STRICT | E_ERROR | E_WARNING | E_PARSE | E_COMPILE_ERROR);
|
|
||||||
}
|
|
||||||
|
|
||||||
ob_start();
|
ob_start();
|
||||||
|
|
||||||
// basic class test file
|
// basic class test file
|
||||||
@@ -33,9 +29,9 @@ $log = new CoreLibs\Debug\Logging([
|
|||||||
// add file date
|
// add file date
|
||||||
'print_file_date' => true,
|
'print_file_date' => true,
|
||||||
// set debug and print flags
|
// set debug and print flags
|
||||||
'debug_all' => $DEBUG_ALL ?? false,
|
'debug_all' => $DEBUG_ALL,
|
||||||
'echo_all' => $ECHO_ALL ?? false,
|
'echo_all' => $ECHO_ALL,
|
||||||
'print_all' => $PRINT_ALL ?? false,
|
'print_all' => $PRINT_ALL,
|
||||||
]);
|
]);
|
||||||
$locale = \CoreLibs\Language\GetLocale::setLocale();
|
$locale = \CoreLibs\Language\GetLocale::setLocale();
|
||||||
$l10n = new \CoreLibs\Language\L10n(
|
$l10n = new \CoreLibs\Language\L10n(
|
||||||
@@ -43,7 +39,12 @@ $l10n = new \CoreLibs\Language\L10n(
|
|||||||
$locale['domain'],
|
$locale['domain'],
|
||||||
$locale['path'],
|
$locale['path'],
|
||||||
);
|
);
|
||||||
$smarty = new CoreLibs\Template\SmartyExtend($l10n, $locale);
|
$smarty = new CoreLibs\Template\SmartyExtend(
|
||||||
|
$l10n,
|
||||||
|
$locale,
|
||||||
|
CACHE_ID,
|
||||||
|
COMPILE_ID,
|
||||||
|
);
|
||||||
|
|
||||||
$PAGE_NAME = 'TEST CLASS: SMARTY';
|
$PAGE_NAME = 'TEST CLASS: SMARTY';
|
||||||
print "<!DOCTYPE html>";
|
print "<!DOCTYPE html>";
|
||||||
@@ -59,7 +60,7 @@ $smarty->CSS_SPECIAL_TEMPLATE_NAME = 'smart_test.css';
|
|||||||
$smarty->USE_PROTOTYPE = false;
|
$smarty->USE_PROTOTYPE = false;
|
||||||
$smarty->USE_JQUERY = true;
|
$smarty->USE_JQUERY = true;
|
||||||
$smarty->JS_DATEPICKR = false;
|
$smarty->JS_DATEPICKR = false;
|
||||||
if ($smarty->USE_PROTOTYPE) {
|
if ($smarty->USE_PROTOTYPE) { /** @phpstan-ignore-line for debug purpose */
|
||||||
$smarty->ADMIN_JAVASCRIPT = 'edit.pt.js';
|
$smarty->ADMIN_JAVASCRIPT = 'edit.pt.js';
|
||||||
$smarty->JS_SPECIAL_TEMPLATE_NAME = 'prototype.test.js';
|
$smarty->JS_SPECIAL_TEMPLATE_NAME = 'prototype.test.js';
|
||||||
} elseif ($smarty->USE_JQUERY) {
|
} elseif ($smarty->USE_JQUERY) {
|
||||||
@@ -67,7 +68,17 @@ if ($smarty->USE_PROTOTYPE) {
|
|||||||
$smarty->JS_SPECIAL_TEMPLATE_NAME = 'jquery.test.js';
|
$smarty->JS_SPECIAL_TEMPLATE_NAME = 'jquery.test.js';
|
||||||
}
|
}
|
||||||
$smarty->PAGE_WIDTH = '100%';
|
$smarty->PAGE_WIDTH = '100%';
|
||||||
$smarty->setSmartyPaths();
|
$smarty->setSmartyPaths(
|
||||||
|
BASE . INCLUDES,
|
||||||
|
BASE . INCLUDES . TEMPLATES . CONTENT_PATH,
|
||||||
|
LAYOUT . JS,
|
||||||
|
LAYOUT . CSS,
|
||||||
|
LAYOUT . FONT,
|
||||||
|
LAYOUT . IMAGES,
|
||||||
|
LAYOUT . CACHE,
|
||||||
|
ROOT . LAYOUT . CACHE,
|
||||||
|
null // master template name optional
|
||||||
|
);
|
||||||
|
|
||||||
// smarty test
|
// smarty test
|
||||||
$smarty->DATA['SMARTY_TEST'] = 'Test Data';
|
$smarty->DATA['SMARTY_TEST'] = 'Test Data';
|
||||||
@@ -122,7 +133,18 @@ $smarty->DATA['checkbox_test_selected'] = ['1', '-1'];
|
|||||||
$smarty->DATA['checkbox_test_pos_selected'] = ['0', '-1'];
|
$smarty->DATA['checkbox_test_pos_selected'] = ['0', '-1'];
|
||||||
|
|
||||||
|
|
||||||
$smarty->setSmartyVarsAdmin();
|
$smarty->setSmartyVarsAdmin(
|
||||||
|
BASE . TEMPLATES_C,
|
||||||
|
BASE . CACHE,
|
||||||
|
CSS,
|
||||||
|
FONT,
|
||||||
|
JS,
|
||||||
|
DEFAULT_ENCODING,
|
||||||
|
G_TITLE,
|
||||||
|
ADMIN_STYLESHEET,
|
||||||
|
ADMIN_JAVASCRIPT,
|
||||||
|
PAGE_WIDTH
|
||||||
|
);
|
||||||
|
|
||||||
// error message
|
// error message
|
||||||
print $log->printErrorMsg();
|
print $log->printErrorMsg();
|
||||||
|
|||||||
@@ -2,14 +2,10 @@
|
|||||||
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
$DEBUG_ALL_OVERRIDE = 0; // set to 1 to debug on live/remote server locations
|
$DEBUG_ALL_OVERRIDE = false; // set to 1 to debug on live/remote server locations
|
||||||
$DEBUG_ALL = 1;
|
$DEBUG_ALL = true;
|
||||||
$PRINT_ALL = 1;
|
$PRINT_ALL = true;
|
||||||
$DB_DEBUG = 1;
|
$DB_DEBUG = true;
|
||||||
|
|
||||||
if ($DEBUG_ALL) {
|
|
||||||
error_reporting(E_ALL | E_STRICT | E_ERROR | E_WARNING | E_PARSE | E_COMPILE_ERROR);
|
|
||||||
}
|
|
||||||
|
|
||||||
ob_start();
|
ob_start();
|
||||||
|
|
||||||
@@ -27,9 +23,9 @@ $log = new CoreLibs\Debug\Logging([
|
|||||||
// add file date
|
// add file date
|
||||||
'print_file_date' => true,
|
'print_file_date' => true,
|
||||||
// set debug and print flags
|
// set debug and print flags
|
||||||
'debug_all' => $DEBUG_ALL ?? false,
|
'debug_all' => $DEBUG_ALL,
|
||||||
'echo_all' => $ECHO_ALL ?? false,
|
'echo_all' => $ECHO_ALL ?? false,
|
||||||
'print_all' => $PRINT_ALL ?? false,
|
'print_all' => $PRINT_ALL,
|
||||||
]);
|
]);
|
||||||
$byte_class = 'CoreLibs\Convert\Strings';
|
$byte_class = 'CoreLibs\Convert\Strings';
|
||||||
|
|
||||||
|
|||||||
@@ -6,14 +6,10 @@
|
|||||||
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
$DEBUG_ALL_OVERRIDE = 0; // set to 1 to debug on live/remote server locations
|
$DEBUG_ALL_OVERRIDE = false; // set to 1 to debug on live/remote server locations
|
||||||
$DEBUG_ALL = 1;
|
$DEBUG_ALL = true;
|
||||||
$PRINT_ALL = 1;
|
$PRINT_ALL = true;
|
||||||
$DB_DEBUG = 1;
|
$DB_DEBUG = true;
|
||||||
|
|
||||||
if ($DEBUG_ALL) {
|
|
||||||
error_reporting(E_ALL | E_STRICT | E_ERROR | E_WARNING | E_PARSE | E_COMPILE_ERROR);
|
|
||||||
}
|
|
||||||
|
|
||||||
ob_start();
|
ob_start();
|
||||||
|
|
||||||
@@ -34,9 +30,9 @@ $log = new CoreLibs\Debug\Logging([
|
|||||||
// add file date
|
// add file date
|
||||||
'print_file_date' => true,
|
'print_file_date' => true,
|
||||||
// set debug and print flags
|
// set debug and print flags
|
||||||
'debug_all' => $DEBUG_ALL ?? false,
|
'debug_all' => $DEBUG_ALL,
|
||||||
'echo_all' => $ECHO_ALL ?? false,
|
'echo_all' => $ECHO_ALL ?? false,
|
||||||
'print_all' => $PRINT_ALL ?? false,
|
'print_all' => $PRINT_ALL,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$PAGE_NAME = 'TEST CLASS: SYSTEM';
|
$PAGE_NAME = 'TEST CLASS: SYSTEM';
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user