一、trait
1.1 trait(原型)
trait为了减少单继承语言单限制,可以在不同层次结构内独立单类中复用类单方法集。 例:
<?php
// 定义原型
trait A {
public function getInfo() {
echo 'getInfo function';
}
}
// 使用原型
class Student {
use A; // 代码复用
}
// 测试
$stu=new Student;
$stu->getInfo();
?>
效果:
1.2 引入多个trait
例:
<?php
// 定义原型
trait A {
public function getInfo() {
echo 'getInfo function<br>';
}
}
// 定义原型
trait B {
public function getInfo2() {
echo 'getInfo1 function<br>';
}
}
// 使用原型
class Student {
use A,B; // 代码复用
}
// 测试
$stu=new Student;
$stu->getInfo();
$stu->getInfo2();
?>
效果:
1.3 trait和继承结合
例:
<?php
// 定义原型
trait A {
public function getInfo() {
echo '这是trait原型<br>';
}
}
class Person {
public function getInfo() {
echo '这是person类<br>';
}
}
// 继承类同时代码复用
class Student extends Person {
use A; // 继承了getInfo,又被A中getInfo覆盖
}
// 测试
$stu=new Student;
$stu->getInfo();
?>
1.4 解决同名冲突
例:
<?php
// 定义原型
trait A {
public function getInfo() {
echo '这是trait原型A<br>';
}
}
trait B {
public function getInfo() {
echo '这是trait原型B<br>';
}
}
// 使用原型
class Student {
use A,B { // 引入a,b的trait,同时解决名称冲突
// 方法一:方法替换
A::getInfo insteadof B; // 将a中的getInfo替换掉b中掉getInfo
// 方法二:改名
B::getInfo as show;
//
}
}
// 测试
$stu=new Student;
$stu->getInfo();
$stu->show();
?>
效果:
1.5 更改权限
例:
<?php
trait A {
private function show() {
echo 'show<br>';
}
}
class Student {
use A {
show as public; // 将show方法权限设为public
show as public show2; // 将show方法权限设为public并改名show2
}
}
$stu=new Student;
$stu->show();
$stu->show2();
?>
效果:
二、迭代器
2.1 遍历数组
手动遍历数组
步骤:
1、复位数组指针 reset()
2、检查指针是否合法
3、获取当前值 current()
4、获取当前键 key()
5、指针下移 next()
代码实现:
<?php
$stu=['tom', 'jack', 'jackson', 'jane'];
reset($stu); // 复位指针
while(key($stu) !== null) { // 键合法
echo key($stu), '-', current($stu), '<br>';
next($stu); // 指针下移
}
?>
效果:
2.2 迭代器
迭代器是php内置的接口 场景:遍历对象,获取的是对象中属性保存的组数
<?php
// 定义类实现迭代器接口
class MyClass implements Iterator {
private $list=array();
public function addStu($name) {
$this->list[]=$name;
}
// 实现接口中的复位方法
public function rewind () {
reset($this->list);
}
// 验证当前指针是否合法
public function valid() {
return key($this->list) !== null;
}
// 获取值
public function current() {
return current($this->list);
}
// 获取键
public function key() {
return key($this->list);
}
// 指针下移
public function next() {
next($this->list);
}
}
// 创建班级
$class=new MyClass();
// 添加学生
$class->addStu('tom');
$class->addStu('berry');
$class->addStu('ketty');
// 遍历班级
foreach($class as $k=>$v) {
echo "{$k}-{$v}<br>";
}
?>
效果:
三、PSR编码规范
3.1 概述
1、PSR是PHP Standard Recomations的简写,由PHP FIG组织制定的PHP规范,是PHP开发的实践标准。 2、目前已表决通过了6套标准,已经得到大部分PHP框架的支持和认可 3、网址:
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!