iidestiny/dependency-injection

Enable your methods to use dependency injection

1.1 2022-06-27 17:13 UTC

This package is auto-updated.

Last update: 2024-04-27 21:18:05 UTC


README

68747470733a2f2f7472617669732d63692e6f72672f696944657374696e792f646570656e64656e63792d696e6a656374696f6e2e7376673f6272616e63683d6d6173746572 68747470733a2f2f706f7365722e707567782e6f72672f696964657374696e792f646570656e64656e63792d696e6a656374696f6e2f762f737461626c65 68747470733a2f2f706f7365722e707567782e6f72672f696964657374696e792f646570656e64656e63792d696e6a656374696f6e2f646f776e6c6f616473 68747470733a2f2f706f7365722e707567782e6f72672f696964657374696e792f646570656e64656e63792d696e6a656374696f6e2f762f756e737461626c65 68747470733a2f2f6261646765732e66726170736f66742e636f6d2f6f732f76312f6f70656e2d736f757263652e7376673f763d313033 68747470733a2f2f706f7365722e707567782e6f72672f696964657374696e792f646570656e64656e63792d696e6a656374696f6e2f6c6963656e7365

Let your custom class methods also enjoy dependency injection.

感谢关注「GitHub 热门」公众号,带你了解技术圈内热门新鲜事!
68747470733a2f2f63646e2e6c6561726e6b752e636f6d2f75706c6f6164732f696d616765732f3230323031312f30392f343433302f717345437739437467762e6a7067216c61726765

Doc

Requirement

  • PHP >= 7.0

install

composer require iidestiny/dependency-injection -vvv

Usage

Use helper methods

    // register class
    di_register(Tools::class)
    
    // Call a method in a class
    di_register(Tools::class)->generate($param, $param, $param)
    
    // more
    di_register(Tools::class)->foo($bar)

example

Sometimes we need dependency injection when calling our own defined methods. See the example below.

<?php

namespace App\Services;


use App\Tools;
use App\User;
use Cache;
use Petstore30\Order;

class OrderService
{
    /**
     * place order
     *
     * @param User  $user
     * @param       $goods
     * @param       $address
     * @param Cache $cache
     * @param Tools $tools
     */
    public function placeOrder(User $user, $goods, $address, Cache $cache, Tools $tools)
    {
        // code something
    }

    /**
     * pay
     *
     * @param Order $order
     * @param Cache $cache
     * @param Tools $tools
     */
    public function pay(Order $order, Cache $cache, Tools $tools)
    {
        // code something
    }

}

Then we easily use the method of dependency injection

    /**
     * store
     */
    public function store()
    {
        di_register(OrderService::class)->placeOrder($user, $goods, $address);
    }

or

    /**
     * store
     */
    public function store()
    {
        $orderService = di_register(OrderService::class);
        
        $orderService->placeOrder($user, $goods, $address);
        $orderService->pay($order);
    }

License

MIT