{"id":19133615,"url":"https://github.com/hashload/injectorbr","last_synced_at":"2026-02-26T21:04:43.084Z","repository":{"id":152918461,"uuid":"614436781","full_name":"HashLoad/injectorbr","owner":"HashLoad","description":"APPInjector Brasil for Delphi (Isaque Pinheiro)","archived":false,"fork":false,"pushed_at":"2024-05-11T18:10:46.000Z","size":1110,"stargazers_count":17,"open_issues_count":0,"forks_count":3,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-12-10T06:21:21.069Z","etag":null,"topics":["delphi","dependency-injection","framework","interfaces","lazarus"],"latest_commit_sha":null,"homepage":"https://www.isaquepinheiro.com.br","language":"Pascal","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/HashLoad.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-03-15T15:25:09.000Z","updated_at":"2025-04-03T14:18:38.000Z","dependencies_parsed_at":null,"dependency_job_id":"eff6c896-92bf-4c64-b597-d7a12369191b","html_url":"https://github.com/HashLoad/injectorbr","commit_stats":{"total_commits":62,"total_committers":1,"mean_commits":62.0,"dds":0.0,"last_synced_commit":"8f2f8ec846218dea9e5a0f37cc55cf569548333e"},"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/HashLoad/injectorbr","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HashLoad%2Finjectorbr","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HashLoad%2Finjectorbr/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HashLoad%2Finjectorbr/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HashLoad%2Finjectorbr/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/HashLoad","download_url":"https://codeload.github.com/HashLoad/injectorbr/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HashLoad%2Finjectorbr/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29872674,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-26T21:01:59.805Z","status":"ssl_error","status_checked_at":"2026-02-26T21:00:42.555Z","response_time":89,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["delphi","dependency-injection","framework","interfaces","lazarus"],"created_at":"2024-11-09T06:23:07.609Z","updated_at":"2026-02-26T21:04:43.054Z","avatar_url":"https://github.com/HashLoad.png","language":"Pascal","readme":"# InjectorBr Framework for Delphi\n\nInjectorBr is a dependency injection framework for Delphi applications. Dependency injection is a software design pattern that allows decoupling components of an application, making them more modular and easier to maintain. With it, developers can easily create modular and flexible applications, avoiding tightly coupled dependencies and reducing code complexity. The framework also includes features for managing component lifecycle.\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://www.isaquepinheiro.com.br\"\u003e\n    \u003cimg src=\"https://www.isaquepinheiro.com.br/projetos/injectorbr-framework-for-delphi-opensource-17400.png\" width=\"200\" height=\"200\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n## 🏛 Delphi Versions\nEmbarcadero Delphi XE and higher.\n\n## ⚙️ Install\nInstallation using the [`boss install`](https://github.com/HashLoad/boss) command:\n```sh\nboss install \"https://github.com/HashLoad/injectorbr\"\n```\n\n## :hammer: Dependency injection features with InjectorBr\n\n:heavy_check_mark: `Recurso 1`: ```Injector.Register\u003cTClass\u003e``` to (Class)\n\n:heavy_check_mark: `Recurso 2`: ```Injector.RegisterLazy\u003cTClass\u003e``` to (Class for LazyLoad)\n\n:heavy_check_mark: `Recurso 3`: ```InjectorInterface\u003cIInterface\u003e``` to (Interface)\n\nIn addition to these three methods, the framework also offers the feature of creating a new instance of a class that is already registered. To do this, simply use the command:\n\n:heavy_check_mark: ```Injector\u003cTClass\u003e.New``` for (New Instance)\n\n## ⚡️ How to use\n\n#### Using with interfaces\n```Delphi\n{ /////////////////////// Registering ///////////////////////// }\n\nunit dfe.engine.acbr;\n\ninterface\n\nuses\n  SysUtils,\n  dfe.engine.interfaces;\n\ntype\n  TDFeEngineACBr = class(TInterfacedObject, IDFeEngine)\n  public\n    class function New: IDFeEngine;\n    procedure Execute;\n  end;\n\nimplementation\n\n{ TDFeEngineACBr }\n\nprocedure TDFeEngineACBr.Execute;\nbegin\n  raise Exception.Create('DFe Engine ACBr');\nend;\n\nclass function TDFeEngineACBr.New: IDFeEngine;\nbegin\n  Result := Self.Create;\nend;\n\ninitialization\n  InjectorBr.RegisterInterface\u003cIDFeEngine, TDFeEngineACBr\u003e;\n\nend.\n\n{ /////////////////////// Recovering ///////////////////////// }\n\nunit global.controller;\n\ninterface\n\nuses\n  DB,\n  Rtti,\n  Classes,\n  SysUtils,\n  Controls,\n  global.controller.interfaces,\n  dfe.engine.interfaces;\n\ntype\n  TGlobalController = class(TInterfacedObject, IGlobalController)\n  private\n    FDFeEngine: IDFeEngine;\n  public\n    constructor Create;\n    procedure DFeExecute;\n  end;\n\nimplementation\n\nuses\n  app.injector;\n\n{ TGlobalController }\n\nconstructor TGlobalController.Create;\nbegin\n  inherited;\n  FDFeEngine := InjectorBr.GetInterface\u003cIDFeEngine\u003e;\nend;\n\nprocedure TGlobalController.DFeExecute;\nbegin\n  FDFeEngine.Execute;\nend;\n\nend.\n```\n#### Using with classes\n\n```Delphi\n{ /////////////////////// Registering ///////////////////////// }\n\nunit dfe.engine.acbr;\n\ninterface\n\nuses\n  SysUtils;\n\ntype\n  TDFeEngineACBr = class\n  public\n    procedure Execute;\n  end;\n\nimplementation\n\n{ TDFeEngineACBr }\n\nprocedure TDFeEngineACBr.Execute;\nbegin\n  raise Exception.Create('DFe Engine ACBr');\nend;\n\ninitialization\n  InjectorBr.RegisterSington\u003cTDFeEngineACBr\u003e;\n\nend.\n\n{ /////////////////////// Recovering ///////////////////////// }\n\nunit global.controller;\n\ninterface\n\nuses\n  DB,\n  Rtti,\n  Classes,\n  SysUtils,\n  Controls,\n  global.controller.interfaces,\n  dfe.engine.acbr;\n\ntype\n  TGlobalController = class(TInterfacedObject, IGlobalController)\n  private\n    FDFeEngine: TDFeEngineACBr;\n  public\n    constructor Create;\n    procedure DFeExecute;\n  end;\n\nimplementation\n\nuses\n  app.injector;\n\n{ TGlobalController }\n\nconstructor TGlobalController.Create;\nbegin\n  inherited;\n  FDFeEngine := InjectorBr.Get\u003cTDFeEngineACBr\u003e;\nend;\n\nprocedure TGlobalController.DFeExecute;\nbegin\n  FDFeEngine.Execute;\nend;\n\nend.\n```\n\n#### Using with class and lazyLoad\n\n```Delphi\n{ /////////////////////// Registering ///////////////////////// }\n\nunit dfe.engine.acbr;\n\ninterface\n\nuses\n  SysUtils;\n\ntype\n  TDFeEngineACBr = class\n  public\n    procedure Execute;\n  end;\n\nimplementation\n\n{ TDFeEngineACBr }\n\nprocedure TDFeEngineACBr.Execute;\nbegin\n  raise Exception.Create('DFe Engine ACBr');\nend;\n\ninitialization\n  InjectorBr.RegisterLazy\u003cTDFeEngineACBr\u003e;\n\nend.\n\n{ /////////////////////// Recovering ///////////////////////// }\n\nunit global.controller;\n\ninterface\n\nuses\n  DB,\n  Rtti,\n  Classes,\n  SysUtils,\n  Controls,\n  global.controller.interfaces,\n  dfe.engine.acbr;\n\ntype\n  TGlobalController = class(TInterfacedObject, IGlobalController)\n  private\n    FDFeEngine: TDFeEngineACBr;\n  public\n    constructor Create;\n    procedure DFeExecute;\n  end;\n\nimplementation\n\nuses\n  app.injector;\n\n{ TGlobalController }\n\nconstructor TGlobalController.Create;\nbegin\n  inherited;\n  FDFeEngine := InjectorBr.Get\u003cTDFeEngineACBr\u003e;\nend;\n\nprocedure TGlobalController.DFeExecute;\nbegin\n  FDFeEngine.Execute;\nend;\n\nend.\n```\n\n## ✍️ License\n[![License](https://img.shields.io/badge/Licence-LGPL--3.0-blue.svg)](https://opensource.org/licenses/LGPL-3.0)\n\n## ⛏️ Contribution\n\nOur team would love to receive contributions to this open-source project. If you have any ideas or bug fixes, feel free to open an issue or submit a pull request.\n\n[![Issues](https://img.shields.io/badge/Issues-channel-orange)](https://github.com/HashLoad/ormbr/issues)\n\nTo submit a pull request, follow these steps:\n\n1. Fork the project.\n2. Create a new branch. (`git checkout -b my-new-feature`)\n3. Make your changes and commit. (`git commit -am 'Adding new functionality'`)\n4. Push the branch. (`git push origin my-new-feature`)\n5. Open a pull request.\n\n## 📬 Contact\n[![Telegram](https://img.shields.io/badge/Telegram-channel-blue)](https://t.me/hashload)\n\n## 💲 Donation\n[![Doação](https://img.shields.io/badge/PagSeguro-contribua-green)](https://pag.ae/bglQrWD)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhashload%2Finjectorbr","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhashload%2Finjectorbr","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhashload%2Finjectorbr/lists"}