Skip to content
haxe dependency Injection like pimple php and Syringe ruby
PHP Nemerle JavaScript Haxe
Find file
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
syringo
www
.tmbuild
Main.hx
Main.js
Main.n
README.markdown
Test.hx
build.hxml
index.html

README.markdown

Syringo

A dependeny injection for haxe inspired by pimple and syringe. Use lambda function for define dependency and annotations for inject it.

use annotation inject for define dependency

Getting Started

Define a class


class TestClassAnnotations {

  @inject("title")
  public var title:String;

  @inject("list")
  public var collection:Array<String>;

  @inject("person")
  public var user:Person;

  @inject("sum")
  public var sum:Float->Float->Float;

  @inject("sum10")
  public var sum10:Float->Float;

  public function new(container:syringo.Container) {
    syringo.Injector.injectByAnnotation(this,container);
  }

}

Define an object container

        container=new syringo.Container();
        container.setObject("title", "titolo");
        container.set("list",function(cont) {
          var list=new Array();
          list.push(cont.get("title"));
          list.push(cont.get("title"));
          list.push(cont.get("title"));
          return list;
        });  

        container.set("person",function(cont):Person {
          return {
            name:"Mario",
            surname:"Rossi"
          }
        });

        //define a function in container
        container.set("sum",function(cont) {
          return function (a,b) {
            return a+b;
          };
        });

        //define a function with closure
        container.set("sum10",function(cont) {
          var accumulator:Int=10;
          return function(a) {
            return accumulator+a;
          };
        });


And inject container

with annotation

  syringo.Injector.injectByAnnotation(this,container);

or by a list

  var object=new TestClassList();
      syringo.Injector.injectByList(object, container, [
        ['title','title'],
        ['collection','list'],
        ['user','person'],
        ['sum','sum'],
        ['sum10','sum10']
      ]);

see Test.hx for a full example tested on php,js and neko

Something went wrong with that request. Please try again.