The application keywords of the interface in the php class are interface and implements. The interface is a special abstract class whose member attributes are all abstract or constant. Implements mainly refers to the class name, the methods owned by the class, and the parameters passed It functions as a constraint and specification, a bit like an abstract class.
Application of interface in class
1. Keyword: interface
2. Keyword: implements
1. Introduction and creation of interface
Interface: a special abstract class whose member attributes are all abstract or constant.
Rules:
1. All methods in the class are abstract.
2. There is no need to add abstract for abstract methods.
3. The interface abstract method attribute is public.
4. Member attributes must be constants.
The format code is as follows:
interface demo { const NAME = "常量对象属性"; function myfun1(); //抽象方法function myfun2(); //抽象方法,不用具体写入逻辑 }
1. Definition and calling of the interface
<?phpinterface Cinema {const film = '加勒比海盗';public function show(); }class Order implements Cinema {public function show() {echo "影院 接口开放了<br>"; } }$face = new Order();echo $face->show(); echo Cinema::film;
Instructions : One thing to note in the above example is that the method name of the interface is show, and the class that inherits the interface must have the show method, otherwise an error will be reported. In other words, the methods of the interface are fake, and what really works are the methods in the inherited class. Is the interface here a bit similar to the abstract class of PHP?<br>Second, the parameter constraints are strict
<?phpinterface Cinema {public function show(Order $show,$num); }// 显示正常class Order implements Cinema {public $number='0011排';public function show(Order $show,$num) {echo $show->number.$num; } }$face= new Order();$face->show(new Order,$num='3人');//输出 0011排3人
Note: The above example inherits the interface class. When calling the interface method, the parameters passed must be consistent with the parameter names in the interface. Otherwise, an error will be reported.
3. Inheritance between interfaces and passing parameters by calling the interface
<?phpinterface Cinema {public function show(); }interface Cinema1 extends Cinema {public function show1(Order1 $object,$num); }class Order implements Cinema1 {public function show() {echo "准备就绪<br>"; }public function show1(Order1 $object,$num) {//var_dump($object);echo $object->number."$num<br>"; } }class Order1 {public $number="0012排";function fun(){echo ' ================='; } }$show = new Order1;$show->fun(); $test = new Order();$test->show(); $test->show1($show,$num='6人');// 输出 ===============准备就绪0012排6人
Explanation: You can see the above example , the interface Cinema1 inherits the interface Cinemal, and the class Order inherits the interface Cinema1. I don’t know if you have noticed, but the class Order includes two methods, one is show and the other is show1, and no one is missing. If one is missing, a fatal error will be reported. Order1 in show1(Order1 $object,$num) must have the same name as class Order1. If they are different, a fatal error will be reported. So what should we do if an interface is inherited by multiple classes and the class names are different? Then you have to use self, which will be mentioned below
Four, multiple inheritance for one interface
<br>
"; } function fun4() { echo "大家都好<br>"; } } class YourDemo extends MyDemo implements demo3 { function fun5() { echo "继承类后引用接口"; } } $p = new YourDemo; $p->fun1(); $p->fun2(); $p->fun3(); $p->fun4(); $p->fun5();
The above output
你好----------我也好 大家都好 继承类后引用接口
In the above example, we can see that interfaces are defined using the keyword interface, and the keyword implements is used to implement the methods in the interface. Another example:
<?php //定义接口interface User{function getDiscount();function getUserType(); }class VipUser implements User{ //VIP用户 接口实现private $discount = 0.8; // VIP 用户折扣系数function getDiscount() {return $this->discount; }function getUserType() {return "VIP用户"; } }class Goods{var $price = 88;var $vc;function run(User $vc){ //定义 User 接口类型参数,这时并不知道是什么用户$this->vc = $vc;$discount = $this->vc->getDiscount();$usertype = $this->vc->getUserType();echo $usertype."商品价格:".$this->price*$discount; } }$display = new Goods();$display ->run(new VipUser); //VIP用户商品价格:70.4
This example demonstrates a simple application of a PHP interface. In this example, the User interface implements the user's discount, and the VipUser class implements the specific discount coefficient. Finally, the product category Goods implements different user quotes based on the User interface.
Finally summarized:
The difference between abstract classes and interfaces
The interface is A special abstract class can also be regarded as a model specification. The general difference between an interface and an abstract class is as follows:
1. If a subclass implements an interface, it must implement all methods in the interface (whether needed or not); if it inherits an abstract class, it only needs to implement the required Just use the method.
2. If the method name defined in an interface changes, then all subclasses that implement this interface need to update the method name synchronously; and if the method name changes in an abstract class, the method name corresponding to its subclass will It is not affected, it just becomes a new method (relative to the old method implementation).
3. Abstract classes can only be inherited singly. When a subclass needs to implement functions that need to be inherited from multiple parent classes, interfaces must be used.
The above is the detailed content of Applications of interfaces in php classes--implements. For more information, please follow other related articles on the PHP Chinese website!

php把负数转为正整数的方法:1、使用abs()函数将负数转为正数,使用intval()函数对正数取整,转为正整数,语法“intval(abs($number))”;2、利用“~”位运算符将负数取反加一,语法“~$number + 1”。

实现方法:1、使用“sleep(延迟秒数)”语句,可延迟执行函数若干秒;2、使用“time_nanosleep(延迟秒数,延迟纳秒数)”语句,可延迟执行函数若干秒和纳秒;3、使用“time_sleep_until(time()+7)”语句。

php除以100保留两位小数的方法:1、利用“/”运算符进行除法运算,语法“数值 / 100”;2、使用“number_format(除法结果, 2)”或“sprintf("%.2f",除法结果)”语句进行四舍五入的处理值,并保留两位小数。

判断方法:1、使用“strtotime("年-月-日")”语句将给定的年月日转换为时间戳格式;2、用“date("z",时间戳)+1”语句计算指定时间戳是一年的第几天。date()返回的天数是从0开始计算的,因此真实天数需要在此基础上加1。

方法:1、用“str_replace(" ","其他字符",$str)”语句,可将nbsp符替换为其他字符;2、用“preg_replace("/(\s|\ \;||\xc2\xa0)/","其他字符",$str)”语句。

php判断有没有小数点的方法:1、使用“strpos(数字字符串,'.')”语法,如果返回小数点在字符串中第一次出现的位置,则有小数点;2、使用“strrpos(数字字符串,'.')”语句,如果返回小数点在字符串中最后一次出现的位置,则有。

在PHP中,可以利用implode()函数的第一个参数来设置没有分隔符,该函数的第一个参数用于规定数组元素之间放置的内容,默认是空字符串,也可将第一个参数设置为空,语法为“implode(数组)”或者“implode("",数组)”。

php字符串有下标。在PHP中,下标不仅可以应用于数组和对象,还可应用于字符串,利用字符串的下标和中括号“[]”可以访问指定索引位置的字符,并对该字符进行读写,语法“字符串名[下标值]”;字符串的下标值(索引值)只能是整数类型,起始值为0。


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

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Dreamweaver Mac version
Visual web development tools

Safe Exam Browser
Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.

Zend Studio 13.0.1
Powerful PHP integrated development environment

SAP NetWeaver Server Adapter for Eclipse
Integrate Eclipse with SAP NetWeaver application server.

SublimeText3 English version
Recommended: Win version, supports code prompts!
