LangPublishCommand.php
TLDR
This file (LangPublishCommand.php
) is part of the Demo Projects project and contains the LangPublishCommand
class. This class represents a console command that publishes customizable language files.
Methods
There are no additional methods in this file.
Classes
LangPublishCommand
The LangPublishCommand
class extends the Command
class and represents a console command. It is responsible for publishing customizable language files using the lang:publish
command.
This class has the following properties:
-
$signature
: The name and signature of the console command. -
$description
: The console command description.
This class has the following method:
-
handle()
: This method is responsible for executing the console command. It creates the necessary directory if it doesn't exist, defines the language file mappings, and copies the language files to the corresponding directory. Finally, it displays a success message.
<?php
namespace Illuminate\Foundation\Console;
use Illuminate\Console\Command;
use Illuminate\Filesystem\Filesystem;
use Symfony\Component\Console\Attribute\AsCommand;
#[AsCommand(name: 'lang:publish')]
class LangPublishCommand extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'lang:publish
{--existing : Publish and overwrite only the files that have already been published}
{--force : Overwrite any existing files}';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Publish all language files that are available for customization';
/**
* Execute the console command.
*
* @return void
*/
public function handle()
{
if (! is_dir($langPath = $this->laravel->basePath('lang/en'))) {
(new Filesystem)->makeDirectory($langPath, recursive: true);
}
$stubs = [
realpath(__DIR__.'/../../Translation/lang/en/auth.php') => 'auth.php',
realpath(__DIR__.'/../../Translation/lang/en/pagination.php') => 'pagination.php',
realpath(__DIR__.'/../../Translation/lang/en/passwords.php') => 'passwords.php',
realpath(__DIR__.'/../../Translation/lang/en/validation.php') => 'validation.php',
];
foreach ($stubs as $from => $to) {
$to = $langPath.DIRECTORY_SEPARATOR.ltrim($to, DIRECTORY_SEPARATOR);
if ((! $this->option('existing') && (! file_exists($to) || $this->option('force')))
|| ($this->option('existing') && file_exists($to))) {
file_put_contents($to, file_get_contents($from));
}
}
$this->components->info('Language files published successfully.');
}
}