php_Trait
* Trait Answer
* Trait : 关键字 Trait
* 使用 use
* 我的理解 是为了解决php不能多继承的一个处理方式
* 在使用的时候 可以让两个不相关的类 产生联系
* Trait 如何使用
* 我觉得 有点类似于 thinkPHP中的function.php的作用
* 有点类似于 codeIgniter中的libraries的作用
* 但是有一定的区别
* 在公共的方法里面 都是一些处于独立较强的 比如 : md5加密 手机号码验证 发送短信 curl 等等
* 在Trait里面 可以定义一些成员属性 可以完成特定功能 也可以进行CURD
* 在使用的时候 namespace指定后 直接使用use关键字即可
* 两者的共同点
* 都是在完成指定功能 并且可以被重复调用 减少代码的冗余
*
* 注意点 :
* Trait里面不能有常量
* Trait里面的保护和私有的成员属性 外界不可以调用
* Trait里面方法可以被调用者覆盖,但属性不行,如果Trait中定义了一个属性,如果调用类中也定义这个属性则会报错。 撸过的代码:
trait Answer{
public $a = 1;
private $b = 2;
protected $c = 3; public function begin()
{
return '这是开始';
} public function stop()
{
return '这是停止';
}
} trait Kinose{
public function k_begin()
{
return '这是kinose的开始';
}
public function k_stop()
{
return '这是kinose的停止';
}
} class A{
//写法1:
use Answer,Kinose;
// public $a = 4;
//写法2:
// use Answer;
// use Kinose; //如果重写的话 在调用的时候会直接使用A类中方法 而不是trait里面的
// public function begin()
// {
// return '这是A类的开始';
// }
} $a = new A(); echo $a->begin().'<br>';
echo $a->stop().'<br>';
echo $a->a.'<br>';
echo $a->k_begin().'<br>';
echo $a->k_stop().'<br>'; //echo $a->b.'<br>';
//echo $a->c.'<br>'; /** result
* 这是开始
* 这是停止
* 1
* 这是kinose的开始
* 这是kinose的停止
*/
php_Trait的更多相关文章
随机推荐
- 程序员装B指南(转载)
转自:http://www.oschina.net/question/615783_115390 一.准备工作 "工欲善其事必先利其器." 1.电脑不一定要配置高,但是双屏是必须的 ...
- c# 读取txt文件并分隔
public static List<PostPerson> GetNameByFile() { #region 读取txt文件 var file = File.Open(Environm ...
- iptables 安全
注解:来自某位大神的详解,做个笔记. iptables防火墙简介 Netfilter/Iptables(以下简称Iptables)是unix/linux自带的一款优秀且开放源代码的安全自由的**基于包 ...
- Oracle案例05——ORA-12162: TNS:net service name is incorrectly specified
最近在梳理环境,发现环境真的不是一般的复杂,配置不是一般的乱,刚在梳理环境的时候发现一个库通过conn /as sysdba无法连接,具体处理过程如下: 一.错误信息 [oracle@ ~]$ sql ...
- mysql8采用caching-sha2-password加密
因为搭建docker容器mysql,直接pull mysql latest版本,因为目前mysql的版本已经升级到了8.0. 像我们之前链接mysql的方式,或者说客户端,就不行了. 比如navica ...
- 导出IIS Log列表,导出站点下虚拟目录列表
Add-Type -AssemblyName System.Web import-module webadministration $ip = (gwmi Win32_NetworkAdapterCo ...
- 用CSS写扫描二维码图标
代码如下: <style>.icon{margin:300px;width:30px;height:30px;position:relative}.icon .b{border:2px s ...
- 如何玩转Android远控(androrat)
关于WebView中接口隐患与手机挂马利用的引深 看我是怎样改造Android远程控制工具AndroRat 1.修改布局界面 2.配置默认远程ip和端口 3.LauncherActivity修改为运行 ...
- Unity3D Shaderlab 学习记录
unity3d 定制的表面着色器(Surface Shader)的标准输出结构是这种: struct SurfaceOutput { half3 Albedo; //反射率 half3 Norm ...
- idea中使用maven
转:https://www.cnblogs.com/kagome2014/p/8431064.html 对于新版的IDEA可以直接打开Maven项目,但是对于旧版的IDEA需要使用Maven命令生成项 ...