foundation

package
v0.6.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 10, 2023 License: MIT Imports: 2 Imported by: 1

README

foundation

Go Report Card tests GoDoc MIT license

——The idea came from Laravel

Installation

go get github.com/go-packagist/foundation

Usage

  • example/foundation/providers

    package providers
    
    import (
        "github.com/go-packagist/foundation"
        "time"
    )
    
    type memoryProvider struct {
        app *foundation.Application
    }
    
    var _ foundation.Provider = (*memoryProvider)(nil)
    
    func NewMemoryProvider(app *foundation.Application) foundation.Provider {
        return &memoryProvider{
            app: app,
        }
    }
    
    func (m *memoryProvider) Register() {
        m.app.Singleton("memory", func(app *foundation.Application) interface{} {
            return NewMemory(app)
        })
    }
    
    type memoryData struct {
        Key    string
        Value  string
        Expire time.Time
    }
    
    type Memory struct {
        app   *foundation.Application
        items map[string]memoryData
    }
    
    func NewMemory(app *foundation.Application) *Memory {
        m := &Memory{
            app:   app,
            items: make(map[string]memoryData),
        }
    
        go m.gc()
    
        return m
    }
    
    func (m *Memory) Put(key, value string, expire time.Duration) {
        m.items[key] = memoryData{
            Key:    key,
            Value:  value,
            Expire: time.Now().Add(expire),
        }
    }
    
    func (m *Memory) Get(key string) string {
        data, ok := m.items[key]
    
        if !ok {
            return ""
        }
    
        return data.Value
    }
    
    func (m *Memory) gc() {
        for {
            for key, data := range m.items {
                if time.Now().After(data.Expire) {
                    delete(m.items, key)
                }
            }
    
            time.Sleep(time.Second)
        }
    }
    
  • example/foundation/facades

    package facades
    
    import (
        "example/foundation/providers"
        "github.com/go-packagist/foundation"
    )
    
    func Memory() *providers.Memory {
        return foundation.App().Make("memory").(*providers.Memory)
    }
    
  • main.go

    package main
    
    import (
        "example/foundation/facades"
        "example/foundation/providers"
        "fmt"
        "github.com/go-packagist/foundation"
        "time"
    )
    
    func main() {
        foundation.NewApplication("./")
    
        foundation.App().Register(providers.NewMemoryProvider(foundation.App()))
    
        foundation.App().Make("memory").(*providers.Memory).Put("a", "111", time.Second*2)
        fmt.Println("put:" + foundation.App().Make("memory").(*providers.Memory).Get("a"))
    
        time.Sleep(time.Second * 3)
        fmt.Println("expire:" + facades.Memory().Get("a")) // using facades
    }
    

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func SetInstance

func SetInstance(app *Application)

SetInstance sets the application instance.

Types

type Application

type Application struct {
	*container.Container
	// contains filtered or unexported fields
}

Application is the main application object.

func App

func App() *Application

App returns the application instance.

func GetInstance

func GetInstance() *Application

GetInstance returns the application instance.

func Instance

func Instance() *Application

Instance returns the application instance.

func NewApplication

func NewApplication() *Application

NewApplication creates a new application instance

func (*Application) Boot added in v0.6.1

func (app *Application) Boot()

Boot the application.

func (*Application) Version

func (app *Application) Version() string

Version returns the current version of the application.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL