本文目录
一、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、网址:
http://psr.phphub.org/
在学习的php的路上,如果你觉得本文对你有所帮助的话,那就请关注点赞评论三连吧,谢谢,你的肯定是我写博的另一个支持。