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的更多相关文章
随机推荐
- Ssh 证书验证登录
一般使用 PuTTY 等 SSH 客户端来远程管理 Linux 服务器.但是,一般的密码方式登录,容易有密码被暴力破解的问题.所以,一般我们会将 SSH 的端口设置为默认的 22 以外的端口,或者禁用 ...
- MySQL案例之Timestamp和Datetime
mysql数据库常用的时间类型有timestamp和datetime,两者主要区别是占用存储空间长度不一致.可存储的时间也有限制,但针对不同版本下,timestamp字段类型的设置需要慎重,因为不注意 ...
- IONIC调用原生的等待对话框
ngCordova提供了progressIndicator插件,用以方便的显示等待对话框,但是目前版本仅支持安卓版本.为了让苹果版本也显示,可以到以下地址下载通用的插件,JS部分的代码无需改变: ht ...
- python 面向对象:类,作用域
类(Class)和实例(Instance) 定义类是通过class关键字:class Student(object): pass class后面紧接着是类名,即Student接着是(object),表 ...
- openvpn(上)
VPN概述:(全称Virtual Private Network)虚拟专用网络,是依靠ISP和其他的NSP,在公网中建立专用的数据通信网络的技术,可以为企业之间或者个人与企业之间提供安全的数据传输隧道 ...
- C#检验IIS版本、SQL Server版本、SilverLight版本
之前做一个小项目,使用C#检验这些软件的版本,到处找了一些代码,也能作用,记录一下,以防以后用到. 一.检验IIS版本 public static bool checkIIS(string destV ...
- 如何理解“Unix 里一切都是文件”这句话-在 UNIX 中,一切都是字节流
UNIX 操作系统的设计.用户界面.文化和演变都是建立在它的一套统一的想法和概念上.其中最重要的一点可能是“一切皆文件”,而这个概念被认为是 UNIX 的灵魂之一. 这一关键设计原则提供了一个统一的范 ...
- idea中使用git进行clone、分支切换、pull、push等
转:https://blog.csdn.net/xiaobai__lee/article/details/81081128 https://blog.csdn.net/geng31/article/d ...
- 【bootstrap】插件
1.bootstrap.js 和 bootstrap.min.js 都包含了所有的插件. 2.命名空间:即域:域内成员的有效范围.超出范围就是无效. 3.通过 data 属性 API 就能使用所有的 ...
- n维向量旋转(循环移位)——学习《编程珠玑》
问题: 将一个n元一维向量向左旋转i个位置.例如,当n=8且i=3时,向量abcdefgh旋转为defghabc. 简单的代码使用一个n元的中间向量在n步内完成该工作. 你能否仅使用数十个额外字节的存 ...