写一个分级的命名空间, 并实现类的自动加载
2. 写一个trait类, 理解它的功能与使用场景
课程笔记:
(第一个视频)
接口常量,就是在接口里面设置一个常量,可以用作配置文件来使用。我们把一些配置参数直接设置在接口里,这样用类实现的时候,就可以直接使用这些参数了。
bindvalue第二个参数可以放数字,bindparam里面第二个参数只能放变量。
可以通过date函数格式化时间戳,将时间戳转换成正常的日期。
(第二个视频)
后期静态绑定:延迟静态绑定。用在静态继承的上下文环境中
静态继承的上下文:就是在子类中继承父类中的静态方法。如果不用后期静态绑定,那么子类的方法返回的还是父类的结果。使用方法是将父类中的self改成static,这样静态方法就会动态的跟他相应的类进行绑定。所以静态类的继承基本都是用static来写。
静态继承的上下文环境中,调用被子类重写的静态方法,使用关键字static来代替掉self。
(第三个视频)
命名空间的分级管理:通过"\"可以把命名空间分级
用use as关键词,可以把一长串命名空间变成一个别名,可以简写长串代码。如果省略了as关键词,那么当前类的别名就是当前类的去掉空间名称的类名。当有可能发生歧义的时候,最好用as来区分类名。
写一个分级的命名空间, 并实现类的自动加载
首先我的三个类的文件目录是这样的
test1就放在最顶部的文件目录,test2放在one文件夹里,test3放在two文件夹里。
test.php的代码如下:
实例
<?php namespace _1010; spl_autoload_register(function ($className){ $path = str_replace('_1010'.'\\',DIRECTORY_SEPARATOR,$className); $path = __DIR__.'/'.$path.'.php'; include $path; }); echo test1::get(); echo '<br>'; echo one\test2::get(); echo '<br>'; echo one\two\test3::get();
运行实例 »
点击 "运行实例" 按钮查看在线实例
test1.php的class返回的是_1010\test1,所以我们str_replace里面要替换的文字要把_1010换掉。最后的结果是这样
写一个trait类, 理解它的功能与使用场景
trait类是夹在父类和子类之间的一个类,可以用来实现子类多继承的功能。trait类不允许实例化,只能被子类继承使用。在子类中用use关键字来将trait类引入进来。
实例
<?php /** * Created by PhpStorm. * User: HuangSzeKit * Date: 2019/10/14 * Time: 1:22 */ namespace _1010; trait sum{ public function sum($a,$b){ return $a.' + '.$b.' = '.($a+$b); } } trait minus{ public function minus($a,$b){ return $a.' - '.$b.' = '.($a-$b); } } class Client{ use sum; use minus; } $test = new Client(); echo $test->sum(3,4); echo '<br>'; echo $test->minus(8,5);
运行实例 »
点击 "运行实例" 按钮查看在线实例