standard

package
v0.0.0-...-f196a84 Latest Latest
Warning

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

Go to latest
Published: May 13, 2026 License: BSD-3-Clause Imports: 47 Imported by: 0

Documentation

Overview

Pure-Go implementation of PHP's crypt() function. Replaces the previous cgo-backed wrapper around libc's crypt_r(). Each supported algorithm lives in its own file (crypt_bcrypt.go, crypt_md5.go, crypt_sha.go, crypt_des.go); this file is just the dispatcher and the PHP entry point.

Index

Constants

View Source
const (
	CASE_LOWER phpv.ZInt = 0
	CASE_UPPER phpv.ZInt = 1
)

> const

View Source
const (
	ARRAY_FILTER_USE_BOTH phpv.ZInt = 1
	ARRAY_FILTER_USE_KEY  phpv.ZInt = 2
)

> const

View Source
const (
	SORT_REGULAR phpv.ZInt = iota
	SORT_NUMERIC
	SORT_STRING
	SORT_DESC
	SORT_ASC
	SORT_LOCALE_STRING
	SORT_NATURAL

	SORT_FLAG_CASE phpv.ZInt = 8
)

> const

View Source
const (
	EXTR_OVERWRITE phpv.ZInt = iota
	EXTR_SKIP
	EXTR_PREFIX_SAME
	EXTR_PREFIX_ALL
	EXTR_PREFIX_INVALID
	EXTR_PREFIX_IF_EXISTS
	EXTR_IF_EXISTS

	EXTR_REFS phpv.ZInt = 0x100
)

> const

View Source
const (
	ASSERT_ACTIVE     phpv.ZInt = 1
	ASSERT_WARNING    phpv.ZInt = 2
	ASSERT_CALLBACK   phpv.ZInt = 3
	ASSERT_BAIL       phpv.ZInt = 4
	ASSERT_QUIET_EVAL phpv.ZInt = 5
	ASSERT_EXCEPTION  phpv.ZInt = 6
)

> const

View Source
const (
	SCANDIR_SORT_ASCENDING phpv.ZInt = iota
	SCANDIR_SORT_DESCENDING
	SCANDIR_SORT_NONE
)

> const

View Source
const (
	GLOB_ERR      phpv.ZInt = 0x1
	GLOB_MARK     phpv.ZInt = 0x2
	GLOB_NOSORT   phpv.ZInt = 0x4
	GLOB_NOCHECK  phpv.ZInt = 0x10
	GLOB_NOESCAPE phpv.ZInt = 0x40
	GLOB_BRACE    phpv.ZInt = 0x400
	GLOB_ONLYDIR  phpv.ZInt = 0x40000000
)

> const

View Source
const (
	FILE_USE_INCLUDE_PATH   phpv.ZInt = 1
	FILE_IGNORE_NEW_LINES   phpv.ZInt = 2
	FILE_SKIP_EMPTY_LINES   phpv.ZInt = 4
	FILE_APPEND             phpv.ZInt = 8
	FILE_NO_DEFAULT_CONTEXT phpv.ZInt = 16
	FILE_BINARY             phpv.ZInt = 0
	FILE_TEXT               phpv.ZInt = 0
)

> const

View Source
const (
	LOCK_SH phpv.ZInt = 1
	LOCK_EX phpv.ZInt = 2
	LOCK_UN phpv.ZInt = 3
	LOCK_NB phpv.ZInt = 4
)

> const

View Source
const (
	HTML_SPECIALCHARS phpv.ZInt = 0
	HTML_ENTITIES     phpv.ZInt = 1
)

> const

