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
- Variables
- func BuildCsvLine(ctx phpv.Context, fields *phpv.ZArray, sep, enc, esc byte, eol string) ([]byte, error)
- func PHP_UU_DEC(b byte) byte
- func ParseCsvLine(ctx phpv.Context, line string, sep, enc, esc byte) (*phpv.ZVal, error)
- func ParseInt(s string, base int, bitSize int) (*phpv.ZVal, error)
- type StreamDeserializer
Constants ¶
const ( CASE_LOWER phpv.ZInt = 0 CASE_UPPER phpv.ZInt = 1 )
> const
const ( ARRAY_FILTER_USE_BOTH phpv.ZInt = 1 ARRAY_FILTER_USE_KEY phpv.ZInt = 2 )
> const
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
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
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
const ( SCANDIR_SORT_ASCENDING phpv.ZInt = iota SCANDIR_SORT_DESCENDING SCANDIR_SORT_NONE )
> const
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
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
const ( LOCK_SH phpv.ZInt = 1 LOCK_EX phpv.ZInt = 2 LOCK_UN phpv.ZInt = 3 LOCK_NB phpv.ZInt = 4 )
> const
const ( HTML_SPECIALCHARS phpv.ZInt = 0 HTML_ENTITIES phpv.ZInt = 1 )
> const
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
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
const ( INI_SCANNER_NORMAL phpv.ZInt = 0 INI_SCANNER_RAW phpv.ZInt = 1 INI_SCANNER_TYPED phpv.ZInt = 2 )
INI scanner mode constants
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)
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 )
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
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
const ( PHP_QUERY_RFC1738 phpv.ZInt = 1 PHP_QUERY_RFC3986 phpv.ZInt = 2 )
PHP_QUERY_* constants for http_build_query
const (
PASSWORD_BCRYPT_DEFAULT_COST = 12
)
Variables ¶
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
var ( STR_PAD_LEFT = phpv.ZInt(0) STR_PAD_RIGHT = phpv.ZInt(1) STR_PAD_BOTH = phpv.ZInt(2) )
> const
var DirectoryClass *phpobj.ZClass
DirectoryClass is the builtin Directory class returned by dir()
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.
var RoundingModeEnum = newRoundingModeEnum()
RoundingModeEnum is the built-in PHP 8.4 RoundingMode enum
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 ParseCsvLine ¶
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.
Source Files
¶
- array.go
- array_diff.go
- array_intersect.go
- array_multisort.go
- array_sort.go
- assert.go
- base.go
- base64.go
- bin.go
- cast.go
- crypt.go
- crypt_bcrypt.go
- crypt_des.go
- crypt_md5.go
- crypt_sha.go
- deprecated.go
- dir.go
- dir_handle.go
- env.go
- exec.go
- ext.go
- fs.go
- fs_stat.go
- head.go
- hex.go
- html.go
- image.go
- ini.go
- intconv.go
- lcg.go
- locale.go
- math.go
- math_conv.go
- math_rand.go
- math_rounding_mode.go
- misc.go
- missing_funcs.go
- missing_funcs2.go
- natcmp.go
- net.go
- network.go
- network_socket.go
- ob.go
- pack.go
- parse-int.go
- password.go
- php.go
- printf.go
- printr.go
- process.go
- random.go
- scanf.go
- serialize.go
- streamfuncs.go
- strings.go
- strings_crc32.go
- strings_cyr_convert.go
- strings_hebrev.go
- strings_quoted_printable.go
- syntax_highlight.go
- time.go
- typecheck.go
- uname_linux.go
- uniqid.go
- url.go
- urlenc.go
- userstream_helper.go
- uuencode.go
- vardump.go
- varexport.go