使用与 Trait 函数相同名称的 PHP 类

2024-02-06

我有以下代码作为示例。

trait sampletrait{
   function hello(){
      echo "hello from trait";
   }
}

class client{
   use sampletrait;

   function hello(){
      echo "hello from class";
      //From within here, how do I call traits hello() function also?
   }
}

我可以详细说明为什么这是必要的,但我想让这个问题保持简单。由于我的特殊情况,从类客户端扩展并不是这里的答案。

是否可以让一个特征与使用它的类具有相同的函数名称,但除了类函数之外还调用特征函数?

目前它只会使用类函数(因为它似乎覆盖了特征)


你可以这样做:

class client{
   use sampletrait {
       hello as protected sampletrait_hello;
   }

   function hello(){
      $this->sampletrait_hello();
      echo "hello from class";
   }
}

编辑 : 哎呀,忘了 $this-> (感谢 JasonBoss)

编辑2: 刚刚对“重命名”特征函数做了一些研究。

如果您重命名一个函数但不覆盖另一个函数(请参阅示例),则这两个函数都将存在(php 7.1.4):

trait T{
    public function f(){
        echo "T";
    }
}

class C{
    use T {
        f as public f2;
    }
}

$c = new C();
$c->f();
$c->f2();

您只能更改可见性:

trait T{
    public function f(){
        echo "T";
    }
}

class C{
    use T {
        f as protected;
    }
}

$c->f();// Won't work
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用与 Trait 函数相同名称的 PHP 类 的相关文章

随机推荐

  • com.sun.faces.config.ConfigureListener 的配置

    我正在审查当前的 JSF 项目 其中web xml配置包含 FacesServlet 配置在 xhtml the com sun faces config ConfigureListener 我正在使用 JSF 2 2 和 Mojarra
  • 控制器未出现在 swagger-ui.html 中

    我使用 Swagger 2 和非 spring boot 我也可以在 Tomcat 上部署我的应用程序并成功运行它 但控制器并没有出现在swagger ui html 只显示带有绿色招摇标题的空白页面 我在这个问题上花了两天时间 你能给我一
  • 具有子例程和函数的 Fortran OpenMP

    免责声明 我很确定这个问题已经在某个地方得到了回答 但我自己和另一个人一直在努力搜索 但没有结果 我有一个看起来像这样的代码 PROGRAM main omp parallel do omp private somestuff shared
  • 手动身份验证时,使用 sessionRegistry 获取登录用户不起作用

    我使用 spring security3 和 spring mvc3 构建一个Web项目 有一个名为index jsp的页面 上面会显示登录用户名和在线用户数 该屏幕的顶部 有2种方式登录系统 从登录页面 使用 j spring secur
  • 如何在 jQuery Mobile 中动态设置“data-collapsed”和“data-theme”?

    我在运行时动态设置 数据主题 和 数据折叠 时遇到问题 我使用了 selector attr data collapsed false and selector attr data theme b 但它不起作用 如何使用 jQuery 或
  • 如何检查 是否成功

    我正在将主题设置添加到我的 js 应用程序中 该应用程序也应该离线工作 所以我必须检查远程样式文件 例如http ajax googleapis com ajax libs jqueryui 1 11 2 themes jquery jqu
  • perl - 从 xml 文件中删除节点

    我有一个 XML 文件 我想读取它 删除一个节点 保存它 我从终端运行 perl perl script pl XML 示例 文件名 xml
  • 使用 d3.js svg ClipPath 不在 Angular 中进行裁剪

    我正在开发一个与以下示例非常相似的图表 http bl ocks org mbostock 1667367 http bl ocks org mbostock 1667367它使用 ClipPath 来剪切区域 以便区域图不会溢出轴 在 A
  • Ruby 中的 Mysql 适配器 ActiveRecord 抛出:“数据包乱序”

    红宝石版本 1 9 1 MySQL版本 5 0 编写的代码是 require rubygems require active record puts 1 class Source lt ActiveRecord Base puts 2 es
  • 从 JSON 嵌套哈希中提取特定字段

    我正在考虑编写一个 Web 应用程序来抓取 API 并以 JSON 形式返回此信息 但是 我只关注一个数字 然后是当前价格 在本示例中为 227 我如何在 Ruby 中访问它 我不知道从哪里开始 我从来没有处理过这样的文字 为了讨论的目的
  • 如何将 json 对象转换为警报框中的字符串? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我想调试我的响应 json 并将其显
  • 向 Angular 4 中的元素添加类

    我试图使用 Angular 4 创建一个图像库 其背后的逻辑是将级联样式表 CSS 类添加到所选图像 该类将在所选 单击的 图像上显示红色边框 这是图片库的 CSS 样式表 我想在我单击的图像上显示红色选择方块 this is a clas
  • 以编程方式旋转 Google 可视化数据表

    我兴奋地这把小提琴 http jsfiddle net asgallant HkjDe 我尝试参考那个小提琴创建相同的类型 我修改后的样本给出在here http jsfiddle net DUn6B 我正在尝试创建一个视图 如下所示 va
  • Python 中的 Selenium PhantomJS 自定义标头

    我想在 python 中向 Selenium PhantomJS 添加 自定义标头 这些是我想添加的标题 headers Accept Accept Encoding gzip deflate sdch Accept Language en
  • 如何检查 R 中的标量?

    我有兴趣识别数字标量 例如 doub lt 3 14 intg lt 8L 我知道这些被视为长度为一的向量 因此 对于任何 R 对象x is is vector x length x 1检查是否正确的方法x是一个标量 length x 1其
  • 使用 Laravel Envoyer 上传特定供应商文件

    我正在尝试使用 Laravel Forge 仅将特定供应商文件上传到我的服务器 原因是因为我编辑了一些依赖项中的代码 现在发生的情况是我网站的某些功能正在破坏 因为当我从 Envoyer 推送到我的服务器时 Envoyer 正在从我的 Gi
  • Python 中阻止 GET 请求的解决方法

    我正在尝试使用 requests 和 beautifulsoup 检索和处理网络搜索的结果 我编写了一些简单的代码来完成这项工作 并且它成功返回 状态 200 但请求的内容只是一条错误消息 对于给您带来的不便 我们深表歉意 但该站点当前不可
  • C 中的移位运算符(<<、>>)是算术运算符还是逻辑运算符?

    在 C 语言中 移位运算符 lt lt gt gt 算术还是逻辑 左移时 算术移位和逻辑移位没有区别 右移时 移位类型取决于被移位的值的类型 作为那些不熟悉差异的读者的背景知识 逻辑 右移 1 位会将所有位向右移动 并用 0 填充最左边的位
  • 在 Perl 中解析时间戳与毫秒

    假设我有一堆时间戳 如 11 05 2010 16 27 26 003 如何在 Perl 中用毫秒解析它们 本质上 我想比较时间戳以查看它们是在特定时间之前还是之后 我尝试使用 Time Local 但似乎 Time Local 只能解析第
  • 使用与 Trait 函数相同名称的 PHP 类

    我有以下代码作为示例 trait sampletrait function hello echo hello from trait class client use sampletrait function hello echo hello