tenancy / multi-tenant

Run multiple websites using the same Laravel installation while keeping tenant specific data separated for fully independent multi-domain setups, previously github.com/hyn/multi-tenant
https://tenancy.dev
MIT License
2.55k stars 392 forks source link

Method Illuminate\View\View::__toString() must not throw an exception, caught ErrorException: Undefined index: driver #473

Closed asdullahsiddique closed 6 years ago

asdullahsiddique commented 6 years ago

Description

I am trying to create a new tenant from php artistan with the following custom code

class CreateTenant extends Command
{
    protected $signature = 'tenant:create {name} {email}';
    protected $description = 'Creates a tenant with the provided name and email address e.g. php artisan tenant:create boise boise@example.com';
    public function handle()
    {
        $name = $this->argument('name');
        $email = $this->argument('email');
        if ($this->tenantExists($name, $email)) {
            $this->error("A tenant with name '{$name}' and/or '{$email}' already exists.");
            return;
        }
        $hostname = $this->registerTenant($name, $email);
        app(Environment::class)->hostname($hostname);
        // we'll create a random secure password for our to-be admin
        $password = str_random();
        $this->addAdmin($name, $email, $password);
        $this->info("Tenant '{$name}' is created and is now accessible at {$hostname->fqdn}");
        $this->info("Admin {$email} can log in using password {$password}");
    }
    private function tenantExists($name, $email)
    {
        return Customer::where('name', $name)->orWhere('email', $email)->exists();
    }
    private function registerTenant($name, $email)
    {
        // create a customer
        $customer = new Customer;
        $customer->name = $name;
        $customer->email = $email;
        app(CustomerRepository::class)->create($customer);
        // associate the customer with a website
        $website = new Website;
        $website->customer()->associate($customer);
        app(WebsiteRepository::class)->create($website);
        // associate the website with a hostname
        $hostname = new Hostname;
        $baseUrl = config('app.url_base');
        $hostname->fqdn = "{$name}.{$baseUrl}";
        $hostname->customer()->associate($customer);
        app(HostnameRepository::class)->attach($hostname, $website);
        return $hostname;
    }
    private function addAdmin($name, $email, $password)
    {

    }
}

Actual behavior

The databases entries are inserted correctly, but when generating the vhost file it crashes ..

Expected behavior

The package should create the vhost file needed in order to be integrated with nginx ..


Information


tenancy.php config

use Hyn\Tenancy\Database\Connection;

return [
    'models' => [
        /**
         * Specify different models to be used for the global, system database
         * connection. These are also used in their relationships. Models
         * used have to implement their respective contracts and
         * either extend the SystemModel or use the trait
         * UsesSystemConnection.
         */

        // Must implement \Hyn\Tenancy\Contracts\Customer
        'customer' => \Hyn\Tenancy\Models\Customer::class,

        // Must implement \Hyn\Tenancy\Contracts\Hostname
        'hostname' => \Hyn\Tenancy\Models\Hostname::class,

        // Must implement \Hyn\Tenancy\Contracts\Website
        'website' => \Hyn\Tenancy\Models\Website::class
    ],
    'website' => [
        /**
         * Each website has a short random hash that identifies this entity
         * to the application. By default this id is randomized and fully
         * auto-generated. In case you want to force your own logic for
         * when you need to have a better overview of the complete
         * tenant folder structure, disable this and implement
         * your own id generation logic.
         */
        'disable-random-id' => false,

        /**
         * The random Id generator is responsible for creating the hash as mentioned
         * above. You can override what generator to use by modifying this value
         * in the configuration.
         *
         * @warn This won't work if disable-random-id is true.
         */
        'random-id-generator' => Hyn\Tenancy\Generators\Uuid\ShaGenerator::class,

        /**
         * Enable this flag in case you're using a driver that does not support
         * database username or database name with a length of more than 32 characters.
         *
         * This should be enabled for MySQL, but not for MariaDB and PostgreSQL.
         */
        'uuid-limit-length-to-32' => env('LIMIT_UUID_LENGTH_32', false),

        /**
         * Specify the disk you configured in the filesystems.php file where to store
         * the tenant specific files, including media, packages, routes and other
         * files for this particular website.
         *
         * @info If not set, will revert to the default filesystem.
         */
        'disk' => null,

        /**
         * Automatically generate a tenant directory based on the random id of the
         * website. Uses the above disk to store files to override system-wide
         * files.
         *
         * @info set to false to disable.
         */
        'auto-create-tenant-directory' => true,

        /**
         * Automatically rename the tenant directory when the random id of the
         * website changes. This should not be too common, but in case it happens
         * we automatically want to move files accordingly.
         *
         * @info set to false to disable.
         */
        'auto-rename-tenant-directory' => true,

        /**
         * Automatically deletes the tenant specific directory and all files
         * contained within.
         *
         * @see
         * @info set to true to enable.
         */
        'auto-delete-tenant-directory' => false,

        /**
         * Time to cache websites in minutes. Set to false to disable.
         */
        'cache' => 10,
    ],
    'hostname' => [
        /**
         * If you want the multi tenant application to fall back to a default
         * hostname/website in case the requested hostname was not found
         * in the database, complete in detail the default hostname.
         *
         * @warn this must be a FQDN, these have no protocol or path!
         */
        'default' => env('TENANCY_DEFAULT_HOSTNAME'),
        /**
         * The package is able to identify the requested hostname by itself,
         * disable to get full control (and responsibility) over hostname
         * identification. The hostname identification is needed to
         * set a specific website as currently active.
         *
         * @see src/Jobs/HostnameIdentification.php
         */
        'auto-identification' => env('TENANCY_AUTO_HOSTNAME_IDENTIFICATION', true),

        /**
         * In case you want to have the tenancy environment set up early,
         * enable this flag. This will run the tenant identification
         * inside a middleware. This will eager load tenancy.
         *
         * A good use case is when you have set "tenant" as the default
         * database connection.
         */
        'early-identification' => env('TENANCY_EARLY_IDENTIFICATION', false),

        /**
         * Abort application execution in case no hostname was identified. This will throw a
         * 404 not found in case the tenant hostname was not resolved.
         */
        'abort-without-identified-hostname' => false,

        /**
         * Time to cache hostnames in minutes. Set to false to disable.
         */
        'cache' => 10,
    ],
    'db' => [
        /**
         * The default connection to use; this overrules the Laravel database.default
         * configuration setting. In Laravel this is normally configured to 'mysql'.
         * You can set a environment variable to override the default database
         * connection to - for instance - the tenant connection 'tenant'.
         */
        'default' => env('TENANCY_DEFAULT_CONNECTION'),
        /**
         * Used to give names to the system and tenant database connections. By
         * default we configure 'system' and 'tenant'. The tenant connection
         * is set up automatically by this package.
         *
         * @see src/Database/Connection.php
         * @var system-connection-name The database connection name to use for the global/system database.
         * @var tenant-connection-name The database connection name to use for the tenant database.
         */
        'system-connection-name' => env('TENANCY_SYSTEM_CONNECTION_NAME', Connection::DEFAULT_SYSTEM_NAME),
        'tenant-connection-name' => env('TENANCY_TENANT_CONNECTION_NAME', Connection::DEFAULT_TENANT_NAME),

        /**
         * The tenant division mode specifies to what database websites will be
         * connecting. The default setup is to use a new database per tenant.
         * In case you prefer to use the same database with a table prefix,
         * set the mode to 'prefix'.
         *
         * @see src/Database/Connection.php
         */
        'tenant-division-mode' => env('TENANCY_DATABASE_DIVISION_MODE', 'database'),

        /**
         * The database password generator takes care of creating a valid hashed
         * string used for tenants to connect to the specific database. Do
         * note that this will only work in 'division modes' that set up
         * a connection to a separate database.
         */
        'password-generator' => Hyn\Tenancy\Generators\Database\DefaultPasswordGenerator::class,

        /**
         * The tenant migrations to be run during creation of a tenant. Specify a directory
         * to run the migrations from. If specified these migrations will be executed
         * whenever a new tenant is created.
         *
         * @info set to false to disable auto migrating.
         *
         * @warn this has to be an absolute path, feel free to use helper methods like
         * base_path() or database_path() to set this up.
         */
        'tenant-migrations-path' => database_path('migrations/tenant'),

        /**
         * The default Seeder class used on newly created databases and while
         * running artisan commands that fire seeding.
         *
         * @info requires tenant-migrations-path in order to seed newly created websites.
         *
         * @warn specify a valid fully qualified class name.
         * @example App\Seeders\AdminSeeder::class
         */
        'tenant-seed-class' => false,

        /**
         * Automatically generate a tenant database based on the random id of the
         * website.
         *
         * @info set to false to disable.
         */
        'auto-create-tenant-database' => true,

        /**
         * Automatically generate the user needed to access the database.
         *
         * @info Useful in case you use root or another predefined user to access the
         *       tenant database.
         * @info Only creates in case tenant databases are set to be created.
         *
         * @info set to false to disable.
         */
        'auto-create-tenant-database-user' => true,

        /**
         * Automatically rename the tenant database when the random id of the
         * website changes. This should not be too common, but in case it happens
         * we automatically want to move databases accordingly.
         *
         * @info set to false to disable.
         */
        'auto-rename-tenant-database' => true,

        /**
         * Automatically deletes the tenant specific database and all data
         * contained within.
         *
         * @info set to true to enable.
         */
        'auto-delete-tenant-database' => env('TENANCY_DATABASE_AUTO_DELETE', false),

        /**
         * Automatically delete the user needed to access the tenant database.
         *
         * @info Set to false to disable.
         * @info Only deletes in case tenant database is set to be deleted.
         */
        'auto-delete-tenant-database-user' => env('TENANCY_DATABASE_AUTO_DELETE_USER', false),

        /**
         * Define a list of classes that you wish to force onto the tenant or system connection.
         * The connection will be forced when the Model has booted.
         *
         * @info Useful for overriding the connection of third party packages.
         */
        'force-tenant-connection-of-models' => [
//            \App\User::class
        ],
        'force-system-connection-of-models' => [
//            \App\User::class
        ],
    ],
    'folders' => [
        'config' => [
            /**
             * Merge configuration files from the config directory
             * inside the tenant directory with the global configuration files.
             */
            'enabled' => true,

            /**
             * List of configuration files to ignore, preventing override of crucial
             * application configurations.
             */
            'blacklist' => ['database', 'tenancy', 'webserver'],
        ],
        'routes' => [
            /**
             * Allows adding and overriding URL routes inside the tenant directory.
             */
            'enabled' => true,

            /**
             * Prefix all tenant routes.
             */
            'prefix' => null,
        ],
        'trans' => [
            /**
             * Allows reading translation files from a trans directory inside
             * the tenant directory.
             */
            'enabled' => true,

            /**
             * Will override the global translations with the tenant translations.
             * This is done by overriding the laravel default translator with the new path.
             */
            'override-global' => true,

            /**
             * In case you disabled global override, specify a namespace here to load the
             * tenant translation files with.
             */
            'namespace' => 'tenant',
        ],
        'vendor' => [
            /**
             * Allows using a custom vendor (composer driven) folder inside
             * the tenant directory.
             */
            'enabled' => true,
        ],
        'media' => [
            /**
             * Mounts the assets directory with (static) files for public use.
             */
            'enabled' => true,
        ],
        'views' => [
            /**
             * Adds the vendor directory of the tenant inside the application.
             */
            'enabled' => true,

            /**
             * Specify a namespace to use with which to load the views.
             *
             * @eg setting `tenant` will allow you to use `tenant::some.blade.php`
             * @info set to null to add to the global namespace.
             */
            'namespace' => null,

            /**
             * If `namespace` is set to null (thus using the global namespace)
             * make it override the global views. Disable to
             */
            'override-global' => true,
        ]
    ]
];

webserver.php config

return [

    /**
     * Apache2 is one of the most widely adopted webserver packages available.
     *
     * @see http://httpd.apache.org/docs/
     * @see https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-on-ubuntu
     */
    'apache2' => [
        /**
         * Whether the integration with Apache2 is currently active.
         */
        'enabled' => false,

        /**
         * Define the ports of your Apache service.
         */
        'ports' => [
            /**
             * HTTP, non-SSL port.
             *
             * @default 80
             */
            'http' => 80,
            /**
             * HTTPS, SSL port.
             *
             * @default 443
             */
            'https' => 443
        ],

        /**
         * The generator taking care of hooking into the Apache services and files.
         */
        'generator' => \Hyn\Tenancy\Generators\Webserver\Vhost\ApacheGenerator::class,

        /**
         * The view that holds the vhost configuration template.
         */
        'view' => 'tenancy.generators::webserver.apache.vhost',

        /**
         * Specify the disk you configured in the filesystems.php file where to store
         * the tenant vhost configuration files.
         *
         * @info If not set, will revert to the default filesystem.
         */
        'disk' => null,

        'paths' => [

            /**
             * Location where vhost configuration files can be found.
             */
            'vhost-files' => [
                '/etc/apache2/sites-enabled/'
            ],

            /**
             * Actions to run to work with the Apache2 service.
             */
            'actions' => [
                /**
                 * Action that asserts Apache2 is installed.
                 */
                'exists' => '/etc/init.d/apache2',
                /**
                 * Action to run to test the apache configuration.
                 */
                'test-config' => 'apache2ctl -t',
                /**
                 * Action to run to reload the apache service.
                 */
                'reload' => 'apache2ctl graceful'
            ]
        ]
    ],

    /**
     * Nginx webserver support.
     *
     * @see http://nginx.org
     */
    'nginx' => [
        /**
         * Whether the integration with nginx is currently active.
         */
        'enabled' => true,

        /**
         * The php sock to be used.
         */
        'php-sock' => 'unix:/var/run/php/php7.2-fpm.sock',

        /**
         * Define the ports of your nginx service.
         */
        'ports' => [
            /**
             * HTTP, non-SSL port.
             *
             * @default 80
             */
            'http' => 80,
            /**
             * HTTPS, SSL port.
             *
             * @default 443
             */
            'https' => 443
        ],

        /**
         * The generator taking care of hooking into the nginx services and files.
         */
        'generator' => \Hyn\Tenancy\Generators\Webserver\Vhost\NginxGenerator::class,

        /**
         * The view that holds the vhost configuration template.
         */
        'view' => 'tenancy.generators::webserver.nginx.vhost',

        /**
         * Specify the disk you configured in the filesystems.php file where to store
         * the tenant vhost configuration files.
         *
         * @info If not set, will revert to the default filesystem.
         */
        'disk' => null,

        'paths' => [

            /**
             * Location where vhost configuration files can be found.
             */
            'vhost-files' => [
                '/etc/nginx/sites-enabled/'
            ],

            /**
             * Actions to run to work with the Nginx service.
             */
            'actions' => [
                /**
                 * Action that asserts nginx is installed.
                 */
                'exists' => '/etc/init.d/nginx',
                /**
                 * Action to run to test the nginx configuration.
                 */
                'test-config' => '/etc/init.d/nginx configtest',
                /**
                 * Action to run to reload the nginx service.
                 */
                'reload' => 'systemctl restart nginx'
            ]
        ]
    ]
];

Error log

PHP Fatal error:  Method Illuminate\View\View::__toString() must not throw an exception, caught ErrorException: Undefined index: driver in /home/forge/clickmember.io/vendor/hyn/multi-tenant/src/Generators/Webserver/Vhost/NginxGenerator.php on line 0

   Symfony\Component\Debug\Exception\FatalErrorException  : Method Illuminate\View\View::__toString() must not throw an exception, caught ErrorException: Undefined index: driver

  at /home/forge/clickmember.io/vendor/hyn/multi-tenant/src/Generators/Webserver/Vhost/NginxGenerator.php: 0
  1: <?php
  2: 
  3: /*
  4:  * This file is part of the hyn/multi-tenant package.
  5:  *
  6:  * (c) Daniël Klabbers <daniel@klabbers.email>
  7:  *
  8:  * For the full copyright and license information, please view the LICENSE
  9:  * file that was distributed with this source code.
  10:  *

   Whoops\Exception\ErrorException  : Method Illuminate\View\View::__toString() must not throw an exception, caught ErrorException: Undefined index: driver

  at /home/forge/clickmember.io/vendor/hyn/multi-tenant/src/Generators/Webserver/Vhost/NginxGenerator.php: 0
  1: <?php
  2: 
  3: /*
  4:  * This file is part of the hyn/multi-tenant package.
  5:  *
  6:  * (c) Daniël Klabbers <daniel@klabbers.email>
  7:  *
  8:  * For the full copyright and license information, please view the LICENSE
  9:  * file that was distributed with this source code.
  10:  *
luceos commented 6 years ago

Have you dumped the variables send to the view? As said on discord; start there.

asdullahsiddique commented 6 years ago

@luceos I've done it, the results is an infinite loop of printing on the console. I can report it here maybe stopping it after a few minutes if it could help

asdullahsiddique commented 6 years ago

@luceos here's the code with dd

/**
     * @param Website $website
     * @return string
     */
    public function generate(Website $website): string
    {
        dd($website,  $this->directory->setWebsite($website), $this->media($website));
        return view(config('webserver.nginx.view'), [
            'website' => $website,
            'config' => config('webserver.nginx', []),
            'directory' => $this->directory->setWebsite($website),
            'media' => $this->media($website)
        ]);
    }