View Source
const (
	ENT_HTML_QUOTE_NONE                  phpv.ZInt = 0
	ENT_HTML_QUOTE_SINGLE                phpv.ZInt = 1
	ENT_HTML_QUOTE_DOUBLE                phpv.ZInt = 2
	ENT_HTML_IGNORE_ERRORS               phpv.ZInt = 4
	ENT_HTML_SUBSTITUTE_ERRORS           phpv.ZInt = 8
	ENT_HTML_DOC_TYPE_MASK               phpv.ZInt = (16 | 32)
	ENT_HTML_DOC_HTML401                 phpv.ZInt = 0
	ENT_HTML_DOC_XML1                    phpv.ZInt = 16
	ENT_HTML_DOC_XHTML                   phpv.ZInt = 32
	ENT_HTML_DOC_HTML5                   phpv.ZInt = (16 | 32)
	ENT_HTML_SUBSTITUTE_DISALLOWED_CHARS phpv.ZInt = 128
	ENT_COMPAT                           phpv.ZInt = ENT_HTML_QUOTE_DOUBLE
	ENT_QUOTES                           phpv.ZInt = (ENT_HTML_QUOTE_DOUBLE | ENT_HTML_QUOTE_SINGLE)
	ENT_NOQUOTES                         phpv.ZInt = ENT_HTML_QUOTE_NONE
	ENT_IGNORE                           phpv.ZInt = ENT_HTML_IGNORE_ERRORS
	ENT_SUBSTITUTE                       phpv.ZInt = ENT_HTML_SUBSTITUTE_ERRORS
	ENT_HTML401                          phpv.ZInt = 0
	ENT_XML1                             phpv.ZInt = 16
	ENT_XHTML                            phpv.ZInt = 32
	ENT_HTML5                            phpv.ZInt = (16 | 32)
	ENT_DISALLOWED                       phpv.ZInt = 128
)

> const

View Source
const (
	IMAGETYPE_GIF      phpv.ZInt = 1
	IMAGETYPE_JPEG     phpv.ZInt = 2
	IMAGETYPE_PNG      phpv.ZInt = 3
	IMAGETYPE_SWF      phpv.ZInt = 4
	IMAGETYPE_PSD      phpv.ZInt = 5
	IMAGETYPE_BMP      phpv.ZInt = 6
	IMAGETYPE_TIFF_II  phpv.ZInt = 7
	IMAGETYPE_TIFF_MM  phpv.ZInt = 8
	IMAGETYPE_JPC      phpv.ZInt = 9
	IMAGETYPE_JP2      phpv.ZInt = 10
	IMAGETYPE_JPX      phpv.ZInt = 11
	IMAGETYPE_JB2      phpv.ZInt = 12
	IMAGETYPE_SWC      phpv.ZInt = 13
	IMAGETYPE_IFF      phpv.ZInt = 14
	IMAGETYPE_WBMP     phpv.ZInt = 15
	IMAGETYPE_XBM      phpv.ZInt = 16
	IMAGETYPE_ICO      phpv.ZInt = 17
	IMAGETYPE_WEBP     phpv.ZInt = 18
	IMAGETYPE_AVIF     phpv.ZInt = 19
	IMAGETYPE_HEIF     phpv.ZInt = 20
	IMAGETYPE_JPEG2000 phpv.ZInt = 9 // alias for JPC
)

Image type constants > const

View Source
const (
	INI_SCANNER_NORMAL phpv.ZInt = 0
	INI_SCANNER_RAW    phpv.ZInt = 1
	INI_SCANNER_TYPED  phpv.ZInt = 2
)

INI scanner mode constants

View Source
const (
	RoundingModeHalfAwayFromZero phpv.ZInt = 1
	RoundingModeHalfTowardsZero  phpv.ZInt = 2
	RoundingModeHalfEven         phpv.ZInt = 3
	RoundingModeHalfOdd          phpv.ZInt = 4
	RoundingModeTowardsZero      phpv.ZInt = 5
	RoundingModeAwayFromZero     phpv.ZInt = 6
	RoundingModeNegativeInfinity phpv.ZInt = 7
	RoundingModePositiveInfinity phpv.ZInt = 8
)

RoundingMode enum backing values (matching PHP 8.4)

