ayup-creative/laravel-stub-maker

There is no license information available for the latest version (0.6.1) of this package.

Quickly and easily add the ability to output stubbed content from Artisan commands

Maintainers

Package info

github.com/Ayup-Creative/laravel-stub-maker

pkg:composer/ayup-creative/laravel-stub-maker

Statistics

Installs: 710

Dependents: 1

Suggesters: 0

Stars: 0

Open Issues: 0

0.6.1 2024-11-22 20:49 UTC

This package is auto-updated.

Last update: 2026-02-22 23:40:19 UTC


README

Overview

Laravel Stub Maker is a simple, powerful package for programmatically generating PHP class and interface stubs with an intuitive API.

Installation

composer require ayup-creative/laravel-stub-maker

Basic Usage

Creating a Stub

use Ayup\LaravelStubMaker\Concerns\MakesStubs;

$stub = $this->stub('MyClass')
            ->extends('\\App\\Examples\\ExampleClass');

Using $stub as a string from the above example would output the FQN of the class being created.

echo $stub;

// "App\MyClass"

Calling the output() method would return PHP that can then be written to a file.

echo $stub->output();

// <?php
// 
// namespace App;
// 
// use \App\Examples\ExampleClass;
// 
// class MyClass extends ExampleClass
// {}

Key Features

  • Automatic Namespace Extraction: The stub() method intelligently sets the namespace
  • String Casting: Convert stub to its Fully Qualified Name
  • Output Generation: Easily generate complete PHP file contents

Advanced Configuration

$stub = $this->stub('UserRepositoryInterface')
    ->interface()
    ->extends('\\App\\Contracts\\RepositoryInterface')
    ->output();

Key Methods

stub(): Create a new stub

interface(): Define an interface

extends(): Set parent class or interface

implements(): Add implemented interfaces

outputPath(): Set the file output location

constructor(): Define class constructor

writeOut(): Generate the PHP file

Adding A Constructor

When generating class objects, you can easily define a constructor and it arguments using the Constructor and Argument objects respectively.

The example below could be used to add a constructor, which defines a protected property type hinted to an Eloquent Model with a private scope.

use Ayup\LaravelStubMaker\Constructor;
use Ayup\LaravelStubMaker\Argument;

$stub->constructor(
        Constructor::make([
            Argument::make('model')->protected()->hint(\Illuminate\Database\Eloquent\Model::class)
        ])
    );

You can also define simple arguments by passing a simple string value as part of the $arguments argument.

License

This project is open-sourced software licensed under the MIT license.

Contributing

Contributions are welcome! Feel free to submit a Pull Request.

Contact

For support or inquiries, please open an issue on the GitHub repository.