stdlib

package
v0.4.1 Latest Latest
Warning

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

Go to latest
Published: Aug 29, 2026 License: MIT Imports: 15 Imported by: 0

Documentation

Overview

Package stdlib provides the forwarded "bring your own standard library" shims (the README's register_function mechanism). PHP's stdlib is not reimplemented in the VM; instead a curated set of Go functions is registered on a Runtime so transpiled PHP can call them by name. This set is sized to run the minitpl template engine (the T1 compatibility target).

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Register

func Register(rt *runner.Runtime, bindings ...func(*runner.Runtime))

Register installs the shims, PHP constants, every binding contributed by an imported binding package (see runner.RegisterBinding and imports.go), and any additional bindings passed by the caller. The filesystem shims come in that way too, rooted at the process working directory; use RegisterFS to bind them to another root.

func RegisterFS

func RegisterFS(rt *runner.Runtime, dir string)

RegisterFS installs filesystem IO shims rooted at dir. A path from PHP is treated as relative to dir and cannot climb out of it, mirroring how the upstream engine runs inside its project checkout. An absolute path is taken as the script wrote it.

Writes are held to the runtime's writable_paths when it configures any; see files.RegisterRoot.

The shims live in stdlib/files and Register already installs them, rooted at the process working directory; this rebinds them to dir.

The image functions in stdlib/gd read and write files too, so they are rebound to the same root here. A script that loads an image by the path it would pass to file_get_contents has to reach the same file.

Types

type Exception added in v0.0.3

type Exception struct {
	Message string `json:"message"`
	Code    int    `json:"code"`
	Class   string `json:"class"`
}

Exception holds an error code and error message.

Every PHP throwable class is this one Go type. Class records the name the script constructed, so get_class() can answer it and a catch clause can filter on it; no two of them stand in a subclass relation, because phpscript has no inheritance. See docs/design.md.

func NewException added in v0.0.3

func NewException(message string, code int) (*Exception, error)

NewException will return a new allocation for an exception. A nil error is returned so a new exception is not thrown immediately whenever a `new Exception` call is made in the runtime.

The exception is returned as a pointer. Returning the struct by value boxed a copy into the interface the VM holds, which costs the same allocation but loses reference semantics: the boxed copy is not addressable, so `$e->message = "..."` could not write to it and a method could not mutate the instance the script holds.

func (*Exception) Error added in v0.0.3

func (e *Exception) Error() string

Error is implemented to satisfy an error interface.

func (*Exception) GetCode added in v0.0.3

func (e *Exception) GetCode() int

GetCode returns the error code of the exception.

func (*Exception) GetMessage added in v0.0.3

func (e *Exception) GetMessage() string

GetMessage returns the error message of the exception.

func (*Exception) ThrowableClass added in v0.3.4

func (e *Exception) ThrowableClass() string

ThrowableClass returns the PHP class the exception was constructed as, implementing runner.Throwable.

Directories

Path Synopsis
Package compat implements PHP language surface that a script expects to be there rather than a library it calls: functions whose behaviour is defined by what the interpreter does, not by what they compute.
Package compat implements PHP language surface that a script expects to be there rather than a library it calls: functions whose behaviour is defined by what the interpreter does, not by what they compute.
Package core holds the part of PHP's standard library that computes: strings, arrays, json, the language constructs exposed as functions, the tokenizer, the environment and the platform surface a program expects to find before it does anything interesting.
Package core holds the part of PHP's standard library that computes: strings, arrays, json, the language constructs exposed as functions, the tokenizer, the environment and the platform surface a program expects to find before it does anything interesting.
Package crypto holds the password hashing and the random source a script cannot write for itself.
Package crypto holds the password hashing and the random source a script cannot write for itself.
Package database holds the named sql connections a phpscript runtime resolves through.
Package database holds the named sql connections a phpscript runtime resolves through.
Package files provides the filesystem shims phpscript exposes to PHP: path helpers, reads, writes, streams, and the uploaded-file functions that go with $_FILES.
Package files provides the filesystem shims phpscript exposes to PHP: path helpers, reads, writes, streams, and the uploaded-file functions that go with $_FILES.
Package gd provides PHP's image functions over the standard library's image packages and golang.org/x/image.
Package gd provides PHP's image functions over the standard library's image packages and golang.org/x/image.
Package http provides the HTTP\Client and HTTP\Request bindings, the outbound HTTP surface a script reaches instead of PHP's curl_* family.
Package http provides the HTTP\Client and HTTP\Request bindings, the outbound HTTP surface a script reaches instead of PHP's curl_* family.
Package internals provides PHP internal memory and runtime introspection bindings.
Package internals provides PHP internal memory and runtime introspection bindings.
Package logger writes a log line and fails the span the work runs in when that line reports an error.
Package logger writes a log line and fails the span the work runs in when that line reports an error.
Package pexec exposes process execution to PHP: exec runs a command through the shell the way PHP's does, escapeshellarg quotes an argument for it, and posix_getpid names the running process.
Package pexec exposes process execution to PHP: exec runs a command through the shell the way PHP's does, escapeshellarg quotes an argument for it, and posix_getpid names the running process.
Package session implements Session\Manager and the Session\Storage\* family: an HTTP-only cookie carrying an opaque, randomly generated session ID, and the storage the data behind that ID lives in.
Package session implements Session\Manager and the Session\Storage\* family: an HTTP-only cookie carrying an opaque, randomly generated session ID, and the storage the data behind that ID lives in.
Package shared holds PHP behaviour that runner and stdlib both need.
Package shared holds PHP behaviour that runner and stdlib both need.
Package span exposes telemetry spans to PHP as the start_span() binding, so a script can measure a region of its own work next to the spans the interpreter records for it.
Package span exposes telemetry spans to PHP as the start_span() binding, so a script can measure a region of its own work next to the spans the interpreter records for it.
Package time exposes Go's time values to PHP without wrapping their method sets.
Package time exposes Go's time values to PHP without wrapping their method sets.

Jump to

Keyboard shortcuts

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