View Source
const (
	LOG_EMERG             phpv.ZInt = 0
	LOG_ALERT             phpv.ZInt = 1
	LOG_CRIT              phpv.ZInt = 2
	LOG_ERR               phpv.ZInt = 3
	LOG_WARNING           phpv.ZInt = 4
	LOG_NOTICE            phpv.ZInt = 5
	LOG_INFO              phpv.ZInt = 6
	LOG_DEBUG             phpv.ZInt = 7
	LOG_KERN              phpv.ZInt = 0
	LOG_USER              phpv.ZInt = 8
	LOG_MAIL              phpv.ZInt = 16
	LOG_DAEMON            phpv.ZInt = 24
	LOG_AUTH              phpv.ZInt = 32
	LOG_SYSLOG            phpv.ZInt = 40
	LOG_LPR               phpv.ZInt = 48
	LOG_NEWS              phpv.ZInt = 56
	LOG_UUCP              phpv.ZInt = 64
	LOG_CRON              phpv.ZInt = 72
	LOG_AUTHPRIV          phpv.ZInt = 80
	LOG_LOCAL0            phpv.ZInt = 128
	LOG_LOCAL1            phpv.ZInt = 136
	LOG_LOCAL2            phpv.ZInt = 144
	LOG_LOCAL3            phpv.ZInt = 152
	LOG_LOCAL4            phpv.ZInt = 160
	LOG_LOCAL5            phpv.ZInt = 168
	LOG_LOCAL6            phpv.ZInt = 176
	LOG_LOCAL7            phpv.ZInt = 184
	LOG_PID               phpv.ZInt = 1
	LOG_CONS              phpv.ZInt = 2
	LOG_ODELAY            phpv.ZInt = 4
	LOG_NDELAY            phpv.ZInt = 8
	LOG_NOWAIT            phpv.ZInt = 16
	LOG_PERROR            phpv.ZInt = 32
	STREAM_SERVER_BIND    phpv.ZInt = 4
	STREAM_SERVER_LISTEN  phpv.ZInt = 8
	STREAM_CLIENT_CONNECT phpv.ZInt = 4
	STREAM_FILTER_READ    phpv.ZInt = 1
	STREAM_FILTER_WRITE   phpv.ZInt = 2
	STREAM_FILTER_ALL     phpv.ZInt = 3
	STREAM_IS_URL         phpv.ZInt = 1
	PSFS_PASS_ON          phpv.ZInt = 2
	PSFS_FEED_ME          phpv.ZInt = 0
	PSFS_ERR_FATAL        phpv.ZInt = 1
	STREAM_SHUT_RD        phpv.ZInt = 0
	STREAM_SHUT_WR        phpv.ZInt = 1
	STREAM_SHUT_RDWR      phpv.ZInt = 2
	STREAM_PF_UNIX        phpv.ZInt = 1
	STREAM_PF_INET        phpv.ZInt = 2
	STREAM_PF_INET6       phpv.ZInt = 10
	STREAM_SOCK_STREAM    phpv.ZInt = 1
	STREAM_SOCK_DGRAM     phpv.ZInt = 2
	STREAM_SOCK_RAW       phpv.ZInt = 3
	STREAM_SOCK_SEQPACKET phpv.ZInt = 5
	STREAM_SOCK_RDM       phpv.ZInt = 4
	STREAM_IPPROTO_IP     phpv.ZInt = 0
	STREAM_IPPROTO_TCP    phpv.ZInt = 6
	STREAM_IPPROTO_UDP    phpv.ZInt = 17
	STREAM_IPPROTO_ICMP   phpv.ZInt = 1
	STREAM_IPPROTO_RAW    phpv.ZInt = 255
	DNS_A                 phpv.ZInt = 1
	DNS_NS                phpv.ZInt = 2
	DNS_CNAME             phpv.ZInt = 16
	DNS_SOA               phpv.ZInt = 32
	DNS_PTR               phpv.ZInt = 2048
	DNS_HINFO             phpv.ZInt = 4096
	DNS_CAA               phpv.ZInt = 8192
	DNS_MX                phpv.ZInt = 16384
	DNS_TXT               phpv.ZInt = 32768
	DNS_SRV               phpv.ZInt = 33554432
	DNS_NAPTR             phpv.ZInt = 67108864
	DNS_AAAA              phpv.ZInt = 134217728
	DNS_ANY               phpv.ZInt = 268435456
	DNS_ALL               phpv.ZInt = 251721779
)
View Source
const (
	PHP_URL_SCHEME   phpv.ZInt = 0
	PHP_URL_HOST     phpv.ZInt = 1
	PHP_URL_PORT     phpv.ZInt = 2
	PHP_URL_USER     phpv.ZInt = 3
	PHP_URL_PASS     phpv.ZInt = 4
	PHP_URL_PATH     phpv.ZInt = 5
	PHP_URL_QUERY    phpv.ZInt = 6
	PHP_URL_FRAGMENT phpv.ZInt = 7
)

PHP_URL_* constants for parse_url component parameter

