D:\Projects\laravel70
After you install Laravel FW
composer install
You will have Monolog package Path
D:\Projects\laravel70\vendor\monolog
Path
D:\Projects\laravel70\vendor\composer\autoload_static.php
<?php namespace Composer\Autoload;
class ComposerStaticInit98539fbf3bd727013da7dd9f75b19318
{
public static $files = array (
'a4a119a56e50fbb293281d9a48007e0e'
=> __DIR__ . '/..'
. '/symfony/polyfill-php80/bootstrap.php',
……
);
public static $prefixDirsPsr4 = array (
….......,
'Monolog\\' => array (
0 => __DIR__ . '/..' . '/monolog/monolog/src/Monolog',
),
…..,
);
public static $classMap = array (
….,
'Monolog\\Handler\\ZendMonitorHandler'
=> __DIR__ . '/..' . '/monolog/monolog/src/Monolog'
.'/Handler/ZendMonitorHandler.php',
'Monolog\\Logger' => __DIR__ . '/..' . '/monolog/monolog'
.'/src/Monolog/Logger.php',
…..,
);
}
Path
D:\Projects\laravel70\vendor\monolog\monolog\src\Monolog\Logger.php
<?php declare(strict_types=1);
namespace Monolog;
use DateTimeZone;
use Monolog\Handler\HandlerInterface;
use Psr\Log\LoggerInterface;
use Psr\Log\InvalidArgumentException;
use Psr\Log\LogLevel;
use Throwable;
use Stringable;
class Logger implements LoggerInterface, ResettableInterface
{
public const DEBUG = 100;
…..
public function __construct(string $name,
array $handlers = [], array $processors = [],
?DateTimeZone $timezone = null)
{
$this->name = $name;
$this->setHandlers($handlers);
$this->processors = $processors;
$this->timezone = $timezone
?: new DateTimeZone(
date_default_timezone_get() ?: 'UTC'
);
if (\PHP_VERSION_ID >= 80100) {
$fiberLogDepth = new \WeakMap();
$this->fiberLogDepth = $fiberLogDepth;
}
}
public function getName(): string
{
return $this->name;
}
….
}
Path
D:\Projects\laravel70\public\index.php
require __DIR__.'/../vendor/autoload.php';
----->
$loader = require __DIR__.'/../vendor/autoload.php';
<?php namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Monolog\Logger;
class SameNamespaceController extends Controller
{
public function monologDefault()
{
$defaultLogger = new Logger('info');
dd($defaultLogger,
$GLOBALS['loader']->findFile(Logger::class));
}
}
Monolog\Logger {#328 ▼
#name: "info"
#handlers: []
#processors: []
#microsecondTimestamps: true
#timezone: DateTimeZone {#322 ▶}
#exceptionHandler: null
-logDepth: 0
-fiberLogDepth: null
-detectCycles: true
}
"D:\Projects\laravel70\vendor\composer/../monolog/monolog/src/Monolog/Logger.php"
Path
D:\Projects\laravel70\app\monolog\Logger.php
Code
<?php declare(strict_types=1);
namespace Monolog;
use DateTimeZone;
use Monolog\Handler\HandlerInterface;
use Psr\Log\LoggerInterface;
use Psr\Log\InvalidArgumentException;
use Psr\Log\LogLevel;
use Throwable;
use Stringable;
class Logger implements LoggerInterface, ResettableInterface
{
public const DEBUG = 100;
…..
public function __construct(string $name,
array $handlers = [], array $processors = [],
?DateTimeZone $timezone = null)
{
$this->name = $name;
$this->setHandlers($handlers);
$this->processors = $processors;
$this->timezone = $timezone
?: new DateTimeZone(
date_default_timezone_get() ?: 'UTC'
);
if (\PHP_VERSION_ID >= 80100) {
$fiberLogDepth = new \WeakMap();
$this->fiberLogDepth = $fiberLogDepth;
}
}
public function test()
{
echo 'Logger override';
return 'Logger override';
}
public function getName(): string
{
return $this->name;
}
….
}
Path
D:\Projects\laravel70\composer.json
Add
{
.....,
"autoload": {
"psr-4": {
"App\\": "app/",
"Monolog\\": "app/monolog/"
},
"classmap": [
"database/seeds",
"database/factories"
]
},
....
}
Path
D:\Projects\laravel70
Run
composer install
Mycomputer@xxx MINGW64 /d/Projects/laravel70 (SameNamespace)
$ composer install
Installing dependencies from lock file (including require-dev)
Verifying lock file contents can be installed on current platform.
Nothing to install, update or remove
Generating optimized autoload files
Warning: Ambiguous class resolution, "Monolog\Logger" was found in both "D:/Projects/laravel70/app/monolog\Logger.php" and "D:/Projects/laravel70/vendor/monolog/monolog/src/Monolog\Logger.php", the first will be used.
76 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
Path
D:\Projects\laravel70\vendor\composer\autoload_static.php
<?php namespace Composer\Autoload;
class ComposerStaticInit98539fbf3bd727013da7dd9f75b19318
{
public static $files = array (
'a4a119a56e50fbb293281d9a48007e0e'
=> __DIR__ . '/..'
. '/symfony/polyfill-php80/bootstrap.php',
……
);
public static $prefixDirsPsr4 = array (
….......,
'Monolog\\' => array (
0 => __DIR__ . '/../..' . '/app/monolog',
1 => __DIR__ . '/..' . '/monolog/monolog/src/Monolog',
),
…..,
);
public static $classMap = array (
….,
'Monolog\\Handler\\ZendMonitorHandler'
=> __DIR__ . '/..' . '/monolog/monolog/src/Monolog'
.'/Handler/ZendMonitorHandler.php',
'Monolog\\Logger' => __DIR__ . '/../..'
. '/app/monolog/Logger.php'
…..,
);
}
<?php namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Monolog\Logger;
class SameNamespaceController extends Controller
{
......
public function monologOverride()
{
$overrideLogger = new Logger('info');
dd($overrideLogger,
$overrideLogger->test(),
$GLOBALS['loader']->findFile(Logger::class));
}
}
Logger override
Monolog\Logger {#330 ▼
#name: "info"
#handlers: []
#processors: []
#microsecondTimestamps: true
#timezone: DateTimeZone {#324 ▶}
#exceptionHandler: null
-logDepth: 0
-fiberLogDepth: null
-detectCycles: true
}
"Logger override"
"D:\Projects\laravel70\vendor\composer/../../app/monolog/Logger.php"