php - 限制其他方法上的方法链接

标签 php

假设我有这门课

class Test
{

   method_a(){ return $this;}

   method_b(){ return $this;}

   method_c(){ return $this;}
}

$obj = new Test();
$obj->method_a()->method_b();
$obj->method_a()->method_c();
$obj->method_b()->method_c(); //i want to disallow this

如何禁止 method_b() 与 method_c() 链接

已编辑:

调用 $obj->method_b() 并随后调用 $obj->method_c() 也不允许,因为我只希望 method_b 与 method_a 链接,method_c 与其他方法链接

最佳答案

我能想到两种可能性。第一个是不返回$this来自method_b() 。这将防止链接method_c() - 但其他一切也一样,所以这似乎不是您要找的。

第二个有点难看,但可能会按预期工作:添加另一个私有(private)变量 $last_method到你的类并在每个被调用的方法中设置它(方法名称或某种id)。这样,当调用method_c()时,你可以检查最后调用的方法是否是 method_b() - 如果是这样,抛出一个异常(或者在这种情况下你想做的任何事情)。请注意,此解决方案还会阻止调用 method_b()method_c()在同一个对象上连续而不链接 - 所以这可能不是 100% 您正在寻找的。

关于php - 限制其他方法上的方法链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10160319/

相关文章:

php - 使用 AJAX 发送变量到 2 个 php 页面

php - 表单验证问题

php - 如何在我的登录页面中禁用 "Session Expired in Laravel "?

php - 如何仅使用 Google 云端硬盘的 REST API 检查访问 token 是否有效?

php - 如何将表的行从一个数据库插入到另一个数据库(使用两个 PDO)

php - 计算 sql 结果中的重复项并用 PHP 显示

php - 如何将 ascii/7bit 电子邮件转换为 utf8?

php - 错误 : Every derived table must have its own alias

javascript - HIghcharts 和动态 json

php - 防止直接 url 访问文件