php trait abstract,trait,interface,abstract,PHP7新特性以及PHP闭包学习

1月8日

trait

自PHP5.4.0起,PHP实现了一种代码复用的方法 称为trait

trait 是为 PHP这类单继承语言准备的一种代码复用机制 。trait 为了减少单继承语言的限制,使开发者可以在不同层级中独立的调用 trait中的 方法 trait和类的组合使用,避免了一般类的多继承和混入类(Mixin)相关的典型问题。

trait 类似于一个类

trait 不能被实例化 使用方法

其他类中use,既可单独调用

例子:

trait say{

public function say_word(){

echo ‘word‘;

}

}

class demo{

use say;

public function test(){

echo ‘say‘;

}

}

$obj=new demo();

$obj->demo();

$obj->say_word();

//输出 say word

TP5.1中的jump (success,error )就使用了trait

TP5.1中的controller 类中 使用了 use jump 所以可以直接在继承了controller的方法中直接调用 success,error,redirect等方法

interface 接口类 以及 abstract 抽象类

首先接口类 interface

根据名字来 接口类我的理解就是 多个类的初始化工作

interface 接口类可以指定某个类有哪些实现现,但是不需要方法中的内容,也就是说,方法内部为空。且所有方法必须是公有的。

使用接口类的场景:

定义类的规范,保持统一性

多个平级类都需要使用这些方法,只是实现的方式不一样

接口类的继承使用 implements 关键字

接口类使用规范

属性必须是常量

不能被实例化

方法必须是公共的 public

类必须实现接口的所有方法

一个类可以有多个接口,逗号隔开

接口可以继承接口

接口类对参数要求严格,必须保持一致

例子如下

interface people{

const num=5;

public function hinds(string $words,$num);

}

class demo1 implements people{

public function hinds(string $words, $num){

if($num<10){

$num=self::num;

}

echo $words.‘,‘.$num.‘个人。举起你们的双手‘;

}

}

$demo=new demo1();

$demo->hinds(‘我来了‘,1);

abstract class 抽象类

抽象类 abstract 类似于接口类和实际类之间的一个层

abstract 的作用也是相当于把类中公共的方法剔出来

类似于写一个公共的 class 然后继承

抽象类与接口类的区别

1 interface 需要实现,要用 implements abstract class 需要继承,要用extends

2 一个类可以有多个接口类 但是只能有一个抽象类

3 interface 中每个方法都是抽象方法,每个方法都要实现。abstract 并非所有的方法都是抽象的 ,只有带有abstract 的方法才是抽象的,才是必须要实现的 ,另外补充一句,申明为abstract的方法也不能有函数体。

4 接口类的抽象方法 访问修饰符只能是public 抽象类中可以使用 public 以及protected 修饰符,但是不能使用 private

例子

//抽象类

abstract class base{

protected $cat=‘123‘;

abstract function int();

public function test($num){

return $num.‘个人向我走来‘;

}

}

class done extends base{

private $num=5;

private $name;

public function __construct(){

$this->int();

}

//抽象类中关键字为abstract 必须在子类中实现

public function int(){

echo ‘
‘;

}

public function write(){

return $this->cat.‘是我家猫的名字‘;

}

public function msg(){

return $this->test(5);

}

}

$done=new done();

echo $done->write();

$done1=new done();

echo $done1->msg();

PHP7新特性学习

首先说我自己遇到的坑

foreach 函数

foreach

foreach 在 以前的版本如果循环中改变数组的值 那么数组本身也会改变

也就是说 以前的版本foreach会指向数组的内部指针

7.0是不可以的

PHP新增加项

1:定义方法时可以申明 参数以及返回值类型(string,int,float,bool)

declare(strict_types=0);//标量类型申明模式 必须放在最前面

function test( int $num){

return $num;

}

2 新增操作符 ‘<=>‘

语法 $a=$b<=>$c;

如果 $b>$c $a 为1

如果$b=$c $a 为0

如果$b

3新增操作符 ??

原语法 $id=isset($_GET[‘ID‘])?$_GET[‘ID‘]:0;

现语法 $id=$_GET[‘ID‘]??0;

4:支持常量定义数组

define(‘ARRAY‘,[1,2,3,4]);

5:匿名函数(闭包)

JS中父级函数的参数是可以直接在子函数中直接使用的

PHP是不行的 如果需要使用,要用到关键字use($val)

$content = ‘这里是闭包函数的输出内容‘;

$fnc=function ($callback) use ($content){

$callback($content);

};

function call($content){

// 闭包函数

echo $content;

}

$fnc(‘call‘);

原文:https://www.cnblogs.com/qsAnunnaki/p/10240427.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值