浅析PHP的静态成员函数效率更高的原因_PHP
很多php开发人员都知道, 使用类的静态成员函数效率比类的普通成员函数的要高,本文从应用层次分析这个问题
下面是一个范例:
复制代码 代码如下:header('Content-Type: text/html; charset=utf-8');
class xclass{
public static $var1 = '1111111111111111';
public $var2 = 'aaaaaaaaaaaaa';
public function __construct()
{
$this -> var2 = 'bbbbbbbbbbbbbbbb';
}
public static function secho1()
{
echo self :: $var1 . '
';
}
public function secho2()
{
echo $this -> var2 . '
';
}
public function secho3()
{
echo 'cccccccccccccc
';
}
}
xclass :: secho1();
xclass :: secho3();
echo "------------------------------
";
$xc = new xclass();
$xc -> secho1();
$xc -> secho2();
?>
认真看上面的范例,会发现一个有趣的地方,secho1()定义为静态方法后, 在动态类的对像实例中仍可以引用为动态方法,而secho3()也可以被当作静态成员函数,从这个层面,不难理解为什么说静态成员函数比动态的快。
可能是由于兼容性原因,php的类成员其实并无明显的动静态之分,所有成员在没明确声明的情况下都会被当成静态成员存放在特定的内存区中,所以调用静态成员函数就和调用普通函数一样,速度很快。
但调用动态类则不同,它要以这个类结构作为样本,在内存中重新生成一个对象实例,所以多了一个过程,这对于简单的类来说,可能不算什么,但对于复杂的类来说这是明显影响效率的。
有人会担心,使用静态方法会不会造成内存占用过多,其实从上面分析可以知道,你不声明静态方法,系统依然会把成员当成静态,因此对于一个完全静态方法的类和一个完全动态但没声明实例对象的类占用内存几乎是一样的,所以对于比较直接的逻辑,都建议直接用静态成员方法,当然,一些复杂或对像化明显的逻辑,如果完全用静态类也不是没可能,但那样就失去类的意义了,如果这样,何必OOP,按用途,静态方法特别适用于MVC模式的逻辑类中。

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

Alipay PHP...

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,

Session hijacking can be achieved through the following steps: 1. Obtain the session ID, 2. Use the session ID, 3. Keep the session active. The methods to prevent session hijacking in PHP include: 1. Use the session_regenerate_id() function to regenerate the session ID, 2. Store session data through the database, 3. Ensure that all session data is transmitted through HTTPS.

The application of SOLID principle in PHP development includes: 1. Single responsibility principle (SRP): Each class is responsible for only one function. 2. Open and close principle (OCP): Changes are achieved through extension rather than modification. 3. Lisch's Substitution Principle (LSP): Subclasses can replace base classes without affecting program accuracy. 4. Interface isolation principle (ISP): Use fine-grained interfaces to avoid dependencies and unused methods. 5. Dependency inversion principle (DIP): High and low-level modules rely on abstraction and are implemented through dependency injection.

How to debug CLI mode in PHPStorm? When developing with PHPStorm, sometimes we need to debug PHP in command line interface (CLI) mode...

Article discusses essential security features in frameworks to protect against vulnerabilities, including input validation, authentication, and regular updates.

How to automatically set the permissions of unixsocket after the system restarts. Every time the system restarts, we need to execute the following command to modify the permissions of unixsocket: sudo...

The enumeration function in PHP8.1 enhances the clarity and type safety of the code by defining named constants. 1) Enumerations can be integers, strings or objects, improving code readability and type safety. 2) Enumeration is based on class and supports object-oriented features such as traversal and reflection. 3) Enumeration can be used for comparison and assignment to ensure type safety. 4) Enumeration supports adding methods to implement complex logic. 5) Strict type checking and error handling can avoid common errors. 6) Enumeration reduces magic value and improves maintainability, but pay attention to performance optimization.
