PHP重写父类特征的特征方法

2024-02-07

我使用的是 Laravel 5.1,但这并不是特定于该框架的,它更多的是一个一般的 PHP 问题。

有一个指定了特征的父类:

namespace Illuminate\Foundation\Auth;

use Illuminate\Auth\Authenticatable;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Auth\Passwords\CanResetPassword;
use Illuminate\Foundation\Auth\Access\Authorizable;
use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract;
use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract;
use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract;

class User extends Model implements
  AuthenticatableContract,
  AuthorizableContract,
  CanResetPasswordContract {
    use Authenticatable, Authorizable, CanResetPassword;
}

然后我有我关心的扩展的 User 类:

namespace App\Api\V1\Models;

use Illuminate\Foundation\Auth\User as Authenticatable;
use Zizaco\Entrust\Traits\EntrustUserTrait;

class User extends Authenticatable {
  use EntrustUserTrait {
    EntrustUserTrait::can insteadof \Illuminate\Foundation\Auth\Access\Authorizable;
  }
}

The EntrustUserTrait has a can()与方法相冲突Authorizable特征。但是,那Authorizable特征位于父类上,所以这会引发错误Required Trait wasn't added to App\Api\V1\Models\User.

我四处搜索,有很多关于在子类中声明的重写特征的信息,但我似乎找不到任何关于从父类中重写特征的信息。


考虑以下代码:

<?php    
trait AA {
    function f() { 
        echo "I'm AA::f".PHP_EOL;
    }
}
class A {
    use AA;
}
trait BB {
    function f() { 
        echo "I'm BB::f".PHP_EOL;
    }
}
class B extends A {
    use BB;
}
$b = new B();    
$b->f();

我是BB::f

我相信特征就像复制粘贴代码一样工作。特征代码在其所使用的类中被视为“复制粘贴”代码,因此您可以假装该特征并未真正继承,但它的代码只是父类的一部分。

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

