Basic knowledge of streams in PHP
This article mainly introduces the basic knowledge of PHP streams. Interested friends can refer to it. I hope it will be helpful to everyone.
Overview
Streams are a feature introduced in PHP 4.3, mainly to unify the working methods of files, sockets and other similar resources. PHP 4.3 has been around for a long time, but many programmers seem to be unable to use streams in PHP correctly, including me of course. I have encountered the use of streams in some programs before, such as php://input, but I have never had a chance to sort it out. Today I will sort out this part of the knowledge.
Stream is a resource provided by PHP, which can be used transparently by us, and stream is a very powerful tool. Proper use of streams in programs can take our programs to a new level.
Each stream implements a wrapper, which contains some additional code to handle special protocols and encodings. PHP provides some built-in wrappers, and we can also easily create and register custom wrappers. We can even use contexts and filters to alter and enhance wrappers.
Basic knowledge of streams
The form of streams in PHP is:
The default wrapper is file://, which means that the stream is used every time we access the file system. For example, we can use the following two methods to read files: readfile('/path/to/somefile.txt') and readfile('file:///path/to/somefile.txt'). Use these two method to read the file, you can get the same result.
As mentioned earlier, PHP provides some built-in wrappers, protocols and filters. To check which wrappers are installed on our machine, you can use the following functions:
The code is as follows:
<?php var_dump(stream_get_transports()); var_dump(stream_get_wrappers()); var_dump(stream_get_filters()); ?>
The output content of my local environment is as follows:
The code is as follows :
array (size=8) 0 => string 'tcp' (length=3) 1 => string 'udp' (length=3) 2 => string 'unix' (length=4) 3 => string 'udg' (length=3) 4 => string 'ssl' (length=3) 5 => string 'sslv3' (length=5) 6 => string 'sslv2' (length=5) 7 => string 'tls' (length=3) array (size=12) 0 => string 'https' (length=5) 1 => string 'ftps' (length=4) 2 => string 'compress.zlib' (length=13) 3 => string 'compress.bzip2' (length=14) 4 => string 'php' (length=3) 5 => string 'file' (length=4) 6 => string 'glob' (length=4) 7 => string 'data' (length=4) 8 => string 'http' (length=4) 9 => string 'ftp' (length=3) 10 => string 'phar' (length=4) 11 => string 'zip' (length=3) array (size=12) 0 => string 'zlib.*' (length=6) 1 => string 'bzip2.*' (length=7) 2 => string 'convert.iconv.*' (length=15) 3 => string 'string.rot13' (length=12) 4 => string 'string.toupper' (length=14) 5 => string 'string.tolower' (length=14) 6 => string 'string.strip_tags' (length=17) 7 => string 'convert.*' (length=9) 8 => string 'consumed' (length=8) 9 => string 'dechunk' (length=7) 10 => string 'mcrypt.*' (length=8) 11 => string 'mdecrypt.*' (length=10)
In addition, we can customize or use third-party streams.
php://wrapper
PHP has its own wrapper for accessing input/output (I/O) streams. PHP has basic php://stdin, php://stdout, php://stderr wrappers corresponding to the default I/O resources. There is also a php://input stream, which is a read-only stream, and the content of the stream is the data requested by the post. This stream is especially useful when we put data in the body of a post request to request a remote service.
Because php://input is the most commonly used stream, here are some knowledge points:
1.php://input can read unprocessed POST data. Compared to $HTTP_RAW_POST_DATA, it puts less pressure on memory and does not require special php.ini settings. php://input cannot be used for enctype=multipart/form-data
2. Only when Content-Type is application/x-www-form-urlencoded and the submission method is POST method, $_POST data is the same as php:/ /Input data is "consistent" (with quotation marks, indicating that their formats are inconsistent and their content is consistent). In other cases, they are inconsistent
3.php://input cannot read GET data. This is because the _GET data is written as query_path in the PATH field of the http request header (header), rather than in the body part of the http request.
Stream Contexts
This part of the content has almost never been encountered in programming, and it is difficult for me to research it. If you are interested, you can Baidu it yourself .
Summary
Streams are not used much in daily programming. When using xml-rpc, the server side obtains client data, mainly through php Input stream input, this is a common scenario. Hackers may also use this part of the content when they invade the website.
Related recommendations:
How to use the Snoopy class to parse html files
php for file operations and characters String encryption method
The above is the detailed content of Basic knowledge of streams in PHP. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics











This tutorial demonstrates how to efficiently process XML documents using PHP. XML (eXtensible Markup Language) is a versatile text-based markup language designed for both human readability and machine parsing. It's commonly used for data storage an

JWT is an open standard based on JSON, used to securely transmit information between parties, mainly for identity authentication and information exchange. 1. JWT consists of three parts: Header, Payload and Signature. 2. The working principle of JWT includes three steps: generating JWT, verifying JWT and parsing Payload. 3. When using JWT for authentication in PHP, JWT can be generated and verified, and user role and permission information can be included in advanced usage. 4. Common errors include signature verification failure, token expiration, and payload oversized. Debugging skills include using debugging tools and logging. 5. Performance optimization and best practices include using appropriate signature algorithms, setting validity periods reasonably,

Static binding (static::) implements late static binding (LSB) in PHP, allowing calling classes to be referenced in static contexts rather than defining classes. 1) The parsing process is performed at runtime, 2) Look up the call class in the inheritance relationship, 3) It may bring performance overhead.

A string is a sequence of characters, including letters, numbers, and symbols. This tutorial will learn how to calculate the number of vowels in a given string in PHP using different methods. The vowels in English are a, e, i, o, u, and they can be uppercase or lowercase. What is a vowel? Vowels are alphabetic characters that represent a specific pronunciation. There are five vowels in English, including uppercase and lowercase: a, e, i, o, u Example 1 Input: String = "Tutorialspoint" Output: 6 explain The vowels in the string "Tutorialspoint" are u, o, i, a, o, i. There are 6 yuan in total

What are the magic methods of PHP? PHP's magic methods include: 1.\_\_construct, used to initialize objects; 2.\_\_destruct, used to clean up resources; 3.\_\_call, handle non-existent method calls; 4.\_\_get, implement dynamic attribute access; 5.\_\_set, implement dynamic attribute settings. These methods are automatically called in certain situations, improving code flexibility and efficiency.

PHP and Python each have their own advantages, and choose according to project requirements. 1.PHP is suitable for web development, especially for rapid development and maintenance of websites. 2. Python is suitable for data science, machine learning and artificial intelligence, with concise syntax and suitable for beginners.

PHP is widely used in e-commerce, content management systems and API development. 1) E-commerce: used for shopping cart function and payment processing. 2) Content management system: used for dynamic content generation and user management. 3) API development: used for RESTful API development and API security. Through performance optimization and best practices, the efficiency and maintainability of PHP applications are improved.

PHP is a scripting language widely used on the server side, especially suitable for web development. 1.PHP can embed HTML, process HTTP requests and responses, and supports a variety of databases. 2.PHP is used to generate dynamic web content, process form data, access databases, etc., with strong community support and open source resources. 3. PHP is an interpreted language, and the execution process includes lexical analysis, grammatical analysis, compilation and execution. 4.PHP can be combined with MySQL for advanced applications such as user registration systems. 5. When debugging PHP, you can use functions such as error_reporting() and var_dump(). 6. Optimize PHP code to use caching mechanisms, optimize database queries and use built-in functions. 7
