PHPackages                             yoosuf/calculator - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. yoosuf/calculator

AbandonedArchivedLibrary[Utility &amp; Helpers](/categories/utility)

yoosuf/calculator
=================

This is a demo package will do some calculations

1.0(9y ago)9541MITPHPPHP &gt;=5.6.4

Since May 4Pushed 9y ago1 watchersCompare

[ Source](https://github.com/yoosuf/calculator)[ Packagist](https://packagist.org/packages/yoosuf/calculator)[ Docs](https://github.com/yoosuf/calculator)[ RSS](/packages/yoosuf-calculator/feed)WikiDiscussions master Synced 2w ago

READMEChangelog (1)Dependencies (1)Versions (2)Used By (0)

Calculator
==========

[](#calculator)

### Usage or Instalation

[](#usage-or-instalation)

```
composer require yoosuf/calculator

```

How to create a Laravel Package
===============================

[](#how-to-create-a-laravel-package)

Getting pretty good at Laravel? Maybe you've created a few apps with this amazing framework and now you want to create some re-usable code or a package for Laravel. Where do you go to learn how to create a package? Right here of course!

In this tutorial, I'll take you through an example on how to create a Laravel package in just 7 steps. So, let's go ahead and dive into it.

#### 1. Create our folder for our new package.

[](#1-create-our-folder-for-our-new-package)

Create a fresh Laravel project;

```
laravel new core

```

After a new Laravel install we create a new folder called packages inside the root of our app.

> We are going to use this packages folder instead of the vendor folder because files inside of our vendor folder should only be managed by composer. Once we have published our package we can then include it in our vendor folder using composer. Next, we will create a folder inside of packages which will be our vendor or company name. So for my case I will use yoosuf.

Then inside of that folder we'll create another folder with the name of our package **calculator**.

Lastly we will add one last folder called `src` which is where the code for our pacakge will live.

So, our folder structure will be `packages/yoosuf/calculator/src`

Ok, and now that we have our folders ready, let's go ahead and name our package in our project by initializing a `composer.json` file.

#### 2. Name our package and initialize it with composer.

[](#2-name-our-package-and-initialize-it-with-composer)

Inside your command prompt navigate to the folder with your package name. In our case: `packages/yoosuf/calculator`, and run the following command:

```
composer init

```

This will initialize the current folder as a composer package and it will ask you a series of questions to setup your package. It will ask for the name, description, author, and a little more info about your package. After you have finished this onscreen setup you will have a new file in your package folder called `composer.json`.

> Don't worry if you don't know any of the questions through the initialization steps, just press enter to skip it and you can add or edit this later.

The `composer.json` file will look similar to the following:

```
{
    "name": "yoosuf/calculator",
    "description": "This demo package will do some calculations",
    "authors": [
        {
            "name": "YOUR NAME",
            "email": "YOUR EMAIL"
        }
    ],
    "minimum-stability": "dev",
    "require": {}
}

```

Great! Now that we have initialized our package we need to tell our main app `composer.json` file to load it.

#### 3. Load our package from our application composer.json

[](#3-load-our-package-from-our-application-composerjson)

With every Laravel application there is a main composer.json file in the root of every new app. This is your main application composer file and this is where we define all our app dependencies.

Let's go ahead and autoload our newly created package via the `PSR-4` autoload block:

```
"autoload": {
    "classmap": [
        "database"
    ],
    "psr-4": {
        "App\\": "app/",
        "Yoosuf\\Calculator\\": "packages/yoosuf/calculator/src"
    }
},

```

Then we need composer to run the autoloader and autoload our package. To do this we run the following command:

```
composer dump-autoload

```

and then to optimise the class loader use the following command (not allways needed)

```
php artisan optimize

```

#### 4. Add our package service provider.

[](#4-add-our-package-service-provider)

The service provider is the main entry inside of our package. This is where our package is loaded or booted. In the root of our app, let's create our ServiceProvider with an artisan command via the command line:

```
php artisan make:provider CalculatorServiceProvider

```

This will create a new file located at `app/Providers/CalculatorServiceProvider.php`

Let's move this file into our package folder so that way it lives at `packages/yoosuf/calculator/src/CalculatorServiceProvider.php`

Don't forget to change your namespace to be your `Vendor\Package_name`.

As you can see in our new Service Provider class we have 2 methods boot() and `register()`. The `boot()` method is used to boot any routes, event listeners, or any other functionality you want to add to your package. The `register()` method is used to bind any classes or functionality into the app container. We'll learn more about these in the next step.

Next, we need to add our new Service Provider in our config/app.php inside of the `providers[]` array:

```
'providers' => [

    /*
     * Laravel Framework Service Providers...
     */
    Illuminate\Auth\AuthServiceProvider::class,
    //.. Other providers
    yoosuf\Calculator\CalculatorServiceProvider::class,

],

```

Awesome! Our service provider is loaded and our package is ready to go! But we don't have any functionality yet... Let's tackle that by adding a routes file for our package.

#### 5. Add our package routes.php file

[](#5-add-our-package-routesphp-file)

Let's start by creating a new `routes.php` inside of our package src directory, and add the following code:

```