View Source
const (
	PATHINFO_DIRNAME   phpv.ZInt = 1
	PATHINFO_BASENAME  phpv.ZInt = 2
	PATHINFO_EXTENSION phpv.ZInt = 4
	PATHINFO_FILENAME  phpv.ZInt = 8
	PATHINFO_ALL       phpv.ZInt = 15
)

PATHINFO_* constants

View Source
const (
	PHP_QUERY_RFC1738 phpv.ZInt = 1
	PHP_QUERY_RFC3986 phpv.ZInt = 2
)

PHP_QUERY_* constants for http_build_query

View Source
const (
	PASSWORD_BCRYPT_DEFAULT_COST = 12
)

Variables

View Source
var (
	INF        = phpv.ZFloat(math.Inf(0)) // positive infinite
	NAN        = phpv.ZFloat(math.NaN())
	M_PI       = phpv.ZFloat(math.Pi)     // Pi
	M_E        = phpv.ZFloat(math.E)      // e
	M_LOG2E    = phpv.ZFloat(math.Log2E)  // log_2 e
	M_LOG10E   = phpv.ZFloat(math.Log10E) // log_10 e
	M_LN2      = phpv.ZFloat(math.Ln2)    // log_e 2
	M_LN10     = phpv.ZFloat(math.Ln10)
	M_PI_2     = phpv.ZFloat(math.Pi / 2)
	M_PI_4     = phpv.ZFloat(math.Pi / 4)
	M_1_PI     = phpv.ZFloat(1 / math.Pi)
	M_2_PI     = phpv.ZFloat(2 / math.Pi)
	M_SQRTPI   = phpv.ZFloat(1.7724538509055160272981674833411) // PHP 5.2.0
	M_2_SQRTPI = phpv.ZFloat(2 / math.Sqrt(math.Pi))
	M_SQRT2    = phpv.ZFloat(math.Sqrt(2))
	M_SQRT3    = phpv.ZFloat(math.Sqrt(3)) // PHP 5.2.0
	M_SQRT1_2  = phpv.ZFloat(0.70710678118654752440084436210485)
	M_LNPI     = phpv.ZFloat(math.Log(math.Pi))
	M_EULER    = phpv.ZFloat(0.57721566490153286061) // Euler constant

	PHP_ROUND_HALF_UP   = phpv.ZInt(RoundingModeHalfAwayFromZero) // Round halves up
	PHP_ROUND_HALF_DOWN = phpv.ZInt(RoundingModeHalfTowardsZero)  // Round halves down
	PHP_ROUND_HALF_EVEN = phpv.ZInt(RoundingModeHalfEven)         // Round halves to even numbers
	PHP_ROUND_HALF_ODD  = phpv.ZInt(RoundingModeHalfOdd)          // Round halves to odd numbers

	M_PHI = phpv.ZFloat(math.Phi) // specific to this implementation of PHP
)

from: http://php.net/manual/en/math.constants.php > const

View Source
var (
	STR_PAD_LEFT  = phpv.ZInt(0)
	STR_PAD_RIGHT = phpv.ZInt(1)
	STR_PAD_BOTH  = phpv.ZInt(2)
)

> const

View Source
var DirectoryClass *phpobj.ZClass

DirectoryClass is the builtin Directory class returned by dir()

View Source
var PhpUserFilterClass = &phpobj.ZClass{
	Name: "php_user_filter",
	Props: []*phpv.ZClassProp{
		{VarName: "filtername", Default: phpv.ZStr("").ZVal(), Modifiers: phpv.ZAttrPublic},
		{VarName: "params", Default: phpv.ZStr("").ZVal(), Modifiers: phpv.ZAttrPublic},
		{VarName: "stream", Default: phpv.ZNULL.ZVal(), Modifiers: phpv.ZAttrPublic},
	},
	Methods: map[phpv.ZString]*phpv.ZClassMethod{
		"filter": {
			Name: "filter",
			Method: &phpobj.NativeMethodNamed{
				Fn: phpobj.NativeMethod(func(ctx phpv.Context, o *phpobj.ZObject, args []*phpv.ZVal) (*phpv.ZVal, error) {
					return phpv.ZInt(stream.PSFS_FEED_ME).ZVal(), nil
				}),
				Args: []*phpv.FuncArg{
					{VarName: "in", Required: true},
					{VarName: "out", Required: true},
					{VarName: "consumed", Required: true, Ref: true},
					{VarName: "closing", Required: true, Hint: phpv.ParseTypeHint("bool")},
				},
			},
			ReturnType: phpv.ParseTypeHint("int"),
		},
		"oncreate": {
			Name: "onCreate",
			Method: &phpobj.NativeMethodNamed{
				Fn: phpobj.NativeMethod(func(ctx phpv.Context, o *phpobj.ZObject, args []*phpv.ZVal) (*phpv.ZVal, error) {
					return phpv.ZTrue.ZVal(), nil
				}),
				Args: []*phpv.FuncArg{},
			},
			ReturnType: phpv.ParseTypeHint("bool"),
		},
		"onclose": {
			Name: "onClose",
			Method: &phpobj.NativeMethodNamed{
				Fn: phpobj.NativeMethod(func(ctx phpv.Context, o *phpobj.ZObject, args []*phpv.ZVal) (*phpv.ZVal, error) {
					return nil, nil
				}),
				Args: []*phpv.FuncArg{},
			},
			ReturnType: phpv.ParseTypeHint("void"),
		},
	},
}

