2017 © Pedro Peláez
 

library resolver

image

laravel-commode/resolver

  • Monday, June 15, 2015
  • by dubpub
  • Repository
  • 1 Watchers
  • 0 Stars
  • 4 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 2 Versions
  • 0 % Grown

The README.md

Commode: Resolver

Build Status Code Climate Coverage Status, (*1)

laravel-commode/resolver is a [method|closure] resolver class/service for laravel-commode package environment or for laravel 5.1 standalone., (*2)

Contents

Installing

You can install laravel-commode/resolver using composer:, (*3)

"require": {
    "laravel-commode/resolver": "dev-master"
}

To enable package you need to register LaravelCommode\Resolver\ResolverServiceProvider service provider in your app.php configuration file., (*4)

<?php
    // apppath/config/app.php
    return [
        // config code...

        'providers' => [
            // your app providers... ,
            LaravelCommode\Resolver\ResolverServiceProvider::class

        ]
    ];

Usage

Resolver is a small, but useful class for building something flexible or for something that requires resolving. It is available through CommodeResolver facade, or - if you are a facade hater you can find it registered in IoC container through alias "laravel-commode.resolver" or can initialize new instance as new \LaravelCommode\Resolver\Resolver($laravelApplicationInstance)., (*5)

For example, let's say that you have some structure for your security module like ISecurityUser and it's bound to your configured eloquent auth model., (*6)

<?php namespace App\System\Security\Abstractions;

    interface ISecurityUser
    {
        public function hasPermission($permission);
        public function hasPermissions(array $permissions);
    }


, (*7)

<?php namespace App\DAL\Concrete\Eloquent\Models;

    use Illuminate\Database\Eloquent\Model;

    class Account extends Model implements ISecurityUser
    {
        /* your eloquent model code */
    }


, (*8)

<?php namespace App\ServiceProviders;

    use LaravelCommode\SilentService\SilentService;
    use MyApp\System\Security\Abstractions\ISecurityUser;

    class ACLServiceProvider extends SilentService
    {
        public function launching() {}

        public function registering()
        {
            $this->app->bind(ISecurityUser::class, function ($app)
            {
                return app('auth')->user(); // note that returned value might be null
            });
        }
    }

CommodeResolver can resolve closures and class methods or turn them into resolvable closures. Here's an example of using it., (*9)

Resolver and closures:

<?php
    use App\System\Security\Abstractions\ISecurityUser;

    $closureThatNeedsToBeResolved = function ($knownParameter1, $knownParameterN, ISecurityUser $needsToBeResolved = null)
    {
        return func_get_args();
    };

    $resolver = new \LaravelCommode\Resolver\Resolver(); // or app('laravel-commode.resolver');

    $knownParameter1 = 'Known';
    $knownParameter2 = 'Parameter';

    /**
    *   Resolving closure and running it
    **/
    $result = $resolver->closure($closureThatNeedsToBeResolved, [$knownParameter1, $knownParameter2]);
    $resultClosure = $resolver->makeClosure($closureThatNeedsToBeResolved);

    var_dump(
        $result, $resultClosure($knownParameter1, $knownParameter2),
        $result === $resultClosure($knownParameter1, $knownParameter2)
    );

    // outputs
    //  array (size=3)
    //      0 => string 'Known' (length=5)
    //      1 => string 'Parameter' (length=9)
    //      2 =>  object(MyApp\DAL\Concrete\Eloquent\Models\Account)
    //  array (size=3)
    //      0 => string 'Known' (length=5)
    //      1 => string 'Parameter' (length=9)
    //      2 =>  object(MyApp\DAL\Concrete\Eloquent\Models\Account)
    //  boolean true

Resolver and class methods:

<?php
    use App\System\Security\Abstractions\ISecurityUser;

    class SomeClass
    {
        public function methodThatNeedsToBeResolved($knownParameter1, $knownParameterN, ISecurityUser $needsToBeResolved = null)
        {
            return func_get_args();
        }
    }

    $resolver = new \LaravelCommode\Resolver\Resolver(); // or app('laravel-commode.resolver');
    $someClass = new SomeClass();

    $knownParameter1 = 'Known';
    $knownParameter2 = 'Parameter';

    $result = $resolver->method($someClass, 'methodThatNeedsToBeResolved', [$knownParameter1, $knownParameter2]);
                //  or ->method(SomeClass::class, ..., ...) for calling static method or resolving class through
                //                                          app IOC

    $resultClosure = $resolver->methodToClosure($someClass, 'methodThatNeedsToBeResolved');
                //  or ->method(SomeClass::class, ..., ...) for calling static method or resolving class through
                //                                          app IOC

    var_dump(
        $result, $resultClosure($knownParameter1, $knownParameter2),
        $result === $resultClosure($knownParameter1, $knownParameter2)
    );

    // outputs
    //  array (size=3)
    //      0 => string 'Known' (length=5)
    //      1 => string 'Parameter' (length=9)
    //      2 =>  object(MyApp\DAL\Concrete\Eloquent\Models\Account)
    //  array (size=3)
    //      0 => string 'Known' (length=5)
    //      1 => string 'Parameter' (length=9)
    //      2 =>  object(MyApp\DAL\Concrete\Eloquent\Models\Account)
    //  boolean true

Alias references table

Class Service alias Facade
LaravelCommode\Resolver\Resolver laravel-commode.resolver CommodeResolver

The Versions

15/06 2015

dev-master

9999999-dev

  Sources   Download

The Requires

 

The Development Requires

by Avatar dubpub

15/06 2015

0.1

0.1.0.0

  Sources   Download

The Requires

 

The Development Requires

by Avatar dubpub