package
Version:
v0.6.1
Opens a new window with list of versions in this module.
Published: Mar 10, 2023
License: MIT
Opens a new window with license information.
Imports: 2
Opens a new window with list of imports.
Imported by: 1
Opens a new window with list of known importers.
README
¶
foundation

——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
¶
SetInstance sets the application instance.
Application is the main application object.
App returns the application instance.
GetInstance returns the application instance.
Instance returns the application instance.
NewApplication creates a new application instance
Version returns the current version of the application.
Source Files
¶
Click to show internal directories.
Click to hide internal directories.