PHP重写父类特征的特征方法 的相关文章

  • 如何在php中关闭夏令时

    我有这行代码将夏令时设置为 打开 将其设置为 关闭 的正确方法是什么 is daylight saving On rcmail config dst active bool date I date I 这是一个大写字母 i 当当前默认时区
  • 压缩 zend Framework 2 的 html 输出

    我目前正在 PHP 5 4 4 上使用 Zend Framework 2 beta 开发个人 web 应用程序以用于自学目的 我想知道是否可以在 html 输出发送到浏览器之前拦截它 以便通过删除所有不必要的空格来缩小它 我怎样才能在ZF2
  • 在会话 cookie 中存储大量数据会产生什么影响?

    谁能解释一下在会话中存储大量数据的缺点或给我指出一些阅读材料 我也很感兴趣在会话中存储数据和从数据文件读取数据之间是否有任何区别 如果您在会话中存储大量数据 则输入 输出性能会下降 因为会有大量读取 写入 默认情况下 PHP 中的会话存储在
  • 在 PHP 中将 CSV 写入不带括号的文件

    是否有本机函数或实体类 库用于将数组写入 CSV 文件中的一行而无需封装 fputcsv将默认为 如果没有为封装参数传入任何内容 谷歌让我失望了 返回一大堆有关的页面的结果 fputcsv PEAR 的库做的事情或多或少与fputcsv 工
  • 使用 PHP 将值插入可编辑 PDF,并保持可编辑状态

    我有一个带有可编辑字段的 PDF 我希望将 HTML 表单中的值传递到此 PDF 中 我尝试过使用 FPDF 并且它有效 但是将值传递到 PDF 后 pdf 中的字段不再可编辑 另一个缺点是 在将值传递到 PDF 时 我们必须为每个字段指定
  • php 如何统计文件夹中的文件数量?

    我想让用户能够在自己的文件夹中上传一些文件 图片 但只有当该文件夹包含的图片少于五张时才可能 如果已经有 5 张图片 脚本必须让用户知道他 她的文件夹已满 所以 我想知道php中是否有函数可以计算文件夹中的文件数量 或者 php 中有其他方
  • Node.js 中的 PHP exit()/die() 等价物是什么

    什么是 PHP die http www php net manual de function die php http www php net manual de function die php 在 Node js 中等效吗 https
  • 将函数中的会话变量传递给 codeigniter 中的助手

    这就是我正在尝试做的事情 这是控制器中的功能 public function get started if test login this gt session gt all userdata this gt load gt view te
  • 如何以编程方式获取 WooCommerce 中的所有产品?

    我想获取 WooCommerce 中的所有产品数据 产品 sku 名称 价格 库存数量 可用性等 我可以使用 wp query 来做到这一点吗 这样你就可以通过 wp query 获取所有产品 global wpdb all product
  • Composer 用于下载私有 GitHub 存储库

    我无法使用 Composer 下载 github 私人存储库 php composer phar update 我收到以下错误 The https api github com repos company private1 https ap
  • 使用日语“Enter”键进行搜索功能

    我在日语方面遇到了问题 我有一个允许用户搜索数据的表单 当用户输入要搜索的字符串并按 Enter 键时 搜索功能就会执行 我的代码是 formSearch input keyup function event var key event c
  • Laravel 5.2 带有可变参数的命名路由用法

    我有这样的路线 Open New Subscription page Route get account subscriptions create menu uses gt Subscriptions SubscriptionControl
  • 未捕获的异常“Google_IO_Exception”,消息为“HTTP 错误:无法连接”

    我有一个任务 查询 运行一些从 gmail 邮箱检索数据的 php 代码 直到上周五 2015 年 4 月 10 日 它一直工作正常 现在我收到以下错误日志 E 11 58 26 094 2015 04 15 200 3 38 KB 14
  • 在 Woocommerce 购物车中设置最小小计金额

    我正在尝试将最低订单金额设置为 25 美元 到目前为止 我找到了这段代码 如果未达到最低限度 它似乎可以阻止结账 但它使用的小计包含税费 我需要在总计中排除税费 add action woocommerce checkout process
  • 如何编写在正文中包含锚标记的 Zend Framework URL?

    使用 Zend Framework 中设置的标准 MVC 我希望能够显示始终具有锚点的页面 现在我只是在 phtml 文件中添加一个带有 anchor 的无意义参数
  • 通过JS Laravel访问存储目录

    有没有办法访问storage目录 该目录已经链接到publicJS 中的目录 我正在尝试制作一个上传图片的表单 验证脚本 if request gt hasFile photos marker gt photos request gt ph
  • php下拉菜单人口

    我正在尝试编写一个 php 脚本 该脚本将根据主下拉菜单的选择填充第二个下拉菜单 我想使用 jquery 来完成所有非页面刷新的事情 但我发现现有的所有东西都很难理解和修改 你知道有什么写得很好且易于理解的东西吗 或者可能是现有的教程 下面
  • 如何在 codeigniter 查询中使用 FIND_IN_SET?

    array array classesID gt 6 this gt db gt select gt from this gt table name gt where array gt order by this gt order by q
  • mysqli bind_param 中的 NULL 是什么类型?

    我正在尝试将参数绑定到 INSERT INTO MySQLi 准备好的语句 如果该变量存在 否则插入 null 然后我知道 type variable i corresponding variable has type integer d
  • “pdo_mysql”已禁用,我无法启用它。我在 iMac 7.1 OSX 10.6.8 上安装了 MAMP v. 3.0.4

    pdo mysql 已禁用 我无法启用它 我在 iMac 7 1 OSX 10 6 8 上安装了 MAMP v 3 0 4 在我的 phpinfo 页面上 我可以看到唯一启用的 PDO 是 sqlite 如果我查看 php 5 5 10 扩

