摘要:<?php namespace homework; //trait不能实例化,使用use关键字引入 use one\House; trait demo1 { public function study() { &
<?php namespace homework; //trait不能实例化,使用use关键字引入 use one\House; trait demo1 { public function study() { return '在php中文网学习,收获满满~~'; } } trait demo2 { public function study() { return '我是demo2中的study'; } } class Happy { //引入trait类 use demo1,demo2{ demo1::study insteadof demo2; //demo1中的study替换掉demo2中同名函数, demo2::study as study2;//给demo2中的同名函数起一个别名 } public function work() { return '巩固知识很重要'; } } $happy = new Happy; echo $happy->study(),'<br>'; echo $happy->study2(),'<br>'; echo '<hr>'; //引入外部命名空间 require 'public/User.php'; use model\User; echo User::insert(); echo '<br>'; //引入外部函数 require 'public/func_lib.php'; use function func_lib\delete as del; echo del();
总结:(1)trait特性技术,它实现了代码的复用,扩展了类的功能,就像一个类的小插件,不能实例化,使用use引入类中,实现了代码的复用,当工作在继承的上下文时, 是位于父类和子类之间的,其优先级高于父类,但低于子类,引用的trait类中如果重名了, 可以替换(insteadof)或者取别名(as)。(2)命名空间的使用,它类似与文件目录,在不同 的空间可以使用相同的函数名,可以在一个脚本中声明多个命名空间,这时使用大括号语法: 子空间: namespace 空间名称{//空间代码},全局空间的命名为空: namespace{},在命名 空间中,访问一个函数的时候,会优先在当前空间中查找,如果没有找到,自动到全局空间去查找;使用别名或者引用,导入外部的完全限定名称的空间,使用use关键字,默认从全 局开始,不要再加/,但是还得使用require引入类或者函数。
运行结果:
批改老师:天蓬老师批改时间:2018-12-23 17:00:10
老师总结:作业写的相当不错,总结的也很用心。继续努力,加油