So I am making a Laravel artisan command. In that command I run 'composer require' for a package. I am trying to find a way to use that package I required without leaving the current command I am in.
I thought of temporarily adding The Namespace to Laravel the way it does when you auto load files.
So my first question is how do I use this code below inside of an Artisan Command? Since app in not automatically accessible inside an artisan command.
include_once __DIR__ .'/../vendor/....';
$this->app->make('My\Namespace');
My Second Question. Assuming I get the above code to work properly inside an Artisan command, is that to unstable? Should I just make a second artisan command for after the composer require?
Any advice would be appreciated.
To answer your first question, composer has its own API to do things manually what it does under the hood.
You can required a package, then add the new Class fo usage in classmaps API using its vendor path and dump the autoloads in your command.
Secondly, I will suggest to make 2 commands each responsible to do just one task. First to install and handle installation errors, the second to use it.
Last but importantly, this is an unconventional way of requiring a package. Because mostly packages are required once and then may be updated/removed in the project. So you can install the package manually once and then run the command to eliminate the worry to install package using command.