2017 © Pedro Peláez
 

library rad-prototype

Pierre PLAZANET <pierre@knplabs.com>

image

knplabs/rad-prototype

Pierre PLAZANET <pierre@knplabs.com>

  • Thursday, September 21, 2017
  • by Knplabs
  • Repository
  • 19 Watchers
  • 2 Stars
  • 4,092 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 1 Forks
  • 1 Open issues
  • 10 Versions
  • 0 % Grown

The README.md

DEPRECATED

Unfortunately we decided to not maintain this project anymore (see why). If you want to mark another package as a replacement for this one please send an email to hello@knplabs.com., (*1)

Rapid Application Development : Prototype

Automatically inject methods into objects, (*2)

Build Status Scrutinizer Code Quality Latest Stable Version Total Downloads Latest Unstable Version License, (*3)

Installation

composer require knplabs/rad-prototype ~2.0
class AppKernel
{
    function registerBundles()
    {
        $bundles = array(
            //...
            new Knp\Rad\Prototype\Bundle\PrototypeBundle(),
            //...
        );

        //...

        return $bundles;
    }
}

Usages

1. Method side

You can create injectable methods via dependency injections. You can apply the tag knp_rad_prototype.prototype_method. For example, if I want to expose the method getRepository form the @doctrine service, I just have to declare a new method:, (*4)

knp_rad_prototype.prototype.method.doctrine.get_repository:
    class: Knp\Rad\Prototype\Prototype\Method
    arguments:
       - @doctrine
       - getRepository
   tags:
       - { name: knp_rad_prototype.prototype_method, alias: getRepository, domain: doctrine }

The first argument should be a service or a classname (for static methods), the second argument should be a method name. In this case, the method will be @doctrine->getRepository()., (*5)

The alias tag option represent the method name inside the prototype, so in this case, I can call the method with $this->getRepository(). Finaly, the domain tag option represent the domain of this method, a prototype can recieve method of some domains., (*6)

2. Prototype side

2.1. Attach methods to a controller

Access to methods from a controller, (*7)

Your controller should implements the Knp\Rad\Prototype\Prototype. You can also use the basic implementation via the trait Knp\Rad\Prototype\Prototype\Controller, (*8)

namespace AppBundle\Controller;

use Knp\Rad\Prototype\Prototype;

class ProductController implements Prototype
{
    use Prototype\Controller;

    public function testAction($id) 
    {
        $product = $this->getRepository('AppBundle:Product')->find($id);

        $this->persist($product);
        $this->flush();

        // ...
    }
}

3. Web Debug Toolbar

When your controller implements the Knp\Rad\Prototype\Prototype interface, the following icon will appear into the Symfony web debug toobar., (*9)

, (*10)

And you can also access to every accessable methods from your prototypes from the Symfony profiler interface, (*11)

, (*12)

The Versions