随机推荐

  • 使用 g++ 编译 c++14 代码

    我在 Ubuntu 14 04 LTS 上使用 g 4 8 4 当尝试使用 std c 14 进行编译时 出现以下错误 g error unrecognized command line option std c 14 使用 std c 1
  • 性能监视器 .NET CLR Networking 4.0.0.0 实例命名

    我正在尝试使用性能计数器来确定我的应用程序已发送或接收的字节数 我按照此处找到的建议解决方案进行操作 计算带宽 https stackoverflow com questions 442409 c bandwidth 但我的应用程序实例没有
  • C语言AVL树

    我目前正在做一个需要使用AVL树的项目 我为 avl 编写的插入函数似乎不起作用 它最多适用于 3 或 4 个节点 我将衷心感谢您的帮助 尝试如下 Tree insert Tree t char name 80 int num if t N
  • Android 的 Flutter 签名版本未打开,但所有调试版本都工作正常?

    应用程序的调试版本工作正常 但签名的版本未打开 安装签名版本后 它显示如下 然后无法移动到应用程序的启动屏幕 我尝试了堆栈溢出上可用的所有解决方案 但对于这种情况没有任何作用 None
  • Windows 8 WinRT KeyboardCapability.KeyboardPresent 始终为 true

    我们使用 KeyboardCapability KeyboardPresent 来测试键盘是否连接到设备 bool hasKeyboard new KeyboardCapabilities KeyboardPresent 1 不幸的是 无论
  • 页面加载后 Jquery addClass

    我想知道为什么执行 jQuery 代码addClass页面渲染后的函数 我有一些元素 h1 绝对定位 该元素有规则 left 60 和简单的JS document ready function test find header find h
  • Spring Cloud Gateway 或 Zuul2,哪一个是 Zuul1 的正确替代品?

    由于 Spring Cloud 团队已经放弃了 Zuul 模块的开发 我们正在转向 Spring Cloud Gateway 或 Zuul2 但我相信 Zuul2 需要在架构上进行大量更改 并且需要在微服务上进行重大更改 如果我错了 请纠正
  • 阻止离线 iPhone Web 应用程序在 Safari 中打开链接

    我正在开发一个可以在离线模式下与移动 Safari 配合使用的网站 我可以将其添加到主屏幕上并从那里加载 但是 一旦从主屏幕打开 单击某些链接将跳出应用程序并在移动 safari 中打开 尽管我在所有链接单击上阻止了 Default 该应用
  • 维护一个与上游同步的分支

    我计划根据 github 上的项目添加一些代码 例如添加一些适合我的项目的定制选项 一个想法是分叉并创建一个分支来包含我的所有更改 每当上游有新的更改时 我都会获取它们并将其重新设置到我的分支 假设这些是我的遥控器 git remote v
  • 带有 Maven 子模块的 gradle

    有什么方法可以使用 maven 子模块构建 gradle 项目吗 我在 gradle 中创建了一个项目 但现在我必须添加模块 该模块使用了 Maven 我不知道如何使用它 有什么好的办法吗 我将非常感谢任何建议 将 Maven 项目转换为
  • XmlSerializer 和 System.Drawing.Color 的最佳解决方案

    System Drawing Color 对象显然不会使用 XmlSerializer 进行序列化 xml 序列化颜色的最佳方法是什么 最简单的方法的核心就是使用它 String HtmlColor System Drawing Color
  • 使用 Core Data 按纬度/经度查找最近的位置

    我有一个 iPhone 应用程序 其中包含一个包含位置列表的核心数据数据库 每个位置都有纬度 经度坐标 如何搜索距我当前位置最近的 10 个地点 我是核心数据新手 所以我的问题实际上是如何进行查找 我知道如何获取当前位置等 我相信我需要使用
  • Python垃圾回收如何使用numpy数组追加和删除?

    我正在尝试调整在计时器上更新的绘图代码 matplotlib 的底层结构 从使用 Python 列表绘制数据到使用 numpy 数组 我希望能够尽可能降低绘图的时间步长 并且由于数据可能会达到数千个点 如果不能的话 我就会开始快速浪费宝贵的
  • Android 媒体播放器上用于搜索栏的线程

    如何创建一个线程 每秒检查歌曲位置并根据歌曲位置移动搜索栏 我使用了打击代码 它只播放两首歌 然后它就从我的应用程序中消失了 public class setp implements MediaPlayer OnPreparedListen
  • Xamarin.Forms - 摇篮 FAB

    我想要摇篮浮动操作按钮 按钮必须是动态的 它将是动画的 并且支架必须适应它 就像从材料 io https material io 它必须与 iOS 和 Android 一样工作 XAML 示例 如果可以的话 也许是自定义渲染器 我知道这个功
  • Nodejs:如何克隆对象

    如果我克隆一个数组 我使用cloneArr arr slice 我想知道如何在nodejs中克隆一个对象 对于不需要压缩每一滴性能的实用程序和类 我经常作弊 只使用 JSON 来执行深度复制 function clone a return
  • 我可以使用 Transporter 将 Flutter iOS 应用上传到 App Store 控制台吗?

    我是通过 Flutter 进入移动开发领域的 所以我所有与原生平台和技术的接触都来自于它 到目前为止 我一直按照文档所述分发我的 Flutter 应用程序 使用 Xcode 打开 build ios archive Runner xcarc
  • HTML 画布 - 绘图在调整大小时消失

    我在 HTML canvas 元素中创建了一个基本形状 效果很好 当我调整画布大小时 会出现问题 画布中的所有绘图都会消失 这是正常行为吗 或者是否有一个功能可以用来阻止这个 解决此问题的一种方法可能是在调整画布大小时再次调用绘图函数 但是
  • 使用扩展音频文件服务 (ExtAudioFileRead) 读取音频

    我正在努力理解核心音频 或者更确切地说 扩展音频文件服务 http developer apple com iphone library documentation MusicAudio Reference ExtendedAudioFil
  • PHP重写父类特征的特征方法

    我使用的是 Laravel 5 1 但这并不是特定于该框架的 它更多的是一个一般的 PHP 问题 有一个指定了特征的父类 namespace Illuminate Foundation Auth use Illuminate Auth Au