The examples in this article summarize the relevant knowledge points of PHP class. Share it with everyone for your reference, the details are as follows:
Final class and final method
If the method in the parent class is declared as final, the subclass cannot override the method. If a class is declared final, it cannot be inherited.
final class a{} class a{ final public function A(){} }
Abstract classes and abstract methods
abstract class a { public abstract function func(); } class A extends a{ public function func(){} }
① A class can be declared as an abstract class using abstract; an abstract class is a class that cannot be instantiated and is only used as a parent class for other classes.
abstract class name{}
② A method can be declared as an abstract method using abstract; abstract methods only need to declare the method header and do not need the method body in the braces.
abstract public function name($val);
③ If there is an abstract method in a class, the class must be declared as an abstract class.
④ If a subclass inherits from an abstract class, the subclass cannot implement all abstract methods in the parent class unless the subclass also continues to be an abstract class.
⑤ When a subclass implements a method of an abstract parent class, the access control scope cannot be reduced, and the method parameters must also be consistent (rewritten).
Interface
Interface can be regarded as a higher level abstraction of abstract class, it can be said to be a special case of abstract class
interface a{ function func(); } class A implements a { function func(){} }
Class: attributes, class constants, methods
Abstract class: attributes, class constants , Abstract methods
Interface: interface constants, abstract methods
① Compared with abstract classes, interfaces can implement 'multiple inheritance'
class A implements a,b,c{}
② An interface can only inherit one interface
interface a extends b{}
③ The methods are all abstract methods without abstract modification, that is, the lower-level classes either implement the interface methods (implements) or are also declared as abstract methods
Overloading technology
1. Attribute overloading: If you use a non-existent attribute, then A predefined method in the class will be called to process data;
For application scenarios where attributes are not used, the following processing is done
① Value: Automatically call __get() in the class
② Assignment: Automatically call __get() in the class __set()
③ Determine whether it exists: automatically call __isset()
④ in the class Destruction: automatically call __unset() in the class
The premise is that these methods are pre-defined, otherwise an error will be reported
<?php class bee{ public $ol = array(); public function __get($key){ if(isset($this->ol[$key])){ return $this->ol[$key]; } return $key.' not exists'; } public function __set($key,$val){ $this->ol[$key] = $val; } public function __isset($key){ if(isset($this->ol[$key])){ return true; } return false; } public function __unset($key){ unset($this->ol[$key]); } } $obj = new bee(); echo $obj->one; echo '<br>'; $obj->one = 1; echo $obj->one; echo '<br>'; var_dump(isset($obj->one));
The running results are as follows:
one not exists 1 boolean true
2. Method overloading: If a method that does not exist is used, a predefined method in the class will be called to handle the behavior;
It is not used for methods For application scenarios, do the following processing
① Call inaccessible methods in objects: __call()
② Call inaccessible methods in static mode: __callStatic()
<?php class bee{ public function __call($name,$arr){ echo '<br>'; echo 'function '.$name.' not exist'; } static function __callStatic($name,$arr){ echo '<br>'; echo 'function '.$name.' not exist'; } /*public function __call($name,$arr){ $num = count($arr); if($num<1){ $name(); }else{ $name = $name.'_one'; $name($arr[0]); } }*/ } $obj->func(); bee::staFunc(); /*$obj->func(1); function func(){ echo '<br>'; echo 'no.0'; } function func_one($val){ echo '<br>'; echo 'no.'.$val; }*/
The running results are as follows:
function func not exist function staFunc not exist
Note: The above methods are all magic methods with parameters
I hope this article will be helpful to everyone in PHP programming.