1) Basic content:
A. Interface:
- Syntax:
When used, the interface keyword is declared.
The subclasses that you want to use need the implements keyword.
1 2 3 4 5 6 7 8 9 10 11 12 13 | <span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token keyword">interface</span> <span class="token class-name">InterfaceName</span> <span class="token punctuation">{</span> <span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function">name1</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function">name2</span> <span class="token punctuation">(</span> <span class="token variable">$name</span> <span class="token punctuation">,</span> <span class="token variable">$color</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function">name3</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">:</span> string <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">class</span> <span class="token class-name">Name</span> implement InterfaceName <span class="token punctuation">{</span> <span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function">name1</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token comment">//code//</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token delimiter important">?></span></span> |
- Define:
Lets specify a class to implement.
Many classes use the same interface, called polymorphism.
B.Abstract:
- Syntax:
1 2 3 4 5 6 7 8 | <span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token keyword">abstract</span> <span class="token keyword">class</span> <span class="token class-name">ParentClass</span> <span class="token punctuation">{</span> <span class="token keyword">abstract</span> <span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function">someMethod1</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token keyword">abstract</span> <span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function">someMethod2</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token keyword">abstract</span> <span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function">someMethod3</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token delimiter important">?></span></span> |
The abstract keyword is used before the class.
The child class inherits by extends
When a subclass is inherited from an abstract class, we have the following rules:
- The subclass method must be defined with the same name and it declares the parent abstract method
- The subclass method must be specified with the same or less restrictive access modifier
- The number of required arguments must be the same. However, a subclass can have additional optional arguments
2) Example:
A. Abstract:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | <span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token keyword">abstract</span> <span class="token keyword">class</span> <span class="token class-name">Info</span> <span class="token punctuation">{</span> <span class="token keyword">public</span> <span class="token variable">$name</span> <span class="token punctuation">;</span> <span class="token keyword">public</span> <span class="token variable">$age</span> <span class="token punctuation">;</span> <span class="token keyword">abstract</span> <span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function">__construct</span> <span class="token punctuation">(</span> <span class="token variable">$name</span> <span class="token punctuation">,</span> <span class="token variable">$age</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token keyword">abstract</span> <span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function">getInfo</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">class</span> <span class="token class-name">A</span> <span class="token keyword">extends</span> <span class="token class-name">Info</span> <span class="token punctuation">{</span> <span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function">__construct</span> <span class="token punctuation">(</span> <span class="token variable">$name</span> <span class="token punctuation">,</span> <span class="token variable">$age</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token variable">$this</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token property">name</span> <span class="token operator">=</span> <span class="token variable">$name</span> <span class="token punctuation">;</span> <span class="token variable">$this</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token property">age</span> <span class="token operator">=</span> <span class="token variable">$age</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function">getInfo</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> <span class="token variable">$this</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token property">name</span> <span class="token punctuation">.</span> <span class="token single-quoted-string string">'-'</span> <span class="token punctuation">.</span> <span class="token variable">$this</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token property">age</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token variable">$a</span> <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">A</span> <span class="token punctuation">(</span> <span class="token single-quoted-string string">'hi'</span> <span class="token punctuation">,</span> <span class="token number">18</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token keyword">echo</span> <span class="token variable">$a</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">getInfo</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token delimiter important">?></span></span> |
B. Interface
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token keyword">interface</span> <span class="token class-name">Height</span> <span class="token punctuation">{</span> <span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function">__construct</span> <span class="token punctuation">(</span> <span class="token variable">$height</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">interface</span> <span class="token class-name">Height1</span> <span class="token punctuation">{</span> <span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function">getHeight</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">class</span> <span class="token class-name">B</span> <span class="token keyword">implements</span> <span class="token class-name">Height</span> <span class="token punctuation">,</span> Height1 <span class="token punctuation">{</span> <span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function">__construct</span> <span class="token punctuation">(</span> <span class="token variable">$height</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token variable">$this</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token property">height</span> <span class="token operator">=</span> <span class="token variable">$height</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">public</span> <span class="token keyword">function</span> <span class="token function">getHeight</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">return</span> <span class="token variable">$this</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token property">height</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token variable">$b</span> <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">B</span> <span class="token punctuation">(</span> <span class="token number">175</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token keyword">echo</span> <span class="token variable">$b</span> <span class="token operator">-</span> <span class="token operator">></span> <span class="token function">getHeight</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token delimiter important">?></span></span> |
In this example, it can be seen that a class implements from multiple interfaces. Quite interesting, right
3) Conclusion
It can be understood roughly, these 2 methods are used to create a framework for our project. Help us to work quickly.
A few references:
https://www.w3schools.com/php/php_oop_classes_abstract.asp https://www.php.net/manual/en/function.interface-exist
Thank you everyone for reading