And the output:

Hyn\Tenancy\Models\Website {#1036
  #connection: null
  #table: null
  #primaryKey: "id"
  #keyType: "int"
  +incrementing: true
  #with: []
  #withCount: []
  #perPage: 15
  +exists: true
  +wasRecentlyCreated: true
  #attributes: array:6 [
    "customer_id" => 12
    "uuid" => "3b7338d7f3694dd69857a3942c7d9f1b"
    "updated_at" => "2018-05-30 09:32:38"
    "created_at" => "2018-05-30 09:32:38"
    "id" => 12
    "managed_by_database_connection" => "system"
  ]
  #original: array:5 [
    "customer_id" => 12
    "uuid" => "3b7338d7f3694dd69857a3942c7d9f1b"
    "updated_at" => "2018-05-30 09:32:38"
    "created_at" => "2018-05-30 09:32:38"
    "id" => 12
  ]
  #changes: []
  #casts: []
  #dates: []
  #dateFormat: null
  #appends: []
  #dispatchesEvents: []
  #observables: []
  #relations: array:1 [
    "customer" => Hyn\Tenancy\Models\Customer {#1037
      #connection: null
      #table: null
      #primaryKey: "id"
      #keyType: "int"
      +incrementing: true
      #with: []
      #withCount: []
      #perPage: 15
      +exists: true
      +wasRecentlyCreated: true
      #attributes: array:5 [
        "name" => "l1112"
        "email" => "l11qq@com.com"
        "updated_at" => "2018-05-30 09:32:38"
        "created_at" => "2018-05-30 09:32:38"
        "id" => 12
      ]
      #original: array:5 [
        "name" => "l1112"
        "email" => "l11qq@com.com"
        "updated_at" => "2018-05-30 09:32:38"
        "created_at" => "2018-05-30 09:32:38"
        "id" => 12
      ]
      #changes: []
      #casts: []
      #dates: []
      #dateFormat: null
      #appends: []
      #dispatchesEvents: []
      #observables: []
      #relations: []
      #touches: []
      +timestamps: true
      #hidden: []
      #visible: []
      #fillable: []
      #guarded: array:1 [
        0 => "*"
      ]
    }
  ]
  #touches: []
  +timestamps: true
  #hidden: []
  #visible: []
  #fillable: []
  #guarded: array:1 [
    0 => "*"
  ]
}
Hyn\Tenancy\Website\Directory {#1075
  #folders: array:6 [
    "config" => array:2 [
      "enabled" => true
      "blacklist" => array:3 [
        0 => "database"
        1 => "tenancy"
        2 => "webserver"
      ]
    ]
    "routes" => array:2 [
      "enabled" => true
      "prefix" => null
    ]
    "trans" => array:3 [
      "enabled" => true
      "override-global" => true
      "namespace" => "tenant"
    ]
    "vendor" => array:1 [
      "enabled" => true
    ]
    "media" => array:1 [
      "enabled" => true
    ]
    "views" => array:3 [
      "enabled" => true
      "namespace" => null
      "override-global" => true
    ]
  ]
  #filesystem: Illuminate\Filesystem\FilesystemAdapter {#251
    #driver: League\Flysystem\Filesystem {#249
      #adapter: League\Flysystem\Adapter\Local {#248
        #pathSeparator: "/"
        #permissionMap: array:2 [
          "file" => array:2 [ …2]
          "dir" => array:2 [ …2]
        ]
        #writeFlags: 2
        -linkHandling: 2
        #pathPrefix: "/home/forge/clickmember.io/storage/app/tenancy/tenants/"
      }
      #plugins: []
      #config: League\Flysystem\Config {#250
        #settings: []
        #fallback: null
      }
    }
  }
  #website: Hyn\Tenancy\Models\Website {#1036
    #connection: null
    #table: null
    #primaryKey: "id"
    #keyType: "int"
    +incrementing: true
    #with: []
    #withCount: []
    #perPage: 15
    +exists: true
    +wasRecentlyCreated: true
    #attributes: array:6 [
      "customer_id" => 12
      "uuid" => "3b7338d7f3694dd69857a3942c7d9f1b"
      "updated_at" => "2018-05-30 09:32:38"
      "created_at" => "2018-05-30 09:32:38"
      "id" => 12
      "managed_by_database_connection" => "system"
    ]
    #original: array:5 [
      "customer_id" => 12
      "uuid" => "3b7338d7f3694dd69857a3942c7d9f1b"
      "updated_at" => "2018-05-30 09:32:38"
      "created_at" => "2018-05-30 09:32:38"
      "id" => 12
    ]
    #changes: []
    #casts: []
    #dates: []
    #dateFormat: null
    #appends: []
    #dispatchesEvents: []
    #observables: []
    #relations: array:1 [
      "customer" => Hyn\Tenancy\Models\Customer {#1037
        #connection: null
        #table: null
        #primaryKey: "id"
        #keyType: "int"
        +incrementing: true
        #with: []
        #withCount: []
        #perPage: 15
        +exists: true
        +wasRecentlyCreated: true
        #attributes: array:5 [
          "name" => "l1112"
          "email" => "l11qq@com.com"
          "updated_at" => "2018-05-30 09:32:38"
          "created_at" => "2018-05-30 09:32:38"
          "id" => 12
        ]
        #original: array:5 [
          "name" => "l1112"
          "email" => "l11qq@com.com"
          "updated_at" => "2018-05-30 09:32:38"
          "created_at" => "2018-05-30 09:32:38"
          "id" => 12
        ]
        #changes: []
        #casts: []
        #dates: []
        #dateFormat: null
        #appends: []
        #dispatchesEvents: []
        #observables: []
        #relations: []
        #touches: []
        +timestamps: true
        #hidden: []
        #visible: []
        #fillable: []
        #guarded: array:1 [
          0 => "*"
        ]
      }
    ]
    #touches: []
    +timestamps: true
    #hidden: []
    #visible: []
    #fillable: []
    #guarded: array:1 [
      0 => "*"
    ]
  }
  #environment: Hyn\Tenancy\Environment {#244
    #app: Illuminate\Foundation\Application {#2
      #basePath: "/home/forge/clickmember.io"
      #hasBeenBootstrapped: true
      #booted: true
      #bootingCallbacks: array:3 [
        0 => Closure {#217
          class: "Illuminate\Foundation\Application"
          this: Illuminate\Foundation\Application {#2}
          use: { …1}
          file: "/home/forge/clickmember.io/vendor/laravel/framework/src/Illuminate/Foundation/Application.php"
          line: "711 to 713"
        }
        1 => Closure {#299
          class: "Illuminate\Foundation\Application"
          this: Illuminate\Foundation\Application {#2}
          use: { …1}
          file: "/home/forge/clickmember.io/vendor/laravel/framework/src/Illuminate/Foundation/Application.php"
          line: "711 to 713"
        }
        2 => Closure {#306
          class: "Illuminate\Foundation\Application"
          this: Illuminate\Foundation\Application {#2}
          use: { …1}
          file: "/home/forge/clickmember.io/vendor/laravel/framework/src/Illuminate/Foundation/Application.php"
          line: "711 to 713"
        }
      ]
      #bootedCallbacks: array:2 [
        0 => Closure {#28
          class: "Illuminate\Foundation\Console\Kernel"
          this: App\Console\Kernel {#27
            #commands: []
            #app: Illuminate\Foundation\Application {#2}
            #events: Illuminate\Events\Dispatcher {#25
              #container: Illuminate\Foundation\Application {#2}
              #listeners: array:16 [ …16]
              #wildcards: array:2 [ …2]
              #wildcardsCache: array:32 [ …32]
              #queueResolver: Closure {#26 …5}
            }
            #artisan: Illuminate\Console\Application {#642 …18}
            #commandsLoaded: true
            #bootstrappers: array:7 [ …7]
          }
          file: "/home/forge/clickmember.io/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php"
          line: "89 to 91"
        }
        1 => Closure {#326
          class: "Illuminate\Foundation\Support\Providers\RouteServiceProvider"
          this: App\Providers\RouteServiceProvider {#176
            #namespace: "App\Http\Controllers"
            #app: Illuminate\Foundation\Application {#2}
            #defer: false
          }
          file: "/home/forge/clickmember.io/vendor/laravel/framework/src/Illuminate/Foundation/Support/Providers/RouteServiceProvider.php"
          line: "35 to 38"
        }
      ]
      #terminatingCallbacks: []
      #serviceProviders: array:62 [
        0 => Illuminate\Events\EventServiceProvider {#6
          #app: Illuminate\Foundation\Application {#2}
          #defer: false
        }
        1 => Illuminate\Log\LogServiceProvider {#8
          #app: Illuminate\Foundation\Application {#2}
          #defer: false
        }
        2 => Illuminate\Routing\RoutingServiceProvider {#10
          #app: Illuminate\Foundation\Application {#2}
          #defer: false
        }
        3 => Illuminate\Auth\AuthServiceProvider {#49
          #app: Illuminate\Foundation\Application {#2}
          #defer: false
        }
        4 => Illuminate\Cookie\CookieServiceProvider {#60
          #app: Illuminate\Foundation\Application {#2}
          #defer: false
        }
        5 => Illuminate\Database\DatabaseServiceProvider {#62
          #app: Illuminate\Foundation\Application {#2}
          #defer: false
        }
        6 => Illuminate\Encryption\EncryptionServiceProvider {#69
          #app: Illuminate\Foundation\Application {#2}
          #defer: false
        }
        7 => Illuminate\Filesystem\FilesystemServiceProvider {#71
          #app: Illuminate\Foundation\Application {#2}
          #defer: false
        }
        8 => Illuminate\Foundation\Providers\FormRequestServiceProvider {#77
          #app: Illuminate\Foundation\Application {#2}
          #defer: false
        }
        9 => Illuminate\Foundation\Providers\FoundationServiceProvider {#76
          #providers: array:1 [ …1]
          #instances: array:1 [ …1]
          #app: Illuminate\Foundation\Application {#2}
          #defer: false
        }
        10 => Illuminate\Notifications\NotificationServiceProvider {#80
          #app: Illuminate\Foundation\Application {#2}
          #defer: false
        }
        11 => Illuminate\Pagination\PaginationServiceProvider {#82
          #app: Illuminate\Foundation\Application {#2}
          #defer: false
        }
        12 => Illuminate\Session\SessionServiceProvider {#86
          #app: Illuminate\Foundation\Application {#2}
          #defer: false
        }
        13 => Illuminate\View\ViewServiceProvider {#90
          #app: Illuminate\Foundation\Application {#2}
          #defer: false
        }
        14 => Barryvdh\Debugbar\ServiceProvider {#94
          #defer: false
          #app: Illuminate\Foundation\Application {#2}
        }
        15 => Cartalyst\Stripe\Laravel\StripeServiceProvider {#98
          #app: Illuminate\Foundation\Application {#2}
          #defer: false
        }
        16 => Fideloper\Proxy\TrustedProxyServiceProvider {#101
          #app: Illuminate\Foundation\Application {#2}
          #defer: false
        }
        17 => Hyn\Tenancy\Providers\Tenants\ConfigurationProvider {#107
          #app: Illuminate\Foundation\Application {#2}
          #defer: false
        }
        18 => Hyn\Tenancy\Providers\Tenants\PasswordProvider {#114
          #app: Illuminate\Foundation\Application {#2}
          #defer: false
        }
        19 => Hyn\Tenancy\Providers\Tenants\ConnectionProvider {#116
          #app: Illuminate\Foundation\Application {#2}
          #defer: false
        }
        20 => Hyn\Tenancy\Providers\Tenants\UuidProvider {#124
          #app: Illuminate\Foundation\Application {#2}
          #defer: false
        }
        21 => Hyn\Tenancy\Providers\Tenants\BusProvider {#126
          #app: Illuminate\Foundation\Application {#2}
          #defer: false
        }
        22 => Hyn\Tenancy\Providers\Tenants\FilesystemProvider {#128
          #app: Illuminate\Foundation\Application {#2}
          #defer: false
        }
        23 => Hyn\Tenancy\Providers\Tenants\HostnameProvider {#131
          +defer: true
          #app: Illuminate\Foundation\Application {#2}
        }
        24 => Hyn\Tenancy\Providers\Tenants\EventProvider {#132
          #subscribe: array:14 [ …14]
          #app: Illuminate\Foundation\Application {#2}
          #defer: false
        }
        25 => Hyn\Tenancy\Providers\TenancyProvider {#102
          #app: Illuminate\Foundation\Application {#2}
          #defer: false
        }
        26 => Hyn\Tenancy\Providers\Webserver\FilesystemProvider {#142
          #app: Illuminate\Foundation\Application {#2}
          #defer: false
        }
        27 => Hyn\Tenancy\Providers\Webserver\EventProvider {#143
          #subscribe: array:1 [ …1]
          #app: Illuminate\Foundation\Application {#2}
          #defer: false
        }
        28 => Hyn\Tenancy\Providers\WebserverProvider {#133
          #app: Illuminate\Foundation\Application {#2}
          #defer: false
        }
        29 => Ixudra\Curl\CurlServiceProvider {#144
          #defer: false
          #app: Illuminate\Foundation\Application {#2}
        }
        30 => Laracasts\Generators\GeneratorsServiceProvider {#147
          #app: Illuminate\Foundation\Application {#2}
          #defer: false
        }
        31 => Laravel\Cashier\CashierServiceProvider {#154
          #app: Illuminate\Foundation\Application {#2}
          #defer: false
        }
        32 => NunoMaduro\Collision\Adapters\Laravel\CollisionServiceProvider {#155
          #app: Illuminate\Foundation\Application {#2}
          #defer: false
        }
        33 => Sentry\SentryLaravel\SentryLaravelServiceProvider {#159
          #app: Illuminate\Foundation\Application {#2}
          #defer: false
        }
        34 => Srmklive\PayPal\Providers\PayPalServiceProvider {#163
          #defer: false
          #app: Illuminate\Foundation\Application {#2}
        }
        35 => Torann\GeoIP\GeoIPServiceProvider {#166
          #app: Illuminate\Foundation\Application {#2}
          #defer: false
        }
        36 => Webpatser\Uuid\UuidServiceProvider {#169
          #app: Illuminate\Foundation\Application {#2}
          #defer: false
        }
        37 => Zizaco\Entrust\EntrustServiceProvider {#170
          #defer: false
          #app: Illuminate\Foundation\Application {#2}
        }
        38 => App\Providers\AppServiceProvider {#173
          #app: Illuminate\Foundation\Application {#2}
          #defer: false
        }
        39 => App\Providers\AuthServiceProvider {#174
          #policies: array:1 [ …1]
          #app: Illuminate\Foundation\Application {#2}
          #defer: false
        }
        40 => App\Providers\EventServiceProvider {#175
          #listen: array:1 [ …1]
          #subscribe: []
          #app: Illuminate\Foundation\Application {#2}
          #defer: false
        }
        41 => App\Providers\RouteServiceProvider {#176}
        42 => App\Providers\DisplayUserCoursesServiceProvider {#177
          #app: Illuminate\Foundation\Application {#2}
          #defer: false
        }
        43 => App\Providers\DisplayTelegramBOTsServiceProvider {#178
          #app: Illuminate\Foundation\Application {#2}
          #defer: false
        }
        44 => Illuminate\Cache\CacheServiceProvider {#213
          #defer: true
          #app: Illuminate\Foundation\Application {#2}
        }
        45 => Illuminate\Translation\TranslationServiceProvider {#296
          #defer: true
          #app: Illuminate\Foundation\Application {#2}
        }
        46 => Illuminate\Validation\ValidationServiceProvider {#303
          #defer: true
          #app: Illuminate\Foundation\Application {#2}
        }
        47 => Illuminate\Broadcasting\BroadcastServiceProvider {#53
          #defer: true
          #app: Illuminate\Foundation\Application {#2}
        }
        48 => Illuminate\Bus\BusServiceProvider {#517
          #defer: true
          #app: Illuminate\Foundation\Application {#2}
        }
        49 => Illuminate\Foundation\Providers\ArtisanServiceProvider {#522
          #defer: true
          #commands: array:35 [ …35]
          #devCommands: array:30 [ …30]
          #app: Illuminate\Foundation\Application {#2}
        }
        50 => Illuminate\Database\MigrationServiceProvider {#589
          #defer: true
          #app: Illuminate\Foundation\Application {#2}
        }
        51 => Illuminate\Foundation\Providers\ComposerServiceProvider {#593
          #defer: true
          #app: Illuminate\Foundation\Application {#2}
        }
        52 => Illuminate\Foundation\Providers\ConsoleSupportServiceProvider {#521
          #defer: true
          #providers: array:3 [ …3]
          #instances: array:3 [ …3]
          #app: Illuminate\Foundation\Application {#2}
        }
        53 => Illuminate\Hashing\HashServiceProvider {#595
          #defer: true
          #app: Illuminate\Foundation\Application {#2}
        }
        54 => Illuminate\Mail\MailServiceProvider {#598
          #defer: true
          #app: Illuminate\Foundation\Application {#2}
        }
        55 => Illuminate\Pipeline\PipelineServiceProvider {#603
          #defer: true
          #app: Illuminate\Foundation\Application {#2}
        }
        56 => Illuminate\Queue\QueueServiceProvider {#605
          #defer: true
          #app: Illuminate\Foundation\Application {#2}
        }
        57 => Illuminate\Redis\RedisServiceProvider {#611
          #defer: true
          #app: Illuminate\Foundation\Application {#2}
        }
        58 => Illuminate\Auth\Passwords\PasswordResetServiceProvider {#614
          #defer: true
          #app: Illuminate\Foundation\Application {#2}
        }
        59 => hisorange\BrowserDetect\ServiceProvider {#617
          #app: Illuminate\Foundation\Application {#2}
          #defer: false
        }
        60 => Laravel\Tinker\TinkerServiceProvider {#619
          #defer: true
          #app: Illuminate\Foundation\Application {#2}
        }
        61 => Telegram\Bot\Laravel\TelegramServiceProvider {#638
          #defer: true
          #config_filepath: null
          #app: Illuminate\Foundation\Application {#2}
        }
      ]
      #loadedProviders: array:62 [
        "Illuminate\Events\EventServiceProvider" => true
        "Illuminate\Log\LogServiceProvider" => true
        "Illuminate\Routing\RoutingServiceProvider" => true
        "Illuminate\Auth\AuthServiceProvider" => true
        "Illuminate\Cookie\CookieServiceProvider" => true
        "Illuminate\Database\DatabaseServiceProvider" => true
        "Illuminate\Encryption\EncryptionServiceProvider" => true
        "Illuminate\Filesystem\FilesystemServiceProvider" => true
        "Illuminate\Foundation\Providers\FormRequestServiceProvider" => true
        "Illuminate\Foundation\Providers\FoundationServiceProvider" => true
        "Illuminate\Notifications\NotificationServiceProvider" => true
        "Illuminate\Pagination\PaginationServiceProvider" => true
        "Illuminate\Session\SessionServiceProvider" => true
        "Illuminate\View\ViewServiceProvider" => true
        "Barryvdh\Debugbar\ServiceProvider" => true
        "Cartalyst\Stripe\Laravel\StripeServiceProvider" => true
        "Fideloper\Proxy\TrustedProxyServiceProvider" => true
        "Hyn\Tenancy\Providers\Tenants\ConfigurationProvider" => true
        "Hyn\Tenancy\Providers\Tenants\PasswordProvider" => true
        "Hyn\Tenancy\Providers\Tenants\ConnectionProvider" => true
        "Hyn\Tenancy\Providers\Tenants\UuidProvider" => true
        "Hyn\Tenancy\Providers\Tenants\BusProvider" => true
        "Hyn\Tenancy\Providers\Tenants\FilesystemProvider" => true
        "Hyn\Tenancy\Providers\Tenants\HostnameProvider" => true
        "Hyn\Tenancy\Providers\Tenants\EventProvider" => true
        "Hyn\Tenancy\Providers\TenancyProvider" => true
        "Hyn\Tenancy\Providers\Webserver\FilesystemProvider" => true
        "Hyn\Tenancy\Providers\Webserver\EventProvider" => true
        "Hyn\Tenancy\Providers\WebserverProvider" => true
        "Ixudra\Curl\CurlServiceProvider" => true
        "Laracasts\Generators\GeneratorsServiceProvider" => true
        "Laravel\Cashier\CashierServiceProvider" => true
        "NunoMaduro\Collision\Adapters\Laravel\CollisionServiceProvider" => true
        "Sentry\SentryLaravel\SentryLaravelServiceProvider" => true
        "Srmklive\PayPal\Providers\PayPalServiceProvider" => true
        "Torann\GeoIP\GeoIPServiceProvider" => true
        "Webpatser\Uuid\UuidServiceProvider" => true
        "Zizaco\Entrust\EntrustServiceProvider" => true
        "App\Providers\AppServiceProvider" => true
        "App\Providers\AuthServiceProvider" => true
        "App\Providers\EventServiceProvider" => true
        "App\Providers\RouteServiceProvider" => true
        "App\Providers\DisplayUserCoursesServiceProvider" => true
        "App\Providers\DisplayTelegramBOTsServiceProvider" => true
        "Illuminate\Cache\CacheServiceProvider" => true
        "Illuminate\Translation\TranslationServiceProvider" => true
        "Illuminate\Validation\ValidationServiceProvider" => true
        "Illuminate\Broadcasting\BroadcastServiceProvider" => true
        "Illuminate\Bus\BusServiceProvider" => true
        "Illuminate\Foundation\Providers\ArtisanServiceProvider" => true
        "Illuminate\Database\MigrationServiceProvider" => true
        "Illuminate\Foundation\Providers\ComposerServiceProvider" => true
        "Illuminate\Foundation\Providers\ConsoleSupportServiceProvider" => true
        "Illuminate\Hashing\HashServiceProvider" => true
        "Illuminate\Mail\MailServiceProvider" => true
        "Illuminate\Pipeline\PipelineServiceProvider" => true
        "Illuminate\Queue\QueueServiceProvider" => true
        "Illuminate\Redis\RedisServiceProvider" => true
        "Illuminate\Auth\Passwords\PasswordResetServiceProvider" => true
        "hisorange\BrowserDetect\ServiceProvider" => true
        "Laravel\Tinker\TinkerServiceProvider" => true
        "Telegram\Bot\Laravel\TelegramServiceProvider" => true
      ]
      #deferredServices: []
      #databasePath: null
      #storagePath: null
      #environmentPath: null
      #environmentFile: ".env"
      #namespace: "App\"
      #resolved: array:171 [
        "events" => true
        "App\Console\Kernel" => true
        "Illuminate\Contracts\Console\Kernel" => true
        "Illuminate\Foundation\Bootstrap\LoadEnvironmentVariables" => true
        "Illuminate\Foundation\Bootstrap\LoadConfiguration" => true
        "Illuminate\Foundation\Bootstrap\HandleExceptions" => true
        "env" => true
        "Illuminate\Foundation\Bootstrap\RegisterFacades" => true
        "Illuminate\Foundation\Bootstrap\SetRequestForConsole" => true
        "Illuminate\Foundation\Bootstrap\RegisterProviders" => true
        "router" => true
        "App\Http\Kernel" => true
        "Illuminate\Contracts\Http\Kernel" => true
        "view.engine.resolver" => true
        "files" => true
        "view.finder" => true
        "view" => true
        "App\Exceptions\Handler" => true
        "Illuminate\Contracts\Debug\ExceptionHandler" => true
        "Illuminate\Foundation\Bootstrap\BootProviders" => true
        "db.factory" => true
        "db" => true
        "Hyn\Tenancy\Generators\Database\DefaultPasswordGenerator" => true
        "Hyn\Tenancy\Contracts\Database\PasswordGenerator" => true
        "Hyn\Tenancy\Database\Connection" => true
        "Hyn\Tenancy\Contracts\Bus\Dispatcher" => true
        "Hyn\Tenancy\Models\Hostname" => true
        "Hyn\Tenancy\Contracts\Hostname" => true
        "Hyn\Tenancy\Validators\HostnameValidator" => true
        "cache" => true
        "Hyn\Tenancy\Repositories\HostnameRepository" => true
        "Hyn\Tenancy\Contracts\Repositories\HostnameRepository" => true
        "Hyn\Tenancy\Contracts\CurrentHostname" => true
        "Hyn\Tenancy\Environment" => true
        "Hyn\Tenancy\Generators\Webserver\Database\DatabaseGenerator" => true
        "Hyn\Tenancy\Listeners\Database\ConnectsTenants" => true
        "Hyn\Tenancy\Listeners\Database\MigratesTenants" => true
        "Hyn\Tenancy\Listeners\Database\SeedsTenants" => true
        "Hyn\Tenancy\Listeners\Database\FillsConnectionUsed" => true
        "Hyn\Tenancy\Listeners\Database\OverridesConnection" => true
        "Hyn\Tenancy\Generators\Filesystem\DirectoryGenerator" => true
        "Hyn\Tenancy\Generators\Uuid\ShaGenerator" => true
        "Hyn\Tenancy\Contracts\Website\UuidGenerator" => true
        "Hyn\Tenancy\Listeners\WebsiteUuidGeneration" => true
        "filesystem" => true
        "filesystem.disk" => true
        "tenancy.disk" => true
        "Hyn\Tenancy\Website\Directory" => true
        "Hyn\Tenancy\Listeners\Filesystem\LoadsConfigs" => true
        "Hyn\Tenancy\Listeners\Filesystem\LoadsRoutes" => true
        "Hyn\Tenancy\Listeners\Filesystem\LoadsTranslations" => true
        "Hyn\Tenancy\Listeners\Filesystem\LoadsVendor" => true
        "Hyn\Tenancy\Listeners\Filesystem\LoadsViews" => true
        "Hyn\Tenancy\Listeners\Filesystem\ActivatesDisk" => true
        "Hyn\Tenancy\Listeners\Servant" => true
        "sentry.config" => true
        "sentry" => true
        "translation.loader" => true
        "translator" => true
        "validation.presence" => true
        "validator" => true
        "blade.compiler" => true
        "Illuminate\Contracts\Auth\Access\Gate" => true
        "url" => true
        "Illuminate\Console\Scheduling\CacheEventMutex" => true
        "Illuminate\Console\Scheduling\CacheSchedulingMutex" => true
        "Illuminate\Console\Scheduling\Schedule" => true
        "session" => true
        "Barryvdh\Debugbar\LaravelDebugbar" => true
        "command.debugbar.clear" => true
        "migration.repository" => true
        "migrator" => true
        "Hyn\Tenancy\Models\Website" => true
        "Hyn\Tenancy\Contracts\Website" => true
        "Hyn\Tenancy\Validators\WebsiteValidator" => true
        "Hyn\Tenancy\Repositories\WebsiteRepository" => true
        "Hyn\Tenancy\Contracts\Repositories\WebsiteRepository" => true
        "Hyn\Tenancy\Database\Console\Migrations\MigrateCommand" => true
        "Hyn\Tenancy\Database\Console\Migrations\RollbackCommand" => true
        "Hyn\Tenancy\Database\Console\Migrations\ResetCommand" => true
        "Hyn\Tenancy\Database\Console\Migrations\RefreshCommand" => true
        "Hyn\Tenancy\Database\Console\Seeds\SeedCommand" => true
        "Laracasts\Generators\Commands\SeedMakeCommand" => true
        "command.laracasts.seed" => true
        "composer" => true
        "Laracasts\Generators\Commands\MigrationMakeCommand" => true
        "command.laracasts.migrate" => true
        "Laracasts\Generators\Commands\PivotMigrationMakeCommand" => true
        "command.laracasts.migrate.pivot" => true
        "Torann\GeoIP\Console\Update" => true
        "Torann\GeoIP\Console\Clear" => true
        "Hyn\Tenancy\Commands\InstallCommand" => true
        "Hyn\Tenancy\Commands\RecreateCommand" => true
        "Sentry\SentryLaravel\SentryTestCommand" => true
        "command.entrust.migration" => true
        "command.cache.clear" => true
        "command.cache.forget" => true
        "command.clear-compiled" => true
        "command.auth.resets.clear" => true
        "command.config.cache" => true
        "command.config.clear" => true
        "command.down" => true
        "command.environment" => true
        "command.key.generate" => true
        "command.migrate" => true
        "command.migrate.fresh" => true
        "command.migrate.install" => true
        "command.migrate.refresh" => true
        "command.migrate.reset" => true
        "command.migrate.rollback" => true
        "command.migrate.status" => true
        "command.package.discover" => true
        "command.preset" => true
        "command.queue.failed" => true
        "command.queue.flush" => true
        "command.queue.forget" => true
        "queue.listener" => true
        "command.queue.listen" => true
        "command.queue.restart" => true
        "command.queue.retry" => true
        "queue" => true
        "queue.worker" => true
        "command.queue.work" => true
        "command.route.cache" => true
        "command.route.clear" => true
        "command.route.list" => true
        "command.seed" => true
        "Illuminate\Console\Scheduling\ScheduleFinishCommand" => true
        "Illuminate\Console\Scheduling\ScheduleRunCommand" => true
        "command.storage.link" => true
        "command.up" => true
        "command.view.cache" => true
        "command.view.clear" => true
        "command.app.name" => true
        "command.auth.make" => true
        "command.cache.table" => true
        "command.channel.make" => true
        "command.console.make" => true
        "command.controller.make" => true
        "command.event.generate" => true
        "command.event.make" => true
        "command.exception.make" => true
        "command.factory.make" => true
        "command.job.make" => true
        "command.listener.make" => true
        "command.mail.make" => true
        "command.middleware.make" => true
        "migration.creator" => true
        "command.migrate.make" => true
        "command.model.make" => true
        "command.notification.make" => true
        "command.notification.table" => true
        "command.policy.make" => true
        "command.provider.make" => true
        "command.queue.failed-table" => true
        "command.queue.table" => true
        "command.request.make" => true
        "command.resource.make" => true
        "command.rule.make" => true
        "command.seeder.make" => true
        "command.session.table" => true
        "command.serve" => true
        "command.test.make" => true
        "command.vendor.publish" => true
        "command.tinker" => true
        "App\Console\Commands\CreateTenant" => true
        "Hyn\Tenancy\Models\Customer" => true
        "Hyn\Tenancy\Contracts\Customer" => true
        "Hyn\Tenancy\Repositories\CustomerRepository" => true
        "Hyn\Tenancy\Contracts\Repositories\CustomerRepository" => true
        "Hyn\Tenancy\Generators\Webserver\Vhost\NginxGenerator" => true
      ]
      #bindings: array:173 [
        "events" => array:2 [
          "concrete" => Closure {#7 …5}
          "shared" => true
        ]
        "log" => array:2 [
          "concrete" => Closure {#9 …4}
          "shared" => true
        ]
        "router" => array:2 [
          "concrete" => Closure {#11 …5}
          "shared" => true
        ]
        "url" => array:2 [
          "concrete" => Closure {#12 …5}
          "shared" => true
        ]
        "redirect" => array:2 [
          "concrete" => Closure {#13 …5}
          "shared" => true
        ]
        "Psr\Http\Message\ServerRequestInterface" => array:2 [
          "concrete" => Closure {#14 …5}
          "shared" => false
        ]
        "Psr\Http\Message\ResponseInterface" => array:2 [
          "concrete" => Closure {#15 …5}
          "shared" => false
        ]
        "Illuminate\Contracts\Routing\ResponseFactory" => array:2 [
          "concrete" => Closure {#16 …5}
          "shared" => true
        ]
        "Illuminate\Routing\Contracts\ControllerDispatcher" => array:2 [
          "concrete" => Closure {#17 …5}
          "shared" => true
        ]
        "Illuminate\Contracts\Http\Kernel" => array:2 [
          "concrete" => Closure {#18 …6}
          "shared" => true
        ]
        "Illuminate\Contracts\Console\Kernel" => array:2 [
          "concrete" => Closure {#19 …6}
          "shared" => true
        ]
        "Illuminate\Contracts\Debug\ExceptionHandler" => array:2 [
          "concrete" => Closure {#160 …6}
          "shared" => true
        ]
        "env" => array:2 [
          "concrete" => Closure {#50 …5}
          "shared" => false
        ]
        "auth" => array:2 [
          "concrete" => Closure {#54 …5}
          "shared" => true
        ]
        "auth.driver" => array:2 [
          "concrete" => Closure {#56 …5}
          "shared" => true
        ]
        "Illuminate\Contracts\Auth\Authenticatable" => array:2 [
          "concrete" => Closure {#57 …5}
          "shared" => false
        ]
        "Illuminate\Contracts\Auth\Access\Gate" => array:2 [
          "concrete" => Closure {#58 …5}
          "shared" => true
        ]
        "cookie" => array:2 [
          "concrete" => Closure {#61 …5}
          "shared" => true
        ]
        "db.factory" => array:2 [
          "concrete" => Closure {#63 …5}
          "shared" => true
        ]
        "db" => array:2 [
          "concrete" => Closure {#64 …5}
          "shared" => true
        ]
        "db.connection" => array:2 [
          "concrete" => Closure {#65 …5}
          "shared" => false
        ]
        "Faker\Generator" => array:2 [
          "concrete" => Closure {#66 …5}
          "shared" => true
        ]
        "Illuminate\Database\Eloquent\Factory" => array:2 [
          "concrete" => Closure {#67 …5}
          "shared" => true
        ]
        "Illuminate\Contracts\Queue\EntityResolver" => array:2 [
          "concrete" => Closure {#68 …4}
          "shared" => true
        ]
        "encrypter" => array:2 [
          "concrete" => Closure {#70 …5}
          "shared" => true
        ]
        "files" => array:2 [
          "concrete" => Closure {#72 …4}
          "shared" => true
        ]
        "filesystem" => array:2 [
          "concrete" => Closure {#73 …4}
          "shared" => true
        ]
        "filesystem.disk" => array:2 [
          "concrete" => Closure {#74 …4}
          "shared" => true
        ]
        "filesystem.cloud" => array:2 [
          "concrete" => Closure {#75 …4}
          "shared" => true
        ]
        "Illuminate\Notifications\ChannelManager" => array:2 [
          "concrete" => Closure {#81 …5}
          "shared" => true
        ]
        "session" => array:2 [
          "concrete" => Closure {#87 …5}
          "shared" => true
        ]
        "session.store" => array:2 [
          "concrete" => Closure {#88 …5}
          "shared" => true
        ]
        "Illuminate\Session\Middleware\StartSession" => array:2 [
          "concrete" => Closure {#89 …6}
          "shared" => true
        ]
        "view" => array:2 [
          "concrete" => Closure {#91 …5}
          "shared" => true
        ]
        "view.finder" => array:2 [
          "concrete" => Closure {#92 …5}
          "shared" => false
        ]
        "view.engine.resolver" => array:2 [
          "concrete" => Closure {#93 …4}
          "shared" => true
        ]
        "Barryvdh\Debugbar\LaravelDebugbar" => array:2 [
          "concrete" => Closure {#95 …4}
          "shared" => true
        ]
        "command.debugbar.clear" => array:2 [
          "concrete" => Closure {#96 …5}
          "shared" => true
        ]
        "stripe" => array:2 [
          "concrete" => Closure {#99 …5}
          "shared" => true
        ]
        "stripe.config" => array:2 [
          "concrete" => Closure {#100 …5}
          "shared" => true
        ]
        "Hyn\Tenancy\Contracts\Customer" => array:2 [
          "concrete" => Closure {#104 …6}
          "shared" => false
        ]
        "Hyn\Tenancy\Contracts\Hostname" => array:2 [
          "concrete" => Closure {#105 …6}
          "shared" => false
        ]
        "Hyn\Tenancy\Contracts\Website" => array:2 [
          "concrete" => Closure {#106 …6}
          "shared" => false
        ]
        "Hyn\Tenancy\Contracts\Repositories\HostnameRepository" => array:2 [
          "concrete" => Closure {#110 …6}
          "shared" => true
        ]
        "Hyn\Tenancy\Contracts\Repositories\WebsiteRepository" => array:2 [
          "concrete" => Closure {#109 …6}
          "shared" => true
        ]
        "Hyn\Tenancy\Contracts\Repositories\CustomerRepository" => array:2 [
          "concrete" => Closure {#108 …6}
          "shared" => true
        ]
        "Hyn\Tenancy\Contracts\Database\PasswordGenerator" => array:2 [
          "concrete" => Closure {#115 …5}
          "shared" => false
        ]
        "Hyn\Tenancy\Database\Connection" => array:2 [
          "concrete" => Closure {#117 …6}
          "shared" => true
        ]
        "Hyn\Tenancy\Database\Console\Migrations\MigrateCommand" => array:2 [
          "concrete" => Closure {#118 …5}
          "shared" => true
        ]
        "Hyn\Tenancy\Database\Console\Migrations\RollbackCommand" => array:2 [
          "concrete" => Closure {#119 …5}
          "shared" => true
        ]
        "Hyn\Tenancy\Database\Console\Migrations\ResetCommand" => array:2 [
          "concrete" => Closure {#120 …5}
          "shared" => true
        ]
        "Hyn\Tenancy\Database\Console\Migrations\RefreshCommand" => array:2 [
          "concrete" => Closure {#121 …5}
          "shared" => true
        ]
        "Hyn\Tenancy\Database\Console\Seeds\SeedCommand" => array:2 [
          "concrete" => Closure {#122 …5}
          "shared" => true
        ]
        "Hyn\Tenancy\Contracts\Website\UuidGenerator" => array:2 [
          "concrete" => Closure {#125 …5}
          "shared" => true
        ]
        "Hyn\Tenancy\Contracts\Bus\Dispatcher" => array:2 [
          "concrete" => Closure {#127 …5}
          "shared" => true
        ]
        "tenancy.disk" => array:2 [
          "concrete" => Closure {#129 …5}
          "shared" => true
        ]
        "Hyn\Tenancy\Website\Directory" => array:2 [
          "concrete" => Closure {#130 …6}
          "shared" => false
        ]
        "blade.compiler" => array:2 [
          "concrete" => Closure {#137 …4}
          "shared" => true
        ]
        "Hyn\Tenancy\Listeners\Servant" => array:2 [
          "concrete" => Closure {#145 …6}
          "shared" => true
        ]
        "Curl" => array:2 [
          "concrete" => Closure {#146 …4}
          "shared" => true
        ]
        "command.laracasts.seed" => array:2 [
          "concrete" => Closure {#148 …5}
          "shared" => true
        ]
        "command.laracasts.migrate" => array:2 [
          "concrete" => Closure {#150 …5}
          "shared" => true
        ]
        "command.laracasts.migrate.pivot" => array:2 [
          "concrete" => Closure {#152 …5}
          "shared" => true
        ]
        "NunoMaduro\Collision\Contracts\Adapters\Phpunit\Listener" => array:2 [
          "concrete" => Closure {#156 …6}
          "shared" => true
        ]
        "NunoMaduro\Collision\Contracts\Provider" => array:2 [
          "concrete" => Closure {#157 …6}
          "shared" => false
        ]
        "sentry.config" => array:2 [
          "concrete" => Closure {#158 …5}
          "shared" => true
        ]
        "sentry" => array:2 [
          "concrete" => Closure {#162 …5}
          "shared" => true
        ]
        "express_checkout" => array:2 [
          "concrete" => Closure {#164 …4}
          "shared" => true
        ]
        "adaptive_payments" => array:2 [
          "concrete" => Closure {#165 …4}
          "shared" => true
        ]
        "geoip" => array:2 [
          "concrete" => Closure {#167 …5}
          "shared" => true
        ]
        "entrust" => array:2 [
          "concrete" => Closure {#171 …5}
          "shared" => false
        ]
        "command.entrust.migration" => array:2 [
          "concrete" => Closure {#172 …5}
          "shared" => true
        ]
        "Hyn\Tenancy\Contracts\CurrentHostname" => array:2 [
          "concrete" => Closure {#260 …4}
          "shared" => true
        ]
        "cache" => array:2 [
          "concrete" => Closure {#211 …5}
          "shared" => true
        ]
        "cache.store" => array:2 [
          "concrete" => Closure {#215 …5}
          "shared" => true
        ]
        "memcached.connector" => array:2 [
          "concrete" => Closure {#216 …4}
          "shared" => true
        ]
        "Hyn\Tenancy\Environment" => array:2 [
          "concrete" => Closure {#243 …5}
          "shared" => true
        ]
        "translation.loader" => array:2 [
          "concrete" => Closure {#297 …5}
          "shared" => true
        ]
        "translator" => array:2 [
          "concrete" => Closure {#298 …5}
          "shared" => true
        ]
        "validation.presence" => array:2 [
          "concrete" => Closure {#304 …5}
          "shared" => true
        ]
        "validator" => array:2 [
          "concrete" => Closure {#305 …5}
          "shared" => true
        ]
        "Illuminate\Console\Scheduling\Schedule" => array:2 [
          "concrete" => Closure {#47 …5}
          "shared" => true
        ]
        "Illuminate\Broadcasting\BroadcastManager" => array:2 [
          "concrete" => Closure {#515 …5}
          "shared" => true
        ]
        "Illuminate\Contracts\Broadcasting\Broadcaster" => array:2 [
          "concrete" => Closure {#516 …5}
          "shared" => true
        ]
        "Illuminate\Bus\Dispatcher" => array:2 [
          "concrete" => Closure {#520 …5}
          "shared" => true
        ]
        "command.cache.clear" => array:2 [
          "concrete" => Closure {#523 …5}
          "shared" => true
        ]
        "command.cache.forget" => array:2 [
          "concrete" => Closure {#524 …5}
          "shared" => true
        ]
        "command.clear-compiled" => array:2 [
          "concrete" => Closure {#525 …4}
          "shared" => true
        ]
        "command.auth.resets.clear" => array:2 [
          "concrete" => Closure {#526 …4}
          "shared" => true
        ]
        "command.config.cache" => array:2 [
          "concrete" => Closure {#527 …5}
          "shared" => true
        ]
        "command.config.clear" => array:2 [
          "concrete" => Closure {#528 …5}
          "shared" => true
        ]
        "command.down" => array:2 [
          "concrete" => Closure {#529 …4}
          "shared" => true
        ]
        "command.environment" => array:2 [
          "concrete" => Closure {#530 …4}
          "shared" => true
        ]
        "command.key.generate" => array:2 [
          "concrete" => Closure {#531 …4}
          "shared" => true
        ]
        "command.migrate" => array:2 [
          "concrete" => Closure {#532 …5}
          "shared" => true
        ]
        "command.migrate.fresh" => array:2 [
          "concrete" => Closure {#533 …4}
          "shared" => true
        ]
        "command.migrate.install" => array:2 [
          "concrete" => Closure {#534 …5}
          "shared" => true
        ]
        "command.migrate.refresh" => array:2 [
          "concrete" => Closure {#535 …4}
          "shared" => true
        ]
        "command.migrate.reset" => array:2 [
          "concrete" => Closure {#536 …5}
          "shared" => true
        ]
        "command.migrate.rollback" => array:2 [
          "concrete" => Closure {#537 …5}
          "shared" => true
        ]
        "command.migrate.status" => array:2 [
          "concrete" => Closure {#538 …5}
          "shared" => true
        ]
        "command.package.discover" => array:2 [
          "concrete" => Closure {#539 …5}
          "shared" => true
        ]
        "command.preset" => array:2 [
          "concrete" => Closure {#540 …4}
          "shared" => true
        ]
        "command.queue.failed" => array:2 [
          "concrete" => Closure {#541 …4}
          "shared" => true
        ]
        "command.queue.flush" => array:2 [
          "concrete" => Closure {#542 …4}
          "shared" => true
        ]
        "command.queue.forget" => array:2 [
          "concrete" => Closure {#543 …4}
          "shared" => true
        ]
        "command.queue.listen" => array:2 [
          "concrete" => Closure {#544 …5}
          "shared" => true
        ]
        "command.queue.restart" => array:2 [
          "concrete" => Closure {#545 …4}
          "shared" => true
        ]
        "command.queue.retry" => array:2 [
          "concrete" => Closure {#546 …4}
          "shared" => true
        ]
        "command.queue.work" => array:2 [
          "concrete" => Closure {#547 …5}
          "shared" => true
        ]
        "command.route.cache" => array:2 [
          "concrete" => Closure {#548 …5}
          "shared" => true
        ]
        "command.route.clear" => array:2 [
          "concrete" => Closure {#549 …5}
          "shared" => true
        ]
        "command.route.list" => array:2 [
          "concrete" => Closure {#550 …5}
          "shared" => true
        ]
        "command.seed" => array:2 [
          "concrete" => Closure {#551 …5}
          "shared" => true
        ]
        "Illuminate\Console\Scheduling\ScheduleFinishCommand" => array:2 [
          "concrete" => Closure {#552 …6}
          "shared" => true
        ]
        "Illuminate\Console\Scheduling\ScheduleRunCommand" => array:2 [
          "concrete" => Closure {#553 …6}
          "shared" => true
        ]
        "command.storage.link" => array:2 [
          "concrete" => Closure {#554 …4}
          "shared" => true
        ]
        "command.up" => array:2 [
          "concrete" => Closure {#555 …4}
          "shared" => true
        ]
        "command.view.cache" => array:2 [
          "concrete" => Closure {#556 …5}
          "shared" => true
        ]
        "command.view.clear" => array:2 [
          "concrete" => Closure {#557 …5}
          "shared" => true
        ]
        "command.app.name" => array:2 [
          "concrete" => Closure {#558 …5}
          "shared" => true
        ]
        "command.auth.make" => array:2 [
          "concrete" => Closure {#559 …5}
          "shared" => true
        ]
        "command.cache.table" => array:2 [
          "concrete" => Closure {#560 …5}
          "shared" => true
        ]
        "command.channel.make" => array:2 [
          "concrete" => Closure {#561 …5}
          "shared" => true
        ]
        "command.console.make" => array:2 [
          "concrete" => Closure {#562 …5}
          "shared" => true
        ]
        "command.controller.make" => array:2 [
          "concrete" => Closure {#563 …5}
          "shared" => true
        ]
        "command.event.generate" => array:2 [
          "concrete" => Closure {#564 …4}
          "shared" => true
        ]
        "command.event.make" => array:2 [
          "concrete" => Closure {#565 …5}
          "shared" => true
        ]
        "command.exception.make" => array:2 [
          "concrete" => Closure {#566 …5}
          "shared" => true
        ]
        "command.factory.make" => array:2 [
          "concrete" => Closure {#567 …5}
          "shared" => true
        ]
        "command.job.make" => array:2 [
          "concrete" => Closure {#568 …5}
          "shared" => true
        ]
        "command.listener.make" => array:2 [
          "concrete" => Closure {#569 …5}
          "shared" => true
        ]
        "command.mail.make" => array:2 [
          "concrete" => Closure {#570 …5}
          "shared" => true
        ]
        "command.middleware.make" => array:2 [
          "concrete" => Closure {#571 …5}
          "shared" => true
        ]
        "command.migrate.make" => array:2 [
          "concrete" => Closure {#572 …5}
          "shared" => true
        ]
        "command.model.make" => array:2 [
          "concrete" => Closure {#573 …5}
          "shared" => true
        ]
        "command.notification.make" => array:2 [
          "concrete" => Closure {#574 …5}
          "shared" => true
        ]
        "command.notification.table" => array:2 [
          "concrete" => Closure {#575 …5}
          "shared" => true
        ]
        "command.policy.make" => array:2 [
          "concrete" => Closure {#576 …5}
          "shared" => true
        ]
        "command.provider.make" => array:2 [
          "concrete" => Closure {#577 …5}
          "shared" => true
        ]
        "command.queue.failed-table" => array:2 [
          "concrete" => Closure {#578 …5}
          "shared" => true
        ]
        "command.queue.table" => array:2 [
          "concrete" => Closure {#579 …5}
          "shared" => true
        ]
        "command.request.make" => array:2 [
          "concrete" => Closure {#580 …5}
          "shared" => true
        ]
        "command.resource.make" => array:2 [
          "concrete" => Closure {#581 …5}
          "shared" => true
        ]
        "command.rule.make" => array:2 [
          "concrete" => Closure {#582 …5}
          "shared" => true
        ]
        "command.seeder.make" => array:2 [
          "concrete" => Closure {#583 …5}
          "shared" => true
        ]
        "command.session.table" => array:2 [
          "concrete" => Closure {#584 …5}
          "shared" => true
        ]
        "command.serve" => array:2 [
          "concrete" => Closure {#585 …4}
          "shared" => true
        ]
        "command.test.make" => array:2 [
          "concrete" => Closure {#586 …5}
          "shared" => true
        ]
        "command.vendor.publish" => array:2 [
          "concrete" => Closure {#587 …5}
          "shared" => true
        ]
        "migration.repository" => array:2 [
          "concrete" => Closure {#590 …5}
          "shared" => true
        ]
        "migrator" => array:2 [
          "concrete" => Closure {#591 …5}
          "shared" => true
        ]
        "migration.creator" => array:2 [
          "concrete" => Closure {#592 …5}
          "shared" => true
        ]
        "composer" => array:2 [
          "concrete" => Closure {#594 …5}
          "shared" => true
        ]
        "hash" => array:2 [
          "concrete" => Closure {#596 …5}
          "shared" => true
        ]
        "hash.driver" => array:2 [
          "concrete" => Closure {#597 …5}
          "shared" => true
        ]
        "swift.transport" => array:2 [
          "concrete" => Closure {#599 …5}
          "shared" => true
        ]
        "swift.mailer" => array:2 [
          "concrete" => Closure {#600 …5}
          "shared" => true
        ]
        "mailer" => array:2 [
          "concrete" => Closure {#601 …5}
          "shared" => true
        ]
        "Illuminate\Mail\Markdown" => array:2 [
          "concrete" => Closure {#602 …5}
          "shared" => true
        ]
        "Illuminate\Contracts\Pipeline\Hub" => array:2 [
          "concrete" => Closure {#604 …6}
          "shared" => true
        ]
        "queue" => array:2 [
          "concrete" => Closure {#606 …5}
          "shared" => true
        ]
        "queue.connection" => array:2 [
          "concrete" => Closure {#607 …5}
          "shared" => true
        ]
        "queue.worker" => array:2 [
          "concrete" => Closure {#608 …4}
          "shared" => true
        ]
        "queue.listener" => array:2 [
          "concrete" => Closure {#609 …4}
          "shared" => true
        ]
        "queue.failer" => array:2 [
          "concrete" => Closure {#610 …4}
          "shared" => true
        ]
        "redis" => array:2 [
          "concrete" => Closure {#612 …5}
          "shared" => true
        ]
        "redis.connection" => array:2 [
          "concrete" => Closure {#613 …5}
          "shared" => false
        ]
        "auth.password" => array:2 [
          "concrete" => Closure {#615 …5}
          "shared" => true
        ]
        "auth.password.broker" => array:2 [
          "concrete" => Closure {#616 …5}
          "shared" => false
        ]
        "browser-detect" => array:2 [
          "concrete" => Closure {#618 …6}
          "shared" => true
        ]
        "command.tinker" => array:2 [
          "concrete" => Closure {#636 …4}
          "shared" => true
        ]
        "Telegram\Bot\Api" => array:2 [
          "concrete" => Closure {#639 …5}
          "shared" => true
        ]
      ]
      #methodBindings: []
      #instances: array:133 [
        "path" => "/home/forge/clickmember.io/app"
        "path.base" => "/home/forge/clickmember.io"
        "path.lang" => "/home/forge/clickmember.io/resources/lang"
        "path.config" => "/home/forge/clickmember.io/config"
        "path.public" => "/home/forge/clickmember.io/public"
        "path.storage" => "/home/forge/clickmember.io/storage"
        "path.database" => "/home/forge/clickmember.io/database"
        "path.resources" => "/home/forge/clickmember.io/resources"
        "path.bootstrap" => "/home/forge/clickmember.io/bootstrap"
        "app" => Illuminate\Foundation\Application {#2}
        "Illuminate\Container\Container" => Illuminate\Foundation\Application {#2}
        "Illuminate\Foundation\PackageManifest" => Illuminate\Foundation\PackageManifest {#4
          +files: Illuminate\Filesystem\Filesystem {#5}
          +basePath: "/home/forge/clickmember.io"
          +vendorPath: "/home/forge/clickmember.io/vendor"
          +manifestPath: "/home/forge/clickmember.io/bootstrap/cache/packages.php"
          +manifest: array:15 [ …15]
        }
        "events" => Illuminate\Events\Dispatcher {#25}
        "Illuminate\Contracts\Console\Kernel" => App\Console\Kernel {#27}
        "config" => Illuminate\Config\Repository {#37
          #items: array:23 [ …23]
        }
        "request" => Illuminate\Http\Request {#48
          #json: null
          #convertedFiles: null
          #userResolver: null
          #routeResolver: null
          +attributes: Symfony\Component\HttpFoundation\ParameterBag {#40 …1}
          +request: Symfony\Component\HttpFoundation\ParameterBag {#46 …1}
          +query: Symfony\Component\HttpFoundation\ParameterBag {#44 …1}
          +server: Symfony\Component\HttpFoundation\ServerBag {#43 …1}
          +files: Symfony\Component\HttpFoundation\FileBag {#41 …1}
          +cookies: Symfony\Component\HttpFoundation\ParameterBag {#38 …1}
          +headers: Symfony\Component\HttpFoundation\HeaderBag {#45 …2}
          #content: null
          #languages: null
          #charsets: null
          #encodings: null
          #acceptableContentTypes: null
          #pathInfo: null
          #requestUri: null
          #baseUrl: null
          #basePath: null
          #method: null
          #format: null
          #session: null
          #locale: null
          #defaultLocale: "en"
          -isHostValid: true
          -isForwardedValid: true
          pathInfo: "/"
          requestUri: "/"
          baseUrl: ""
          basePath: ""
          method: "GET"
          format: "html"
        }
        "router" => Illuminate\Routing\Router {#111
          #events: Illuminate\Events\Dispatcher {#25}
          #container: Illuminate\Foundation\Application {#2}
          #routes: Illuminate\Routing\RouteCollection {#112
            #routes: array:6 [ …6]
            #allRoutes: array:169 [ …169]
            #nameList: array:156 [ …156]
            #actionList: array:156 [ …156]
          }
          #current: null
          #currentRequest: null
          #middleware: array:10 [ …10]
          #middlewareGroups: array:2 [ …2]
          +middlewarePriority: array:6 [ …6]
          #binders: []
          #patterns: []
          #groupStack: []
        }
        "Illuminate\Contracts\Http\Kernel" => App\Http\Kernel {#113
          #middleware: array:8 [ …8]
          #middlewareGroups: array:2 [ …2]
          #routeMiddleware: array:10 [ …10]
          #app: Illuminate\Foundation\Application {#2}
          #router: Illuminate\Routing\Router {#111}
          #bootstrappers: array:6 [ …6]
          #middlewarePriority: array:6 [ …6]
        }
        "view.engine.resolver" => Illuminate\View\Engines\EngineResolver {#134
          #resolvers: array:3 [ …3]
          #resolved: array:1 [ …1]
        }
        "files" => Illuminate\Filesystem\Filesystem {#140}
        "view" => Illuminate\View\Factory {#141
          #engines: Illuminate\View\Engines\EngineResolver {#134}
          #finder: Illuminate\View\FileViewFinder {#139 …5}
          #events: Illuminate\Events\Dispatcher {#25}
          #container: Illuminate\Foundation\Application {#2}
          #shared: array:2 [ …2]
          #extensions: array:3 [ …3]
          #composers: []
          #renderCount: 0
          #componentStack: []
          #componentData: []
          #slots: []
          #slotStack: []
          #sections: []
          #sectionStack: []
          #loopsStack: []
          #pushes: []
          #prepends: []
          #pushStack: []
          #translationReplacements: []
        }
        "Illuminate\Contracts\Debug\ExceptionHandler" => NunoMaduro\Collision\Adapters\Laravel\ExceptionHandler {#20
          #appExceptionHandler: App\Exceptions\Handler {#161 …4}
          #app: Illuminate\Foundation\Application {#2}
        }
        "db.factory" => Illuminate\Database\Connectors\ConnectionFactory {#42
          #container: Illuminate\Foundation\Application {#2}
        }
        "db" => Illuminate\Database\DatabaseManager {#39
          #app: Illuminate\Foundation\Application {#2}
          #factory: Illuminate\Database\Connectors\ConnectionFactory {#42}
          #connections: array:1 [ …1]
          #extensions: []
        }
        "Hyn\Tenancy\Database\Connection" => Hyn\Tenancy\Database\Connection {#198
          #config: Illuminate\Config\Repository {#37}
          #passwordGenerator: Hyn\Tenancy\Generators\Database\DefaultPasswordGenerator {#199 …1}
          #events: null
          #connection: null
          -db: Illuminate\Database\DatabaseManager {#39}
          #artisan: App\Console\Kernel {#27}
        }
        "Hyn\Tenancy\Contracts\Bus\Dispatcher" => Illuminate\Bus\Dispatcher {#200
          #container: Illuminate\Foundation\Application {#2}
          #pipeline: Illuminate\Pipeline\Pipeline {#196 …4}
          #pipes: []
          #handlers: []
          #queueResolver: null
        }
        "cache" => Illuminate\Cache\CacheManager {#218
          #app: Illuminate\Foundation\Application {#2}
          #stores: array:1 [ …1]
          #customCreators: []
        }
        "Hyn\Tenancy\Contracts\Repositories\HostnameRepository" => Hyn\Tenancy\Repositories\HostnameRepository {#219
          #hostname: Hyn\Tenancy\Models\Hostname {#214 …26}
          #validator: Hyn\Tenancy\Validators\HostnameValidator {#212 …3}
          #cache: Illuminate\Cache\CacheManager {#218}
        }
        "Hyn\Tenancy\Contracts\Website\UuidGenerator" => Hyn\Tenancy\Generators\Uuid\ShaGenerator {#234}
        "filesystem" => Illuminate\Filesystem\FilesystemManager {#237
          #app: Illuminate\Foundation\Application {#2}
          #disks: array:2 [ …2]
          #customCreators: []
        }
        "filesystem.disk" => Illuminate\Filesystem\FilesystemAdapter {#241
          #driver: League\Flysystem\Filesystem {#239 …3}
        }
        "tenancy.disk" => Illuminate\Filesystem\FilesystemAdapter {#251}
        "Hyn\Tenancy\Contracts\CurrentHostname" => null
        "Hyn\Tenancy\Environment" => Hyn\Tenancy\Environment {#244}
        "Hyn\Tenancy\Listeners\Servant" => Hyn\Tenancy\Listeners\Servant {#277
          #filesystemManager: Illuminate\Filesystem\FilesystemManager {#237}
        }
        "sentry.config" => array:3 [
          "dsn" => null
          "breadcrumbs.sql_bindings" => true
          "user_context" => true
        ]
        "sentry" => Raven_Client {#272
          +breadcrumbs: Raven_Breadcrumbs {#285 …4}
          +context: Raven_Context {#282 …3}
          +extra_data: []
          +severity_map: null
          +store_errors_for_bulk_send: false
          #error_handler: null
          #error_types: null
          #serializer: Raven_Serializer {#283 …1}
          #reprSerializer: Raven_ReprSerializer {#286 …1}
          #app_path: "/home/forge/clickmember.io/"
          #prefixes: array:1 [ …1]
          #excluded_app_paths: array:1 [ …1]
          #transport: null
          +logger: "php"
          +server: null
          +secret_key: null
          +public_key: null
          +project: 1
          +auto_log_stacks: false
          +name: "clickmember"
          +site: ""
          +tags: []
          +release: null
          +environment: "production"
          +sample_rate: 1
          +trace: true
          +timeout: 2
          +message_limit: 1024
          +exclude: []
          +http_proxy: null
          #send_callback: null
          +curl_method: "sync"
          +curl_path: "curl"
          +curl_ipv4: true
          +ca_cert: "/home/forge/clickmember.io/vendor/sentry/sentry/lib/Raven/data/cacert.pem"
          +verify_ssl: true
          +curl_ssl_version: null
          +trust_x_forwarded_proto: null
          +mb_detect_order: null
          +processors: array:1 [ …1]
          +_lasterror: null
          #_last_sentry_error: null
          +_last_event_id: null
          +_user: null
          +_pending_events: []
          +sdk: array:2 [ …2]
          #_curl_handler: null
          #_curl_instance: null
          #_shutdown_function_has_been_set: true
          +"transaction": Raven_TransactionStack {#281 …1}
        }
        "translation.loader" => Illuminate\Translation\FileLoader {#300
          #files: Illuminate\Filesystem\Filesystem {#140}
          #path: "/home/forge/clickmember.io/resources/lang"
          #jsonPaths: []
          #hints: array:1 [ …1]
        }
        "translator" => Illuminate\Translation\Translator {#301
          #loader: Illuminate\Translation\FileLoader {#300}
          #locale: "en"
          #fallback: "en"
          #loaded: []
          #selector: null
          #parsed: []
        }
        "validation.presence" => Illuminate\Validation\DatabasePresenceVerifier {#308
          #db: Illuminate\Database\DatabaseManager {#39}
          #connection: "system"
        }
        "validator" => Illuminate\Validation\Factory {#307
          #translator: Illuminate\Translation\Translator {#301}
          #verifier: Illuminate\Validation\DatabasePresenceVerifier {#308}
          #container: Illuminate\Foundation\Application {#2}
          #extensions: array:1 [ …1]
          #implicitExtensions: []
          #dependentExtensions: []
          #replacers: []
          #fallbackMessages: []
          #resolver: null
        }
        "blade.compiler" => Illuminate\View\Compilers\BladeCompiler {#312
          #extensions: []
          #customDirectives: array:18 [ …18]
          #conditions: array:4 [ …4]
          #path: null
          #compilers: array:4 [ …4]
          #rawTags: array:2 [ …2]
          #contentTags: array:2 [ …2]
          #escapedTags: array:2 [ …2]
          #echoFormat: "e(%s)"
          #footer: []
          #rawBlocks: []
          #files: Illuminate\Filesystem\Filesystem {#140}
          #cachePath: "/home/forge/clickmember.io/storage/framework/views"
          #firstCaseInSwitch: true
          -encodingOptions: 15
          #lastSection: null
          #forElseCounter: 0
        }
        "Illuminate\Contracts\Auth\Access\Gate" => Illuminate\Auth\Access\Gate {#318
          #container: Illuminate\Foundation\Application {#2}
          #userResolver: Closure {#319 …5}
          #abilities: []
          #policies: array:1 [ …1]
          #beforeCallbacks: []
          #afterCallbacks: []
        }
        "routes" => Illuminate\Routing\RouteCollection {#112}
        "url" => Illuminate\Routing\UrlGenerator {#321
          #routes: Illuminate\Routing\RouteCollection {#112}
          #request: Illuminate\Http\Request {#48}
          #forcedRoot: null
          #forceScheme: null
          #cachedRoot: null
          #cachedSchema: null
          #rootNamespace: "App\Http\Controllers"
          #sessionResolver: Closure {#323 …4}
          #keyResolver: Closure {#324 …4}
          #formatHostUsing: null
          #formatPathUsing: null
          #routeGenerator: null
        }
        "Illuminate\Console\Scheduling\Schedule" => Illuminate\Console\Scheduling\Schedule {#52
          #events: []
          #eventMutex: Illuminate\Console\Scheduling\CacheEventMutex {#518 …2}
          #schedulingMutex: Illuminate\Console\Scheduling\CacheSchedulingMutex {#519 …2}
        }
        "session" => Illuminate\Session\SessionManager {#647
          #app: Illuminate\Foundation\Application {#2}
          #customCreators: []
          #drivers: []
        }
        "Barryvdh\Debugbar\LaravelDebugbar" => Barryvdh\Debugbar\LaravelDebugbar {#645
          #app: Illuminate\Foundation\Application {#2}
          #version: "5.6.16"
          #booted: false
          #enabled: null
          #is_lumen: false
          #collectors: []
          #data: null
          #jsRenderer: null
          #requestIdGenerator: null
          #requestId: null
          #storage: null
          #httpDriver: Barryvdh\Debugbar\SymfonyHttpDriver {#649 …2}
          #stackSessionNamespace: "PHPDEBUGBAR_STACK_DATA"
          #stackAlwaysUseSessionStorage: false
        }
        "command.debugbar.clear" => Barryvdh\Debugbar\Console\ClearCommand {#643
          #name: "debugbar:clear"
          #description: "Clear the Debugbar Storage"
          #debugbar: Barryvdh\Debugbar\LaravelDebugbar {#645}
          #laravel: Illuminate\Foundation\Application {#2}
          #input: null
          #output: null
          #signature: null
          #hidden: false
          #verbosity: 32
          #verbosityMap: array:5 [ …5]
          -application: Illuminate\Console\Application {#642 …18}
          -processTitle: null
          -aliases: []
          -definition: Symfony\Component\Console\Input\InputDefinition {#651 …6}
          -help: null
          -ignoreValidationErrors: false
          -applicationDefinitionMerged: false
          -applicationDefinitionMergedWithArgs: false
          -code: null
          -synopsis: []
          -usages: []
          -helperSet: Symfony\Component\Console\Helper\HelperSet {#658 …2}
          -name: "debugbar:clear"
          -hidden: false
          -description: "Clear the Debugbar Storage"
        }
        "migration.repository" => Illuminate\Database\Migrations\DatabaseMigrationRepository {#668
          #resolver: Illuminate\Database\DatabaseManager {#39}
          #table: "migrations"
          #connection: "tenant"
        }
        "migrator" => Illuminate\Database\Migrations\Migrator {#669
          #repository: Illuminate\Database\Migrations\DatabaseMigrationRepository {#668}
          #files: Illuminate\Filesystem\Filesystem {#140}
          #resolver: Illuminate\Database\DatabaseManager {#39}
          #connection: "tenant"
          #notes: array:74 [ …74]
          #paths: array:1 [ …1]
        }
        "Hyn\Tenancy\Contracts\Repositories\WebsiteRepository" => Hyn\Tenancy\Repositories\WebsiteRepository {#686
          #website: Hyn\Tenancy\Models\Website {#687 …26}
          #validator: Hyn\Tenancy\Validators\WebsiteValidator {#685 …3}
          #cache: Illuminate\Cache\CacheManager {#218}
        }
        "Hyn\Tenancy\Database\Console\Migrations\MigrateCommand" => Hyn\Tenancy\Database\Console\Migrations\MigrateCommand {#667
          #signature: """
            migrate {--database= : The database connection to use.}\n
                            {--force : Force the operation to run when in production.}\n
                            {--path= : The path to the migrations files to be executed.}\n
                            {--realpath : Indicate any provided migration file paths are pre-resolved absolute paths.}\n
                            {--pretend : Dump the SQL queries that would be run.}\n
                            {--seed : Indicates if the seed task should be re-run.}\n
                            {--step : Force the migrations to be run so they can be rolled back individually.}
            """
          #description: "Run the database migrations"
          #migrator: Illuminate\Database\Migrations\Migrator {#669}
          #laravel: Illuminate\Foundation\Application {#2}
          #input: Symfony\Component\Console\Input\ArrayInput {#1059 …6}
          #output: Illuminate\Console\OutputStyle {#1063 …7}
          #name: "migrate"
          #hidden: false
          #verbosity: 32
          #verbosityMap: array:5 [ …5]
          -application: Illuminate\Console\Application {#642 …18}
          -processTitle: null
          -aliases: []
          -definition: Symfony\Component\Console\Input\InputDefinition {#677 …6}
          -help: null
          -ignoreValidationErrors: false
          -applicationDefinitionMerged: true
          -applicationDefinitionMergedWithArgs: true
          -code: null
          -synopsis: array:2 [ …2]
          -usages: []
          -helperSet: Symfony\Component\Console\Helper\HelperSet {#658 …2}
          -websites: Hyn\Tenancy\Repositories\WebsiteRepository {#686}
          -connection: Hyn\Tenancy\Database\Connection {#198}
          -name: "tenancy:migrate"
          -hidden: false
          -description: "Run the database migrations"
        }
        "Hyn\Tenancy\Database\Console\Migrations\RollbackCommand" => Hyn\Tenancy\Database\Console\Migrations\RollbackCommand {#683
          #name: "migrate:rollback"
          #description: "Rollback the last database migration"
          #migrator: Illuminate\Database\Migrations\Migrator {#669}
          #laravel: Illuminate\Foundation\Application {#2}
          #input: null
          #output: null
          #signature: null
          #hidden: false
          #verbosity: 32
          #verbosityMap: array:5 [ …5]
          -application: Illuminate\Console\Application {#642 …18}
          -processTitle: null
          -aliases: []
          -definition: Symfony\Component\Console\Input\InputDefinition {#682 …6}
          -help: null
          -ignoreValidationErrors: false
          -applicationDefinitionMerged: false
          -applicationDefinitionMergedWithArgs: false
          -code: null
          -synopsis: []
          -usages: []
          -helperSet: Symfony\Component\Console\Helper\HelperSet {#658 …2}
          -websites: Hyn\Tenancy\Repositories\WebsiteRepository {#686}
          -connection: Hyn\Tenancy\Database\Connection {#198}
          -name: "tenancy:migrate:rollback"
          -hidden: false
          -description: "Rollback the last database migration"
        }
        "Hyn\Tenancy\Database\Console\Migrations\ResetCommand" => Hyn\Tenancy\Database\Console\Migrations\ResetCommand {#690
          #name: "migrate:reset"
          #description: "Rollback all database migrations"
          #migrator: Illuminate\Database\Migrations\Migrator {#669}
          #laravel: Illuminate\Foundation\Application {#2}
          #input: null
          #output: null
          #signature: null
          #hidden: false
          #verbosity: 32
          #verbosityMap: array:5 [ …5]
          -application: Illuminate\Console\Application {#642 …18}
          -processTitle: null
          -aliases: []
          -definition: Symfony\Component\Console\Input\InputDefinition {#692 …6}
          -help: null
          -ignoreValidationErrors: false
          -applicationDefinitionMerged: false
          -applicationDefinitionMergedWithArgs: false
          -code: null
          -synopsis: []
          -usages: []
          -helperSet: Symfony\Component\Console\Helper\HelperSet {#658 …2}
          -websites: Hyn\Tenancy\Repositories\WebsiteRepository {#686}
          -connection: Hyn\Tenancy\Database\Connection {#198}
          -name: "tenancy:migrate:reset"
          -hidden: false
          -description: "Rollback all database migrations"
        }
        "Hyn\Tenancy\Database\Console\Migrations\RefreshCommand" => Hyn\Tenancy\Database\Console\Migrations\RefreshCommand {#698
          #name: "migrate:refresh"
          #description: "Reset and re-run all migrations"
          #laravel: Illuminate\Foundation\Application {#2}
          #input: null
          #output: null
          #signature: null
          #hidden: false
          #verbosity: 32
          #verbosityMap: array:5 [ …5]
          -application: Illuminate\Console\Application {#642 …18}
          -processTitle: null
          -aliases: []
          -definition: Symfony\Component\Console\Input\InputDefinition {#700 …6}
          -help: null
          -ignoreValidationErrors: false
          -applicationDefinitionMerged: false
          -applicationDefinitionMergedWithArgs: false
          -code: null
          -synopsis: []
          -usages: []
          -helperSet: Symfony\Component\Console\Helper\HelperSet {#658 …2}
          -websites: Hyn\Tenancy\Repositories\WebsiteRepository {#686}
          -connection: Hyn\Tenancy\Database\Connection {#198}
          -name: "tenancy:migrate:refresh"
          -hidden: false
          -description: "Reset and re-run all migrations"
        }
        "Hyn\Tenancy\Database\Console\Seeds\SeedCommand" => Hyn\Tenancy\Database\Console\Seeds\SeedCommand {#708
          #name: "db:seed"
          #description: "Seed the database with records"
          #resolver: Illuminate\Database\DatabaseManager {#39}
          #laravel: Illuminate\Foundation\Application {#2}
          #input: null
          #output: null
          #signature: null
          #hidden: false
          #verbosity: 32
          #verbosityMap: array:5 [ …5]
          -application: Illuminate\Console\Application {#642 …18}
          -processTitle: null
          -aliases: []
          -definition: Symfony\Component\Console\Input\InputDefinition {#710 …6}
          -help: null
          -ignoreValidationErrors: false
          -applicationDefinitionMerged: false
          -applicationDefinitionMergedWithArgs: false
          -code: null
          -synopsis: []
          -usages: []
          -helperSet: Symfony\Component\Console\Helper\HelperSet {#658 …2}
          -websites: Hyn\Tenancy\Repositories\WebsiteRepository {#686}
          -connection: Hyn\Tenancy\Database\Connection {#198}
          -name: "tenancy:db:seed"
          -hidden: false
          -description: "Seed the database with records"
        }
        "command.laracasts.seed" => Laracasts\Generators\Commands\SeedMakeCommand {#718
          #name: "make:seed"
          #description: "Create a new database seed class"
          #type: "Seed"
          #files: Illuminate\Filesystem\Filesystem {#140}
          #laravel: Illuminate\Foundation\Application {#2}
          #input: null
          #output: null
          #signature: null
          #hidden: false
          #verbosity: 32
          #verbosityMap: array:5 [ …5]
          -application: Illuminate\Console\Application {#642 …18}
          -processTitle: null
          -aliases: []
          -definition: Symfony\Component\Console\Input\InputDefinition {#719 …6}
          -help: null
          -ignoreValidationErrors: false
          -applicationDefinitionMerged: false
          -applicationDefinitionMergedWithArgs: false
          -code: null
          -synopsis: []
          -usages: []
          -helperSet: Symfony\Component\Console\Helper\HelperSet {#658 …2}
          -name: "make:seed"
          -hidden: false
          -description: "Create a new database seed class"
        }
        "composer" => Illuminate\Support\Composer {#726
          #files: Illuminate\Filesystem\Filesystem {#140}
          #workingPath: "/home/forge/clickmember.io"
        }
        "command.laracasts.migrate" => Laracasts\Generators\Commands\MigrationMakeCommand {#721
          #name: "make:migration:schema"
          #description: "Create a new migration class and apply schema at the same time"
          #files: Illuminate\Filesystem\Filesystem {#140}
          #meta: null
          -composer: Illuminate\Support\Composer {#726}
          #laravel: Illuminate\Foundation\Application {#2}
          #input: null
          #output: null
          #signature: null
          #hidden: false
          #verbosity: 32
          #verbosityMap: array:5 [ …5]
          -application: Illuminate\Console\Application {#642 …18}
          -processTitle: null
          -aliases: []
          -definition: Symfony\Component\Console\Input\InputDefinition {#722 …6}
          -help: null
          -ignoreValidationErrors: false
          -applicationDefinitionMerged: false
          -applicationDefinitionMergedWithArgs: false
          -code: null
          -synopsis: []
          -usages: []
          -helperSet: Symfony\Component\Console\Helper\HelperSet {#658 …2}
          -name: "make:migration:schema"
          -hidden: false
          -description: "Create a new migration class and apply schema at the same time"
        }
        "command.laracasts.migrate.pivot" => Laracasts\Generators\Commands\PivotMigrationMakeCommand {#727
          #name: "make:migration:pivot"
          #description: "Create a new migration pivot class"
          #type: "Migration"
          #files: Illuminate\Filesystem\Filesystem {#140}
          #laravel: Illuminate\Foundation\Application {#2}
          #input: null
          #output: null
          #signature: null
          #hidden: false
          #verbosity: 32
          #verbosityMap: array:5 [ …5]
          -application: Illuminate\Console\Application {#642 …18}
          -processTitle: null
          -aliases: []
          -definition: Symfony\Component\Console\Input\InputDefinition {#728 …6}
          -help: null
          -ignoreValidationErrors: false
          -applicationDefinitionMerged: false
          -applicationDefinitionMergedWithArgs: false
          -code: null
          -synopsis: []
          -usages: []
          -helperSet: Symfony\Component\Console\Helper\HelperSet {#658 …2}
          -name: "make:migration:pivot"
          -hidden: false
          -description: "Create a new migration pivot class"
        }
        "command.entrust.migration" => Zizaco\Entrust\MigrationCommand {#716
          #name: "entrust:migration"
          #description: "Creates a migration following the Entrust specifications."
          #laravel: Illuminate\Foundation\Application {#2}
          #input: null
          #output: null
          #signature: null
          #hidden: false
          #verbosity: 32
          #verbosityMap: array:5 [ …5]
          -application: Illuminate\Console\Application {#642 …18}
          -processTitle: null
          -aliases: []
          -definition: Symfony\Component\Console\Input\InputDefinition {#717 …6}
          -help: null
          -ignoreValidationErrors: false
          -applicationDefinitionMerged: false
          -applicationDefinitionMergedWithArgs: false
          -code: null
          -synopsis: []
          -usages: []
          -helperSet: Symfony\Component\Console\Helper\HelperSet {#658 …2}
          -name: "entrust:migration"
          -hidden: false
          -description: "Creates a migration following the Entrust specifications."
        }
        "command.cache.clear" => Illuminate\Cache\Console\ClearCommand {#740
          #name: "cache:clear"
          #description: "Flush the application cache"
          #cache: Illuminate\Cache\CacheManager {#218}
          #files: Illuminate\Filesystem\Filesystem {#140}
          #laravel: Illuminate\Foundation\Application {#2}
          #input: null
          #output: null
          #signature: null
          #hidden: false
          #verbosity: 32
          #verbosityMap: array:5 [ …5]
          -application: Illuminate\Console\Application {#642 …18}
          -processTitle: null
          -aliases: []
          -definition: Symfony\Component\Console\Input\InputDefinition {#741 …6}
          -help: null
          -ignoreValidationErrors: false
          -applicationDefinitionMerged: false
          -applicationDefinitionMergedWithArgs: false
          -code: null
          -synopsis: []
          -usages: []
          -helperSet: Symfony\Component\Console\Helper\HelperSet {#658 …2}
          -name: "cache:clear"
          -hidden: false
          -description: "Flush the application cache"
        }
        "command.cache.forget" => Illuminate\Cache\Console\ForgetCommand {#744
          #signature: "cache:forget {key : The key to remove} {store? : The store to remove the key from}"
          #description: "Remove an item from the cache"
          #cache: Illuminate\Cache\CacheManager {#218}
          #laravel: Illuminate\Foundation\Application {#2}
          #input: null
          #output: null
          #name: "cache:forget"
          #hidden: false
          #verbosity: 32
          #verbosityMap: array:5 [ …5]
          -application: Illuminate\Console\Application {#642 …18}
          -processTitle: null
          -aliases: []
          -definition: Symfony\Component\Console\Input\InputDefinition {#747 …6}
          -help: null
          -ignoreValidationErrors: false
          -applicationDefinitionMerged: false
          -applicationDefinitionMergedWithArgs: false
          -code: null
          -synopsis: []
          -usages: []
          -helperSet: Symfony\Component\Console\Helper\HelperSet {#658 …2}
          -name: "cache:forget"
          -hidden: false
          -description: "Remove an item from the cache"
        }
        "command.clear-compiled" => Illuminate\Foundation\Console\ClearCompiledCommand {#748
          #name: "clear-compiled"
          #description: "Remove the compiled class file"
          #laravel: Illuminate\Foundation\Application {#2}
          #input: null
          #output: null
          #signature: null
          #hidden: false
          #verbosity: 32
          #verbosityMap: array:5 [ …5]
          -application: Illuminate\Console\Application {#642 …18}
          -processTitle: null
          -aliases: []
          -definition: Symfony\Component\Console\Input\InputDefinition {#749 …6}
          -help: null
          -ignoreValidationErrors: false
          -applicationDefinitionMerged: false
          -applicationDefinitionMergedWithArgs: false
          -code: null
          -synopsis: []
          -usages: []
          -helperSet: Symfony\Component\Console\Helper\HelperSet {#658 …2}
          -name: "clear-compiled"
          -hidden: false
          -description: "Remove the compiled class file"
        }
        "command.auth.resets.clear" => Illuminate\Auth\Console\ClearResetsCommand {#750
          #signature: "auth:clear-resets {name? : The name of the password broker}"
          #description: "Flush expired password reset tokens"
          #laravel: Illuminate\Foundation\Application {#2}
          #input: null
          #output: null
          #name: "auth:clear-resets"
          #hidden: false
          #verbosity: 32
          #verbosityMap: array:5 [ …5]
          -application: Illuminate\Console\Application {#642 …18}
          -processTitle: null
          -aliases: []
          -definition: Symfony\Component\Console\Input\InputDefinition {#752 …6}
          -help: null
          -ignoreValidationErrors: false
          -applicationDefinitionMerged: false
          -applicationDefinitionMergedWithArgs: false
          -code: null
          -synopsis: []
          -usages: []
          -helperSet: Symfony\Component\Console\Helper\HelperSet {#658 …2}
          -name: "auth:clear-resets"
          -hidden: false
          -description: "Flush expired password reset tokens"
        }
        "command.config.cache" => Illuminate\Foundation\Console\ConfigCacheCommand {#753
          #name: "config:cache"
          #description: "Create a cache file for faster configuration loading"
          #files: Illuminate\Filesystem\Filesystem {#140}
          #laravel: Illuminate\Foundation\Application {#2}
          #input: null
          #output: null
          #signature: null
          #hidden: false
          #verbosity: 32
          #verbosityMap: array:5 [ …5]
          -application: Illuminate\Console\Application {#642 …18}
          -processTitle: null
          -aliases: []
          -definition: Symfony\Component\Console\Input\InputDefinition {#754 …6}
          -help: null
          -ignoreValidationErrors: false
          -applicationDefinitionMerged: false
          -applicationDefinitionMergedWithArgs: false
          -code: null
          -synopsis: []
          -usages: []
          -helperSet: Symfony\Component\Console\Helper\HelperSet {#658 …2}
          -name: "config:cache"
          -hidden: false
          -description: "Create a cache file for faster configuration loading"
        }
        "command.config.clear" => Illuminate\Foundation\Console\ConfigClearCommand {#755
          #name: "config:clear"
          #description: "Remove the configuration cache file"
          #files: Illuminate\Filesystem\Filesystem {#140}
          #laravel: Illuminate\Foundation\Application {#2}
          #input: null
          #output: null
          #signature: null
          #hidden: false
          #verbosity: 32
          #verbosityMap: array:5 [ …5]
          -application: Illuminate\Console\Application {#642 …18}
          -processTitle: null
          -aliases: []
          -definition: Symfony\Component\Console\Input\InputDefinition {#756 …6}
          -help: null
          -ignoreValidationErrors: false
          -applicationDefinitionMerged: false
          -applicationDefinitionMergedWithArgs: false
          -code: null
          -synopsis: []
          -usages: []
          -helperSet: Symfony\Component\Console\Helper\HelperSet {#658 …2}
          -name: "config:clear"
          -hidden: false
          -description: "Remove the configuration cache file"
        }
        "command.down" => Illuminate\Foundation\Console\DownCommand {#757
          #signature: """
            down {--message= : The message for the maintenance mode. }\n
                                             {--retry= : The number of seconds after which the request may be retried.}
            """
          #description: "Put the application into maintenance mode"
          #laravel: Illuminate\Foundation\Application {#2}
          #input: null
          #output: null
          #name: "down"
          #hidden: false
          #verbosity: 32
          #verbosityMap: array:5 [ …5]
          -application: Illuminate\Console\Application {#642 …18}
          -processTitle: null
          -aliases: []
          -definition: Symfony\Component\Console\Input\InputDefinition {#760 …6}
          -help: null
          -ignoreValidationErrors: false
          -applicationDefinitionMerged: false
          -applicationDefinitionMergedWithArgs: false
          -code: null
          -synopsis: []
          -usages: []
          -helperSet: Symfony\Component\Console\Helper\HelperSet {#658 …2}
          -name: "down"
          -hidden: false
          -description: "Put the application into maintenance mode"
        }
        "command.environment" => Illuminate\Foundation\Console\EnvironmentCommand {#761
          #name: "env"
          #description: "Display the current framework environment"
          #laravel: Illuminate\Foundation\Application {#2}
          #input: null
          #output: null
          #signature: null
          #hidden: false
          #verbosity: 32
          #verbosityMap: array:5 [ …5]
          -application: Illuminate\Console\Application {#642 …18}
          -processTitle: null
          -aliases: []
          -definition: Symfony\Component\Console\Input\InputDefinition {#762 …6}
          -help: null
          -ignoreValidationErrors: false
          -applicationDefinitionMerged: false
          -applicationDefinitionMergedWithArgs: false
          -code: null
          -synopsis: []
          -usages: []
          -helperSet: Symfony\Component\Console\Helper\HelperSet {#658 …2}
          -name: "env"
          -hidden: false
          -description: "Display the current framework environment"
        }
        "command.key.generate" => Illuminate\Foundation\Console\KeyGenerateCommand {#763
          #signature: """
            key:generate\n
                                {--show : Display the key instead of modifying files}\n
                                {--force : Force the operation to run when in production}
            """
          #description: "Set the application key"
          #laravel: Illuminate\Foundation\Application {#2}
          #input: null
          #output: null
          #name: "key:generate"
          #hidden: false
          #verbosity: 32
          #verbosityMap: array:5 [ …5]
          -application: Illuminate\Console\Application {#642 …18}
          -processTitle: null
          -aliases: []
          -definition: Symfony\Component\Console\Input\InputDefinition {#766 …6}
          -help: null
          -ignoreValidationErrors: false
          -applicationDefinitionMerged: false
          -applicationDefinitionMergedWithArgs: false
          -code: null
          -synopsis: []
          -usages: []
          -helperSet: Symfony\Component\Console\Helper\HelperSet {#658 …2}
          -name: "key:generate"
          -hidden: false
          -description: "Set the application key"
        }
        "command.migrate" => Illuminate\Database\Console\Migrations\MigrateCommand {#767
          #signature: """
            migrate {--database= : The database connection to use.}\n
                            {--force : Force the operation to run when in production.}\n
                            {--path= : The path to the migrations files to be executed.}\n
                            {--realpath : Indicate any provided migration file paths are pre-resolved absolute paths.}\n
                            {--pretend : Dump the SQL queries that would be run.}\n
                            {--seed : Indicates if the seed task should be re-run.}\n
                            {--step : Force the migrations to be run so they can be rolled back individually.}
            """
          #description: "Run the database migrations"
          #migrator: Illuminate\Database\Migrations\Migrator {#669}
          #laravel: Illuminate\Foundation\Application {#2}
          #input: null
          #output: null
          #name: "migrate"
          #hidden: false
          #verbosity: 32
          #verbosityMap: array:5 [ …5]
          -application: Illuminate\Console\Application {#642 …18}
          -processTitle: null
          -aliases: []
          -definition: Symfony\Component\Console\Input\InputDefinition {#775 …6}
          -help: null
          -ignoreValidationErrors: false
          -applicationDefinitionMerged: false
          -applicationDefinitionMergedWithArgs: false
          -code: null
          -synopsis: []
          -usages: []
          -helperSet: Symfony\Component\Console\Helper\HelperSet {#658 …2}
          -name: "migrate"
          -hidden: false
          -description: "Run the database migrations"
        }
        "command.migrate.fresh" => Illuminate\Database\Console\Migrations\FreshCommand {#776
          #name: "migrate:fresh"
          #description: "Drop all tables and re-run all migrations"
          #laravel: Illuminate\Foundation\Application {#2}
          #input: null
          #output: null
          #signature: null
          #hidden: false
          #verbosity: 32
          #verbosityMap: array:5 [ …5]
          -application: Illuminate\Console\Application {#642 …18}
          -processTitle: null
          -aliases: []
          -definition: Symfony\Component\Console\Input\InputDefinition {#777 …6}
          -help: null
          -ignoreValidationErrors: false
          -applicationDefinitionMerged: false
          -applicationDefinitionMergedWithArgs: false
          -code: null
          -synopsis: []
          -usages: []
          -helperSet: Symfony\Component\Console\Helper\HelperSet {#658 …2}
          -name: "migrate:fresh"
          -hidden: false
          -description: "Drop all tables and re-run all migrations"
        }
        "command.migrate.install" => Illuminate\Database\Console\Migrations\InstallCommand {#784
          #name: "migrate:install"
          #description: "Create the migration repository"
          #repository: Illuminate\Database\Migrations\DatabaseMigrationRepository {#668}
          #laravel: Illuminate\Foundation\Application {#2}
          #input: Symfony\Component\Console\Input\ArrayInput {#1077 …6}
          #output: Illuminate\Console\OutputStyle {#1070 …7}
          #signature: null
          #hidden: false
          #verbosity: 32
          #verbosityMap: array:5 [ …5]
          -application: Illuminate\Console\Application {#642 …18}
          -processTitle: null
          -aliases: []
          -definition: Symfony\Component\Console\Input\InputDefinition {#785 …6}
          -help: null
          -ignoreValidationErrors: false
          -applicationDefinitionMerged: true
          -applicationDefinitionMergedWithArgs: true
          -code: null
          -synopsis: array:2 [ …2]
          -usages: []
          -helperSet: Symfony\Component\Console\Helper\HelperSet {#658 …2}
          -name: "migrate:install"
          -hidden: false
          -description: "Create the migration repository"
        }
        "command.migrate.refresh" => Illuminate\Database\Console\Migrations\RefreshCommand {#787
          #name: "migrate:refresh"
          #description: "Reset and re-run all migrations"
          #laravel: Illuminate\Foundation\Application {#2}
          #input: null
          #output: null
          #signature: null
          #hidden: false
          #verbosity: 32
          #verbosityMap: array:5 [ …5]
          -application: Illuminate\Console\Application {#642 …18}
          -processTitle: null
          -aliases: []
          -definition: Symfony\Component\Console\Input\InputDefinition {#788 …6}
          -help: null
          -ignoreValidationErrors: false
          -applicationDefinitionMerged: false
          -applicationDefinitionMergedWithArgs: false
          -code: null
          -synopsis: []
          -usages: []
          -helperSet: Symfony\Component\Console\Helper\HelperSet {#658 …2}
          -name: "migrate:refresh"
          -hidden: false
          -description: "Reset and re-run all migrations"
        }
        "command.migrate.reset" => Illuminate\Database\Console\Migrations\ResetCommand {#796
          #name: "migrate:reset"
          #description: "Rollback all database migrations"
          #migrator: Illuminate\Database\Migrations\Migrator {#669}
          #laravel: Illuminate\Foundation\Application {#2}
          #input: null
          #output: null
          #signature: null
          #hidden: false
          #verbosity: 32
          #verbosityMap: array:5 [ …5]
          -application: Illuminate\Console\Application {#642 …18}
          -processTitle: null
          -aliases: []
          -definition: Symfony\Component\Console\Input\InputDefinition {#797 …6}
          -help: null
          -ignoreValidationErrors: false
          -applicationDefinitionMerged: false
          -applicationDefinitionMergedWithArgs: false
          -code: null
          -synopsis: []
          -usages: []
          -helperSet: Symfony\Component\Console\Helper\HelperSet {#658 …2}
          -name: "migrate:reset"
          -hidden: false
          -description: "Rollback all database migrations"
        }
        "command.migrate.rollback" => Illuminate\Database\Console\Migrations\RollbackCommand {#803
          #name: "migrate:rollback"
          #description: "Rollback the last database migration"
          #migrator: Illuminate\Database\Migrations\Migrator {#669}
          #laravel: Illuminate\Foundation\Application {#2}
          #input: null
          #output: null
          #signature: null
          #hidden: false
          #verbosity: 32
          #verbosityMap: array:5 [ …5]
          -application: Illuminate\Console\Application {#642 …18}
          -processTitle: null
          -aliases: []
          -definition: Symfony\Component\Console\Input\InputDefinition {#804 …6}
          -help: null
          -ignoreValidationErrors: false
          -applicationDefinitionMerged: false
          -applicationDefinitionMergedWithArgs: false
          -code: null
          -synopsis: []
          -usages: []
          -helperSet: Symfony\Component\Console\Helper\HelperSet {#658 …2}
          -name: "migrate:rollback"
          -hidden: false
          -description: "Rollback the last database migration"
        }
        "command.migrate.status" => Illuminate\Database\Console\Migrations\StatusCommand {#811
          #name: "migrate:status"
          #description: "Show the status of each migration"
          #migrator: Illuminate\Database\Migrations\Migrator {#669}
          #laravel: Illuminate\Foundation\Application {#2}
          #input: null
          #output: null
          #signature: null
          #hidden: false
          #verbosity: 32
          #verbosityMap: array:5 [ …5]
          -application: Illuminate\Console\Application {#642 …18}
          -processTitle: null
          -aliases: []
          -definition: Symfony\Component\Console\Input\InputDefinition {#812 …6}
          -help: null
          -ignoreValidationErrors: false
          -applicationDefinitionMerged: false
          -applicationDefinitionMergedWithArgs: false
          -code: null
          -synopsis: []
          -usages: []
          -helperSet: Symfony\Component\Console\Helper\HelperSet {#658 …2}
          -name: "migrate:status"
          -hidden: false
          -description: "Show the status of each migration"
        }
        "command.package.discover" => Illuminate\Foundation\Console\PackageDiscoverCommand {#816
          #signature: "package:discover"
          #description: "Rebuild the cached package manifest"
          #laravel: Illuminate\Foundation\Application {#2}
          #input: null
          #output: null
          #name: "package:discover"
          #hidden: false
          #verbosity: 32
          #verbosityMap: array:5 [ …5]
          -application: Illuminate\Console\Application {#642 …18}
          -processTitle: null
          -aliases: []
          -definition: Symfony\Component\Console\Input\InputDefinition {#817 …6}
          -help: null
          -ignoreValidationErrors: false
          -applicationDefinitionMerged: false
          -applicationDefinitionMergedWithArgs: false
          -code: null
          -synopsis: []
          -usages: []
          -helperSet: Symfony\Component\Console\Helper\HelperSet {#658 …2}
          -name: "package:discover"
          -hidden: false
          -description: "Rebuild the cached package manifest"
        }
        "command.preset" => Illuminate\Foundation\Console\PresetCommand {#818
          #signature: "preset { type : The preset type (none, bootstrap, vue, react) }"
          #description: "Swap the front-end scaffolding for the application"
          #laravel: Illuminate\Foundation\Application {#2}
          #input: null
          #output: null
          #name: "preset"
          #hidden: false
          #verbosity: 32
          #verbosityMap: array:5 [ …5]
          -application: Illuminate\Console\Application {#642 …18}
          -processTitle: null
          -aliases: []
          -definition: Symfony\Component\Console\Input\InputDefinition {#820 …6}
          -help: null
          -ignoreValidationErrors: false
          -applicationDefinitionMerged: false
          -applicationDefinitionMergedWithArgs: false
          -code: null
          -synopsis: []
          -usages: []
          -helperSet: Symfony\Component\Console\Helper\HelperSet {#658 …2}
          -name: "preset"
          -hidden: false
          -description: "Swap the front-end scaffolding for the application"
        }
        "command.queue.failed" => Illuminate\Queue\Console\ListFailedCommand {#821
          #name: "queue:failed"
          #description: "List all of the failed queue jobs"
          #headers: array:5 [ …5]
          #laravel: Illuminate\Foundation\Application {#2}
          #input: null
          #output: null
          #signature: null
          #hidden: false
          #verbosity: 32
          #verbosityMap: array:5 [ …5]
          -application: Illuminate\Console\Application {#642 …18}
          -processTitle: null
          -aliases: []
          -definition: Symfony\Component\Console\Input\InputDefinition {#822 …6}
          -help: null
          -ignoreValidationErrors: false
          -applicationDefinitionMerged: false
          -applicationDefinitionMergedWithArgs: false
          -code: null
          -synopsis: []
          -usages: []
          -helperSet: Symfony\Component\Console\Helper\HelperSet {#658 …2}
          -name: "queue:failed"
          -hidden: false
          -description: "List all of the failed queue jobs"
        }
        "command.queue.flush" => Illuminate\Queue\Console\FlushFailedCommand {#823
          #name: "queue:flush"
          #description: "Flush all of the failed queue jobs"
          #laravel: Illuminate\Foundation\Application {#2}
          #input: null
          #output: null
          #signature: null
          #hidden: false
          #verbosity: 32
          #verbosityMap: array:5 [ …5]
          -application: Illuminate\Console\Application {#642 …18}
          -processTitle: null
          -aliases: []
          -definition: Symfony\Component\Console\Input\InputDefinition {#824 …6}
          -help: null
          -ignoreValidationErrors: false
          -applicationDefinitionMerged: false
          -applicationDefinitionMergedWithArgs: false
          -code: null
          -synopsis: []
          -usages: []
          -helperSet: Symfony\Component\Console\Helper\HelperSet {#658 …2}
          -name: "queue:flush"
          -hidden: false
          -description: "Flush all of the failed queue jobs"
        }
        "command.queue.forget" => Illuminate\Queue\Console\ForgetFailedCommand {#825
          #signature: "queue:forget {id : The ID of the failed job.}"
          #description: "Delete a failed queue job"
          #laravel: Illuminate\Foundation\Application {#2}
          #input: null
          #output: null
          #name: "queue:forget"
          #hidden: false
          #verbosity: 32
          #verbosityMap: array:5 [ …5]
          -application: Illuminate\Console\Application {#642 …18}
          -processTitle: null
          -aliases: []
          -definition: Symfony\Component\Console\Input\InputDefinition {#827 …6}
          -help: null
          -ignoreValidationErrors: false
          -applicationDefinitionMerged: false
          -applicationDefinitionMergedWithArgs: false
          -code: null
          -synopsis: []
          -usages: []
          -helperSet: Symfony\Component\Console\Helper\HelperSet {#658 …2}
          -name: "queue:forget"
          -hidden: false
          -description: "Delete a failed queue job"
        }
        "queue.listener" => Illuminate\Queue\Listener {#829
          #commandPath: "/home/forge/clickmember.io"
          #environment: null
          #sleep: 3
          #maxTries: 0
          #workerCommand: "'/usr/bin/php7.2' 'artisan' queue:work %s --once --queue=%s --delay=%s --memory=%s --sleep=%s --tries=%s"
          #outputHandler: Closure {#839 …5}
        }
        "command.queue.listen" => Illuminate\Queue\Console\ListenCommand {#828
          #signature: """
            queue:listen\n
                                        {connection? : The name of connection}\n
                                        {--delay=0 : The number of seconds to delay failed jobs}\n
                                        {--force : Force the worker to run even in maintenance mode}\n
                                        {--memory=128 : The memory limit in megabytes}\n
                                        {--queue= : The queue to listen on}\n
                                        {--sleep=3 : Number of seconds to sleep when no job is available}\n
                                        {--timeout=60 : The number of seconds a child process can run}\n
                                        {--tries=0 : Number of times to attempt a job before logging it failed}
            """
          #description: "Listen to a given queue"
          #listener: Illuminate\Queue\Listener {#829}
          #laravel: Illuminate\Foundation\Application {#2}
          #input: null
          #output: null
          #name: "queue:listen"
          #hidden: false
          #verbosity: 32
          #verbosityMap: array:5 [ …5]
          -application: Illuminate\Console\Application {#642 …18}
          -processTitle: null
          -aliases: []
          -definition: Symfony\Component\Console\Input\InputDefinition {#838 …6}
          -help: null
          -ignoreValidationErrors: false
          -applicationDefinitionMerged: false
          -applicationDefinitionMergedWithArgs: false
          -code: null
          -synopsis: []
          -usages: []
          -helperSet: Symfony\Component\Console\Helper\HelperSet {#658 …2}
          -name: "queue:listen"
          -hidden: false
          -description: "Listen to a given queue"
        }
        "command.queue.restart" => Illuminate\Queue\Console\RestartCommand {#840
          #name: "queue:restart"
          #description: "Restart queue worker daemons after their current job"
          #laravel: Illuminate\Foundation\Application {#2}
          #input: null
          #output: null
          #signature: null
          #hidden: false
          #verbosity: 32
          #verbosityMap: array:5 [ …5]
          -application: Illuminate\Console\Application {#642 …18}
          -processTitle: null
          -aliases: []
          -definition: Symfony\Component\Console\Input\InputDefinition {#841 …6}
          -help: null
          -ignoreValidationErrors: false
          -applicationDefinitionMerged: false
          -applicationDefinitionMergedWithArgs: false
          -code: null
          -synopsis: []
          -usages: []
          -helperSet: Symfony\Component\Console\Helper\HelperSet {#658 …2}
          -name: "queue:restart"
          -hidden: false
          -description: "Restart queue worker daemons after their current job"
        }
        "command.queue.retry" => Illuminate\Queue\Console\RetryCommand {#842
          #signature: "queue:retry {id* : The ID of the failed job or "all" to retry all jobs.}"
          #description: "Retry a failed queue job"
          #laravel: Illuminate\Foundation\Application {#2}
          #input: null
          #output: null
          #name: "queue:retry"
          #hidden: false
          #verbosity: 32
          #verbosityMap: array:5 [ …5]
          -application: Illuminate\Console\Application {#642 …18}
          -processTitle: null
          -aliases: []
          -definition: Symfony\Component\Console\Input\InputDefinition {#844 …6}
          -help: null
          -ignoreValidationErrors: false
          -applicationDefinitionMerged: false
          -applicationDefinitionMergedWithArgs: false
          -code: null
          -synopsis: []
          -usages: []
           …4
        }
        "queue" => Illuminate\Queue\QueueManager {#847 …3}
        "queue.worker" => Illuminate\Queue\Worker {#846 …6}
        "command.queue.work" => Illuminate\Queue\Console\WorkCommand {#845 …25}
        "command.route.cache" => Illuminate\Foundation\Console\RouteCacheCommand {#865 …25}
        "command.route.clear" => Illuminate\Foundation\Console\RouteClearCommand {#867 …25}
        "command.route.list" => Illuminate\Foundation\Console\RouteListCommand {#869 …27}
        "command.seed" => Illuminate\Database\Console\Seeds\SeedCommand {#876 …25}
        "Illuminate\Console\Scheduling\ScheduleFinishCommand" => Illuminate\Console\Scheduling\ScheduleFinishCommand {#884 …25}
        "Illuminate\Console\Scheduling\ScheduleRunCommand" => Illuminate\Console\Scheduling\ScheduleRunCommand {#887 …27}
        "command.storage.link" => Illuminate\Foundation\Console\StorageLinkCommand {#881 …24}
        "command.up" => Illuminate\Foundation\Console\UpCommand {#883 …24}
        "command.view.cache" => Illuminate\Foundation\Console\ViewCacheCommand {#891 …24}
        "command.view.clear" => Illuminate\Foundation\Console\ViewClearCommand {#893 …25}
        "command.app.name" => Illuminate\Foundation\Console\AppNameCommand {#895 …27}
        "command.auth.make" => Illuminate\Auth\Console\AuthMakeCommand {#898 …25}
        "command.cache.table" => Illuminate\Cache\Console\CacheTableCommand {#902 …26}
        "command.channel.make" => Illuminate\Foundation\Console\ChannelMakeCommand {#904 …26}
        "command.console.make" => Illuminate\Foundation\Console\ConsoleMakeCommand {#907 …26}
        "command.controller.make" => Illuminate\Routing\Console\ControllerMakeCommand {#911 …26}
        "command.event.generate" => Illuminate\Foundation\Console\EventGenerateCommand {#918 …24}
        "command.event.make" => Illuminate\Foundation\Console\EventMakeCommand {#920 …26}
        "command.exception.make" => Illuminate\Foundation\Console\ExceptionMakeCommand {#923 …26}
        "command.factory.make" => Illuminate\Database\Console\Factories\FactoryMakeCommand {#928 …26}
        "command.job.make" => Illuminate\Foundation\Console\JobMakeCommand {#932 …26}
        "command.listener.make" => Illuminate\Foundation\Console\ListenerMakeCommand {#936 …26}
        "command.mail.make" => Illuminate\Foundation\Console\MailMakeCommand {#941 …26}
        "command.middleware.make" => Illuminate\Routing\Console\MiddlewareMakeCommand {#946 …26}
        "migration.creator" => Illuminate\Database\Migrations\MigrationCreator {#949 …2}
        "command.migrate.make" => Illuminate\Database\Console\Migrations\MigrateMakeCommand {#950 …26}
        "command.model.make" => Illuminate\Foundation\Console\ModelMakeCommand {#957 …26}
        "command.notification.make" => Illuminate\Foundation\Console\NotificationMakeCommand {#967 …26}
        "command.notification.table" => Illuminate\Notifications\Console\NotificationTableCommand {#972 …26}
        "command.policy.make" => Illuminate\Foundation\Console\PolicyMakeCommand {#974 …26}
        "command.provider.make" => Illuminate\Foundation\Console\ProviderMakeCommand {#978 …26}
        "command.queue.failed-table" => Illuminate\Queue\Console\FailedTableCommand {#981 …26}
        "command.queue.table" => Illuminate\Queue\Console\TableCommand {#983 …26}
        "command.request.make" => Illuminate\Foundation\Console\RequestMakeCommand {#985 …26}
        "command.resource.make" => Illuminate\Foundation\Console\ResourceMakeCommand {#988 …26}
        "command.rule.make" => Illuminate\Foundation\Console\RuleMakeCommand {#992 …26}
        "command.seeder.make" => Illuminate\Database\Console\Seeds\SeederMakeCommand {#995 …27}
        "command.session.table" => Illuminate\Session\Console\SessionTableCommand {#998 …26}
        "command.serve" => Illuminate\Foundation\Console\ServeCommand {#1000 …24}
        "command.test.make" => Illuminate\Foundation\Console\TestMakeCommand {#1004 …26}
        "command.vendor.publish" => Illuminate\Foundation\Console\VendorPublishCommand {#1008 …27}
        "command.tinker" => Laravel\Tinker\Console\TinkerCommand {#1014 …25}
        "Hyn\Tenancy\Contracts\Repositories\CustomerRepository" => Hyn\Tenancy\Repositories\CustomerRepository {#1042 …1}
      ]
      #aliases: array:77 [
        "Illuminate\Foundation\Application" => "app"
        "Illuminate\Contracts\Container\Container" => "app"
        "Illuminate\Contracts\Foundation\Application" => "app"
        "Psr\Container\ContainerInterface" => "app"
        "Illuminate\Auth\AuthManager" => "auth"
        "Illuminate\Contracts\Auth\Factory" => "auth"
        "Illuminate\Contracts\Auth\Guard" => "auth.driver"
        "Illuminate\View\Compilers\BladeCompiler" => "blade.compiler"
        "Illuminate\Cache\CacheManager" => "cache"
        "Illuminate\Contracts\Cache\Factory" => "cache"
        "Illuminate\Cache\Repository" => "cache.store"
        "Illuminate\Contracts\Cache\Repository" => "cache.store"
        "Illuminate\Config\Repository" => "config"
        "Illuminate\Contracts\Config\Repository" => "config"
        "Illuminate\Cookie\CookieJar" => "cookie"
        "Illuminate\Contracts\Cookie\Factory" => "cookie"
        "Illuminate\Contracts\Cookie\QueueingFactory" => "cookie"
        "Illuminate\Encryption\Encrypter" => "encrypter"
        "Illuminate\Contracts\Encryption\Encrypter" => "encrypter"
        "Illuminate\Database\DatabaseManager" => "db"
        "Illuminate\Database\Connection" => "db.connection"
        "Illuminate\Database\ConnectionInterface" => "db.connection"
        "Illuminate\Events\Dispatcher" => "events"
        "Illuminate\Contracts\Events\Dispatcher" => "events"
        "Illuminate\Filesystem\Filesystem" => "files"
        "Illuminate\Filesystem\FilesystemManager" => "filesystem"
        "Illuminate\Contracts\Filesystem\Factory" => "filesystem"
        "Illuminate\Contracts\Filesystem\Filesystem" => "filesystem.disk"
        "Illuminate\Contracts\Filesystem\Cloud" => "filesystem.cloud"
        "Illuminate\Hashing\HashManager" => "hash"
        "Illuminate\Contracts\Hashing\Hasher" => "hash.driver"
        "Illuminate\Translation\Translator" => "translator"
        "Illuminate\Contracts\Translation\Translator" => "translator"
        "Illuminate\Log\LogManager" => "log"
        "Psr\Log\LoggerInterface" => "log"
        "Illuminate\Mail\Mailer" => "mailer"
        "Illuminate\Contracts\Mail\Mailer" => "mailer"
        "Illuminate\Contracts\Mail\MailQueue" => "mailer"
        "Illuminate\Auth\Passwords\PasswordBrokerManager" => "auth.password"
        "Illuminate\Contracts\Auth\PasswordBrokerFactory" => "auth.password"
        "Illuminate\Auth\Passwords\PasswordBroker" => "auth.password.broker"
        "Illuminate\Contracts\Auth\PasswordBroker" => "auth.password.broker"
        "Illuminate\Queue\QueueManager" => "queue"
        "Illuminate\Contracts\Queue\Factory" => "queue"
        "Illuminate\Contracts\Queue\Monitor" => "queue"
        "Illuminate\Contracts\Queue\Queue" => "queue.connection"
        "Illuminate\Queue\Failed\FailedJobProviderInterface" => "queue.failer"
        "Illuminate\Routing\Redirector" => "redirect"
        "Illuminate\Redis\RedisManager" => "redis"
        "Illuminate\Contracts\Redis\Factory" => "redis"
        "Illuminate\Http\Request" => "request"
        "Symfony\Component\HttpFoundation\Request" => "request"
        "Illuminate\Routing\Router" => "router"
        "Illuminate\Contracts\Routing\Registrar" => "router"
        "Illuminate\Contracts\Routing\BindingRegistrar" => "router"
        "Illuminate\Session\SessionManager" => "session"
        "Illuminate\Session\Store" => "session.store"
        "Illuminate\Contracts\Session\Session" => "session.store"
        "Illuminate\Routing\UrlGenerator" => "url"
        "Illuminate\Contracts\Routing\UrlGenerator" => "url"
        "Illuminate\Validation\Factory" => "validator"
        "Illuminate\Contracts\Validation\Factory" => "validator"
        "Illuminate\View\Factory" => "view"
        "Illuminate\Contracts\View\Factory" => "view"
        "Illuminate\Contracts\Notifications\Dispatcher" => "Illuminate\Notifications\ChannelManager"
        "Illuminate\Contracts\Notifications\Factory" => "Illuminate\Notifications\ChannelManager"
        "DebugBar\DataFormatter\DataFormatterInterface" => "DebugBar\DataFormatter\DataFormatter"
        "debugbar" => "Barryvdh\Debugbar\LaravelDebugbar"
        "Cartalyst\Stripe\Stripe" => "stripe"
        "Cartalyst\Stripe\Config" => "stripe.config"
        "Cartalyst\Stripe\ConfigInterface" => "stripe.config"
        "Zizaco\Entrust\Entrust" => "entrust"
        "tenancy-environment" => "Hyn\Tenancy\Environment"
        "Illuminate\Contracts\Broadcasting\Factory" => "Illuminate\Broadcasting\BroadcastManager"
        "Illuminate\Contracts\Bus\Dispatcher" => "Illuminate\Bus\Dispatcher"
        "Illuminate\Contracts\Bus\QueueingDispatcher" => "Illuminate\Bus\Dispatcher"
        "telegram" => "Telegram\Bot\Api"
      ]
      #abstractAliases: array:45 [
        "app" => array:4 [ …4]
        "auth" => array:2 [ …2]
        "auth.driver" => array:1 [ …1]
        "blade.compiler" => array:1 [ …1]
        "cache" => array:2 [ …2]
        "cache.store" => array:2 [ …2]
        "config" => array:2 [ …2]
        "cookie" => array:3 [ …3]
        "encrypter" => array:2 [ …2]
        "db" => array:1 [ …1]
        "db.connection" => array:2 [ …2]
        "events" => array:2 [ …2]
        "files" => array:1 [ …1]
        "filesystem" => array:2 [ …2]
        "filesystem.disk" => array:1 [ …1]
        "filesystem.cloud" => array:1 [ …1]
        "hash" => array:1 [ …1]
        "hash.driver" => array:1 [ …1]
        "translator" => array:2 [ …2]
        "log" => array:2 [ …2]
        "mailer" => array:3 [ …3]
        "auth.password" => array:2 [ …2]
        "auth.password.broker" => array:2 [ …2]
        "queue" => array:3 [ …3]
        "queue.connection" => array:1 [ …1]
        "queue.failer" => array:1 [ …1]
        "redirect" => array:1 [ …1]
        "redis" => array:2 [ …2]
        "request" => array:2 [ …2]
        "router" => array:3 [ …3]
        "session" => array:1 [ …1]
        "session.store" => array:2 [ …2]
        "url" => array:2 [ …2]
        "validator" => array:2 [ …2]
        "view" => array:2 [ …2]
        "Illuminate\Notifications\ChannelManager" => array:2 [ …2]
        "DebugBar\DataFormatter\DataFormatter" => array:1 [ …1]
        "Barryvdh\Debugbar\LaravelDebugbar" => array:1 [ …1]
        "stripe" => array:1 [ …1]
        "stripe.config" => array:2 [ …2]
        "entrust" => array:1 [ …1]
        "Hyn\Tenancy\Environment" => array:1 [ …1]
        "Illuminate\Broadcasting\BroadcastManager" => array:1 [ …1]
        "Illuminate\Bus\Dispatcher" => array:2 [ …2]
        "Telegram\Bot\Api" => array:1 [ …1]
      ]
      #extenders: []
      #tags: []
      #buildStack: []
      #with: []
      +contextual: array:2 [
        "Hyn\Tenancy\Website\Directory" => array:1 [ …1]
        "Hyn\Tenancy\Abstracts\AbstractTenantDirectoryListener" => array:1 [ …1]
      ]
      #reboundCallbacks: array:2 [
        "request" => array:2 [ …2]
        "routes" => array:1 [ …1]
      ]
      #globalResolvingCallbacks: []
      #globalAfterResolvingCallbacks: []
      #resolvingCallbacks: array:1 [
        "Illuminate\Foundation\Http\FormRequest" => array:1 [ …1]
      ]
      #afterResolvingCallbacks: array:2 [
        "migrator" => array:1 [ …1]
        "Illuminate\Contracts\Validation\ValidatesWhenResolved" => array:1 [ …1]
      ]
    }
    #installed: true
  }
  #local: Illuminate\Filesystem\Filesystem {#140}
}
null
asdullahsiddique commented 6 years ago

@luceos what kind on information would be useful to you?

luceos commented 6 years ago

Odd, the error indicates something is wrong with the driver. Are you sure the rest of your app is working perfectly, especially parts that use the blade renderer?

asdullahsiddique commented 6 years ago

@luceos I'll have a look and will let you know

asdullahsiddique commented 6 years ago

After more debugging I've found the error is being raised here:

vendor/laravel/framework/src/Illuminate/Database/DatabaseManager.php::115

/**
     * Make the database connection instance.
     *
     * @param  string  $name
     * @return \Illuminate\Database\Connection
     */
    protected function makeConnection($name)
    {
        $config = $this->configuration($name);

        // First we will check by the connection name to see if an extension has been
        // registered specifically for that connection. If it has we will call the
        // Closure and pass it the config allowing it to resolve the connection.
        if (isset($this->extensions[$name])) {
            return call_user_func($this->extensions[$name], $config, $name);
        }

        // Next we will check to see if an extension has been registered for a driver
        // and will call the Closure if so, which allows us to have a more generic
        // resolver for the drivers themselves which applies to all connections.
        if (isset($this->extensions[$driver = $config['driver']])) {
            return call_user_func($this->extensions[$driver], $config, $name);
        }

        return $this->factory->make($config, $name);
    }

So I dd the $config variable:

array:12 [
  "driver" => "mysql"
  "host" => "127.0.0.1"
  "port" => "3306"
  "database" => "db"
  "username" => "myusername"
  "password" => "mypassword"
  "unix_socket" => ""
  "charset" => "utf8mb4"
  "collation" => "utf8mb4_unicode_ci"
  "prefix" => ""
  "strict" => true
  "engine" => null
]

The driver actually is set but still it says Undefined index: driver, I will continue to investigate

asdullahsiddique commented 6 years ago

@luceos update, actually the $config is

array(0) {
}
luceos commented 6 years ago

It should copy most of the system connection details. Not sure why it is empty for you. Any specific changes you made eg using a listener on an event?

f0reclone commented 6 years ago

I've had the same error on 5.2 when I used the old app(Environment::class)->hostname($hostname); Method to switch to a tenant. Maybe you are switchingt the hostname manually at some point using a class which is no hostname or you have already 5.2 and use old methods. Do you have a value in .env for TENANCY_AUTO_HOSTNAME_IDENTIFICATION?

luceos commented 6 years ago

This is going to sound dumb, sorry:

A tenant no longer is a hostname, but a website. Switching a tenant as such has to be done using the app(Environment::class)->tenant() method with a valid Tenant, being a Website. Only this will now switch the environment and database connection and every other piece of logic.

Using Environment::hostname($hostname) to set a hostname no longer switches the tenant, you'll need to use Environment::tenant($website) for this now.

https://laravel-tenancy.com/docs/hyn/5.2/upgrade-from-5.1

edmundss commented 6 years ago

That did it. Thank you!