18php访问者模式
本文参看php 设计模式 之 访问者模式.
<?php //定义元素接口 abstract class User { public function getPoint() { return rand(); //该数据应该由数据库中读取,这里就直接模拟某个值了 } //这里的accept方法用于把访问者引入,在这个方法里,($visitor)访问者可以通过User类获取需要的数据进而进行相应的操作 abstract function accept(UserVisitor $vitor); } //实现元素接口 class VipUser extends User { //这里的getPoint()具体实现就由接口中实现了 //在这里就把当前对象传递给了visitor 访问者, 在访问者类的visitVip方法中就能根据$this获取必要的数据进行相应的操作 public function accept(UserVisitor $vitor) { $vitor->visitVip($this); } } class NormalUser extends User { //同上的getPoint()具体实现就由接口中实现了 //同VipUser类中的accept public function accept(UserVisitor $vitor) { $vitor->visitNormal($this); } } //定义访问者接口 abstract class UserVisitor { //访问者必须要实现的访问不同用户的接口方法 abstract function visitVip(User $user); abstract function visitNormal(User $user); } //积分操作的访问者实现 class PointActVisitor extends UserVisitor { public function visitVip(User $user) { echo 'Vip用户+10分 '; } public function visitNormal(User $user) { echo 'Normal用户+5分'; } } //用户的树形结构 class Users { protected $users; public function addUser(User $user) { $this->users[] = $user; } //让所有的用户都能被访问者访问 public function handleVisitor(UserVisitor $visitor) { foreach($this->users as $user) { $user->accept($visitor); } } } $pointVisitor = new PointActVisitor(); $users = new Users(); $users->addUser(new VipUser()); //添加新用户 $users->addUser(new NormalUser()); $users->addUser(new NormalUser()); $users->handleVisitor($pointVisitor);
以上就介绍了18php访问者模式,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

function是函数的意思,是一段具有特定功能的可重复使用的代码块,是程序的基本组成单元之一,可以接受输入参数,执行特定的操作,并返回结果,其目的是封装一段可重复使用的代码,提高代码的可重用性和可维护性。

每年Apple发布新的iOS和macOS大版本之前,用户都可以提前几个月下载测试版抢先体验一番。由于公众和开发人员都使用该软件,所以苹果公司为两者推出了developer和public版即开发者测试版的公共测试版。iOS的developer版和public版有什么区别呢?从字面上的意思来说,developer版是开发者测试版,public版是公共测试版。developer版和public版面向的对象不同。developer版是苹果公司给开发者测试使用的,需要苹果开发者帐号才可以收到下载并升级,是

在本文中,我们将了解enumerate()函数以及Python中“enumerate()”函数的用途。什么是enumerate()函数?Python的enumerate()函数接受数据集合作为参数并返回一个枚举对象。枚举对象以键值对的形式返回。key是每个item对应的索引,value是items。语法enumerate(iterable,start)参数iterable-传入的数据集合可以作为枚举对象返回,称为iterablestart-顾名思义,枚举对象的起始索引由start定义。如果我们忽

users是电脑中的一个包含用户使用过程中产生的数据、程序内容以及文档、音乐等内容的文件夹。我们打开电脑中的资源管理器,就可以找到users文件夹了,有的电脑中也叫用户文件夹。

MySQL.proc表的作用和功能详解MySQL是一种流行的关系型数据库管理系统,开发者在使用MySQL时常常会涉及到存储过程(StoredProcedure)的创建和管理。而MySQL.proc表则是一个非常重要的系统表,它存储了数据库中所有的存储过程的相关信息,包括存储过程的名称、定义、参数等。在本文中,我们将详细解释MySQL.proc表的作用和功能

在Docker中,挂载目录的权限问题通常可以通过以下方法解决:使用-v参数指定挂载目录时添加权限相关的选项。可以通过在挂载的目录后面添加:ro或:rw来指定挂载目录的权限,分别表示只读和读写权限。例如:dockerrun-v/host/path:/container/path:roimage_name在Dockerfile中定义USER指令来指定容器中运行的用户,以确保容器内部的操作符合权限要求。例如:FROMimage_name#CreateanewuserRUNuseradd-ms/bin/

Vue.use函数的用法和作用Vue是一款流行的前端框架,它提供了许多有用的功能和功能。其中之一就是Vue.use函数,它可以让我们在Vue应用中使用插件。本文将介绍Vue.use函数的用法和作用,并且提供一些代码示例。Vue.use函数的基本用法非常简单,只需在Vue实例化之前调用它,并传入要使用的插件作为参数。下面是一个简单的示例://引入并使用插件

js函数function用法有:1、声明函数;2、调用函数;3、函数参数;4、函数返回值;5、匿名函数;6、函数作为参数;7、函数作用域;8、递归函数。
