PHP Artisan Make File Location: Change the namespace of files generated by artisan

Recommend this page to a friend!
  Info   Documentation   View files (28)   Download .zip   Reputation   Support forum   Blog    
Ratings Unique User Downloads Download Rankings
Not yet rated by the usersTotal: 49 This week: 1All time: 9,839 This week: 261
Version License PHP version Categories
artisan-make-file-lo 1.0MIT/X Consortium ...7Utilities and Tools, Libraries, Console, C..., P...
Description Author

This package can change the namespace of files generated by artisan.

It comes with a service provider for the Artisan tool that has command line options that allow to configure prefix and suffix of the namespace used in the PHP files generated by Artisan.

The command line parameters passed to the Artisan tool need to take the name of the provider supplied by this package, so those options can be enabled.

Innovation Award
PHP Programming Innovation award nominee
June 2018
Number 2

Prize: 30 Days Free Access to O'Reilly Safari Learning Platform
Artisan is a tool that comes with the Laravel framework that often is used to generate all sorts of project files.

Artisan can be extended with plugin packages also written in PHP provide additional functionality to this package.

This package provides additional options to configure the namespace of classes generated using Artisan.

Manuel Lemos
Picture of Diego R. Lima
  Performance   Level  
Name: Diego R. Lima <contact>
Classes: 1 package by
Country: Brazil Brazil
Age: 24
All time rank: 4345353 in Brazil Brazil
Week rank: 261 12 in Brazil Brazil
Innovation award
Innovation award
Nominee: 1x



Ability to change the namespace/location of the files generated by the "artisan make" commands.


This package requires Laravel 5.4 or later and PHP 7.0.0 or later.


$ composer require diego-rlima/artisan-make-file-location

For Laravel 5.4, you must register the service provider of this package. Add the code below in the providers section of your config/app.php file.



You can use all "artisan make" commands as usual. But now, you can add the options --prefix and --suffix to change the namespace of your files.

Note: For files that do not have namespace (like migrations), only the prefix can be used.


$ php artisan make:controller ProductController --prefix=Units\\Products\\Controllers

This will output the file with the namespace App\Units\Products\Controllers.


$ php artisan make:controller ProductController --suffix=Products

This will output the file with the namespace App\Http\Controllers\Products.

Both Prefix and Suffix

$ php artisan make:controller ProductController --prefix=Units --suffix=Products

This will output the file with the namespace App\Units\Controllers\Products.


The package is configured to be compatible with the Laravel standard, but allowing you to set prefixes and suffixes. However, you can replace the Laravel pattern with your own.

Publish the config using the following command:

$ php artisan vendor:publish --provider="DRL\AMFL\ArtisanServiceProvider"

Now you have a config/amfl.php file. The settings are divided between files that have namespaces and files that they do not have.

return [
    | Files namespaces
    // List of all files with namespace. Eg.:
    'controller' => '{root}\{prefix|default:Http}\Controllers\{suffix}',
    'test' => '{root}\{prefix}\{type}\{suffix}',

    | Files locations
    // List of all files without namespace. Eg.:
    'seeder' => '{root}/{prefix}/seeds/{name}.php',

For files with namespace, the {root} normally will be replaced by the "App" namespace. Of curse, {prefix} and {suffix} will be replaced by the prefix and suffix you choose.

In the test files, {root} will be changed to "Tests" namespace. These files also have namespace variation. The {type} will be changed to "Unit" or "Feature".

For files without namespace, the {root} will be replaced by the root directory of application. The {prefix} and {name} will be replaced by the prefix and the file name, respectively.

Important: If you are going to create the migrations in another folder, make sure the folder is already created, or the migration will not be created. This is due to the way the original command was written.

Making prefixes/suffixes required

All you have to do is add |required to the file configuration. Eg.:

return [
    // Now you will always have to enter a prefix when creating a Model.
    'model' => '{root}\{prefix|required}',

    // The same for the notification suffix.
    'notification' => '{root}\{prefix}\Notifications\{suffix|required}',

Defining a default value for prefixes/suffixes

Just add |default:YouDefaultValue to the file configuration. Eg.:

return [
    // Now, if you do not set a prefix, the default value will be used.
    'model' => '{root}\{prefix|default:Models}',

    // The same for the suffix.
    'rule' => '{root}\{prefix}\Rules\{suffix|default:Admin}',

Note: Default values will not be applied if prefix/suffix is required.

List of commands supported

Command | Supports prefix | Supports suffix | Min. Laravel Version :-------------------|:----------------|:----------------|:---------------- make:channel | yes | yes | 5.6 make:command | yes | yes | 5.4 make:controller | yes | yes | 5.4 make:event | yes | yes | 5.4 make:exception | yes | yes | 5.6 make:factory | yes | no | 5.6 make:job | yes | yes | 5.4 make:listener | yes | yes | 5.4 make:mail | yes | yes | 5.4 make:middleware | yes | yes | 5.4 make:migration | yes | no | 5.4 make:model | yes | no | 5.4 make:notification | yes | yes | 5.4 make:policy | yes | yes | 5.4 make:provider | yes | yes | 5.4 make:request | yes | yes | 5.4 make:resource | yes | yes | 5.6 make:rule | yes | yes | 5.6 make:seeder | yes | no | 5.4 make:test | yes | yes | 5.4

File Role Description
config (1 file)
src (4 files, 1 directory)
composer.json Data Auxiliary data
LICENSE Lic. License text Doc. Documentation

  Files  /  config  
File Role Description
   amfl.php Aux. Auxiliary script

  Files  /  src  
File Role Description
Commands (20 files)
   ArtisanServiceProvider.php Class Class source
   CommandSetup.php Class Class source
   CommandsList.php Class Class source
   TraitCommand.php Class Class source

  Files  /  src  /  Commands  
File Role Description
   ChannelMakeCommand.php Class Class source
   ConsoleMakeCommand.php Class Class source
   ControllerMakeCommand.php Class Class source
   EventMakeCommand.php Class Class source
   ExceptionMakeCommand.php Class Class source
   FactoryMakeCommand.php Class Class source
   JobMakeCommand.php Class Class source
   ListenerMakeCommand.php Class Class source
   MailMakeCommand.php Class Class source
   MiddlewareMakeCommand.php Class Class source
   MigrateMakeCommand.php Class Class source
   ModelMakeCommand.php Class Class source
   NotificationMakeCommand.php Class Class source
   PolicyMakeCommand.php Class Class source
   ProviderMakeCommand.php Class Class source
   RequestMakeCommand.php Class Class source
   ResourceMakeCommand.php Class Class source
   RuleMakeCommand.php Class Class source
   SeederMakeCommand.php Class Class source
   TestMakeCommand.php Class Class source

 Version Control Unique User Downloads Download Rankings  
This week:1
All time:9,839
This week:261

For more information send a message to info at phpclasses dot org.