There are many differences between PHP classes and other languages. PHP allows a very strange way to call instance methods in static methods, and provides the keywords self and static for accessing static members of the class itself. Self always refers to the current class, while static may point to a derived class. This is also a strange place. Static members can be inherited and overridden.
PHP also provides some magic methods starting with double underscores (including constructors and some built-in "interfaces"). The following are PHP's existing magic methods:
1, __construct($args) and __destruct(void)
That is, the constructor and destructor methods are the same as other languages. The constructor is called when instantiating and the destructor is called when the object is recycled. The destructor method can be used to automatically reclaim resources after execution, such as closing some resources referenced by pointers.
2. mixed __call (string $name
, array $arguments
) and mixed __callStatic (string $name
, array $arguments
)
If a method that does not exist in an object or a static method that does not exist in the class is called, the above two methods will be called respectively. These two methods allow you to use some special dynamic operation mechanisms to make methods come out of nowhere. Personally, it is recommended to use them as little as possible. They will make the code difficult to maintain and cannot be supported by IDE.
3. mixed __get (string $name
) and __set (string $name , mixed $value )
Like __call, they are executed when calling properties that do not exist. It is also recommended to use them sparingly.
4. bool __isset (string $name
) and __unset (string $name
)
When isset() or empty() is called on a property that does not exist in the object, __isset() will be called. __unset is called when unset is called.
5, array __sleep (void) and __wakeup (void )
These two methods will be called before and after serialization respectively, and can be used to organize the properties of the object to be serialized and restore the state after serialization.
6. string __toString (void)
It tells PHP how to convert the object when it needs to be converted to a string, like echo new MyClass();
7. mixed __invoke ()
This method is called when an object variable is called as a function.
8, object __set_state (array $properties
)
When var_export() is called on an object, it will be called and replace the object itself with the return value, allowing it to organize the data of the exported variable.
9. __clone()
Using this method allows us to copy objects while also making deep copies of attributes, similar to the ICloneable interface in .net.
About automatic loading:
PHP itself does not have an automatic loading mechanism, but the new version provides the spl_autoload_register function to register a function. The registered function is called when a non-existing class is used. Developers need to manually implement the loading mechanism in the function. The author has not deeply understood the mechanism of include. If it is also necessary to detect whether a file exists, it may make the operation efficiency lower.