PhpUserFilterClass is the built-in php_user_filter class that user-defined stream filters extend.

View Source
var RoundingModeEnum = newRoundingModeEnum()

RoundingModeEnum is the built-in PHP 8.4 RoundingMode enum

View Source
var StreamBucketClass = &phpobj.ZClass{
	Name: "StreamBucket",
	Props: []*phpv.ZClassProp{
		{VarName: "brigade", Default: phpv.ZNULL.ZVal(), Modifiers: phpv.ZAttrPublic},
		{VarName: "bucket", Default: phpv.ZNULL.ZVal(), Modifiers: phpv.ZAttrPublic},
		{VarName: "data", Default: phpv.ZStr("").ZVal(), Modifiers: phpv.ZAttrPublic},
		{VarName: "datalen", Default: phpv.ZInt(0).ZVal(), Modifiers: phpv.ZAttrPublic},
	},
}

StreamBucketClass is the built-in StreamBucket class used by stream filter functions.

Functions

func BuildCsvLine

func BuildCsvLine(ctx phpv.Context, fields *phpv.ZArray, sep, enc, esc byte, eol string) ([]byte, error)

BuildCsvLine builds a CSV line from a ZArray of fields. Returns the line as bytes (including trailing eol). PHP's fputcsv always doubles the enclosure character to escape it. The escape parameter does NOT change how enclosures are escaped in output.

func PHP_UU_DEC

func PHP_UU_DEC(b byte) byte

func ParseCsvLine

func ParseCsvLine(ctx phpv.Context, line string, sep, enc, esc byte) (*phpv.ZVal, error)

func ParseInt

func ParseInt(s string, base int, bitSize int) (*phpv.ZVal, error)

based on strconv.ParseUint, but this one doesn't check for overflows/underflows, and uses float64 as the accumulator.

Types

type StreamDeserializer

type StreamDeserializer struct {
	// contains filtered or unexported fields
}

StreamDeserializer provides sequential unserialize operations with shared reference tracking. This is needed by SplObjectStorage::unserialize() and ArrayObject::unserialize() which parse multiple PHP values from a single serialized stream while maintaining cross-reference integrity.

func NewStreamDeserializer

func NewStreamDeserializer() *StreamDeserializer

NewStreamDeserializer creates a StreamDeserializer that allows all classes.

func NewStreamDeserializerWithRefs

func NewStreamDeserializerWithRefs(refs ...*phpv.ZVal) *StreamDeserializer

NewStreamDeserializerWithRefs creates a StreamDeserializer pre-seeded with existing references. This is needed when a Serializable::unserialize() callback must resolve R:/r: references that point to objects registered by the parent deserializer (e.g. the object being unserialized itself).

func (*StreamDeserializer) ParseAt

func (sd *StreamDeserializer) ParseAt(ctx phpv.Context, str string, offset int) (*phpv.ZVal, int, error)

ParseAt unserializes a single PHP value starting at the given offset in str. It returns the parsed value and the offset immediately after the consumed data. Reference tracking is shared across all calls on the same StreamDeserializer.

func (*StreamDeserializer) ParseKeyAt

func (sd *StreamDeserializer) ParseKeyAt(ctx phpv.Context, str string, offset int) (*phpv.ZVal, int, error)

ParseKeyAt parses a value without registering it in the reference table (for keys).

Jump to

Keyboard shortcuts

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