pdd
Version:
PDD Framework
81 lines (80 loc) • 2.23 kB
TypeScript
import type { ClassConstructor } from '../type/utils';
/**
* Class Container
* @description zh-CN 容器类,所有需要注入到核心容器的方法或者类都源于此
* @author SunnyXu <xy@ztes.com>
*/
export declare class Container {
protected static instance: Container | null;
protected instances: Map<any, any>;
protected bindings: Record<string, any>;
protected aliases: Record<string, any>;
/**
* method bind
* @description zh-CN 绑定方法
* @param abstract
* @param concrete
*/
bind(abstract: string | string[], concrete: any): void;
/**
* make 创建类的实例/获取对象 create instance/object
* @param abstract
* @param params
* @param shared
*/
make(abstract: string, params?: Record<string, any> | [], shared?: boolean): any;
/**
* makeClass 创建类
* @param name
* @param Executor
* @param params
* @param shared
*/
protected makeClass(name: string, Executor: ClassConstructor, params: unknown, shared?: boolean): any;
/**
* makeFunc 创建函数
* @param name
* @param executor
* @param params
* @param shared
* @protected
*/
protected makeFunc(name: string, executor: CallableFunction, params: unknown, shared?: boolean): any;
/**
* has as existence
* 是否存在标识 existence 的别名
* @param {String} name
*/
has(name: string): boolean;
/**
* existence 存在标识
* @param {String} name
*/
existence(name: string): boolean;
/**
* getAlias 获取别名
* @param abstract
*/
getAlias(abstract: string): any;
/**
* get 获取实例
* @param abstract
*/
get(abstract: string): any;
/**
* singleton 单例
* @param abstract
* @param concrete
*/
singleton(abstract: string, concrete: any): void;
/**
* getInstance 获取实例
*
*/
static getInstance<Instance extends Container>(): Container | Instance;
/**
* proxyInstance 代理实例
*
*/
protected proxyInstance(): this;
}