PHP:通过 Parent::method() 与 $this->method() 从子类调用方法的差异

2023-11-25

假设我有一个家长班

class parentClass {
    public function myMethod() {
        echo "parent - myMethod was called.";
    }
}

和下面的子班

class childClass extends parentClass {
    public function callThroughColons() {
        parent::myMethod();
    }
    public function callThroughArrow() {
        $this->myMethod();
    }
}

$myVar = new childClass();
$myVar->callThroughColons();
$myVar->callThroughArrow();

使用两种不同的方法从继承类中调用 myMethod() 有什么区别? 我能想到的唯一区别是 childClass 用他自己的版本重写 myMethod() ,但是还有其他显着差异吗?

我认为双冒号运算符 (::) 应该仅用于调用静态方法,但在调用 $myVar->callThroughColons() 时我没有收到任何警告,即使 E_STRICT 和 E_ALL 打开。这是为什么?

谢谢。


在这种情况下,这没有什么区别。它does如果父类和子类都实现了,就会有所不同myMethod。在这种情况下,$this->myMethod()调用当前类的实现,同时parent::myMethod()显式调用父级方法的实现。parent::是这种特殊调用的特殊语法,它与静态调用无关。它可以说是丑陋的和/或令人困惑的。

See https://stackoverflow.com/a/13875728/476.

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

PHP:通过 Parent::method() 与 $this->method() 从子类调用方法的差异 的相关文章

  • 显式删除会话cookie会产生什么影响?

    我使用 php session 来维护用户的会话 Session 在登录后创建 在注销或超时后销毁 我需要管理面板中的一个选项来强制注销任何用户 如果他在网站上处于活动状态 我怎样才能做到这一点 我正在考虑删除临时会话文件 这应该有效地破坏
  • 合并 url 中的 2 个输入值

    我有这样的形式
  • Doctrine DQL 从 join 返回平面数组

    我通过 DQL 中的常规 LEFT JOIN 选择 3 个实体 它们通过连接表关联 连接表还定义了实体以及带注释的关系 查询执行没有问题 但我的结果作为平面数组返回 我期望一个包含三个实体作为每个索引的数组元素的数组 SELECT e1 e
  • 如何在 Carbon Laravel 中添加日期和另一个日期?

    在我的 laravel 项目中 我想将日期时间增加到前一个日期时间 这是我的代码 expire order 0 gt expire date new Carbon now gt addMonths 6 这两行的结果是 2018 01 28
  • 如何在数据列表 HTML PHP 中设置选择

    您好我想知道是否有一种方法可以在数据列表中设置选定的值 我想要这样的东西
  • PHP 从命令行启动 gui 程序,但 apache 不启动

    首先 我阅读了有类似问题的人的一些帖子 但所有答案都没有超出导出 DISPLAY 0 0 和 xauth cookies 这是我的问题 提前感谢您的宝贵时间 我开发了一个小库 它使用 OpenGL 和 GLSL 渲染货架 过去几天我将它包装
  • PHP:将多字节字符串(单词)拆分为单独的字符

    尝试使用 mb split 将这个字符串 主楼怎么走 分割成单独的字符 我需要一个数组 但没有成功 有什么建议吗 谢谢你 例如 尝试使用带有 u 选项的正则表达式 chars preg split u string 1 PREG SPLIT
  • 在laravel中组合两个不同的无关系数据库表查询进行分页

    我的数据库中有两个不相关的表 我需要将它们合并 以便我可以将其放在我的搜索视图中 但我不知道是否可能 这是我的代码 这news and season表不相关 但它们具有相似的列 我试图将其放入一个对象中以便于分页 是否可以 search r
  • file_get_contents 大文件上传

    我正在尝试使用 fsockopen 上传 2GB 以上的大文件 但 file get content 出现以下错误 我无法在内存中存储大文件 我需要分块发送数据 但不知道如何执行此操作 请问有人可以指导我吗 致命错误 允许的内存大小 134
  • Zend Framework 中的动态默认模块

    有谁知道在 Zend Framework 中动态设置默认模块并且不会遇到命名空间问题的方法 例如 我想要做的是有一个允许加载的模块表 其中一个设置为默认模块 例如 我可能有 admin blog calendar 作为可以加载的模块 如果我
  • yii2 中的自动完成

    在 Yii2 中 我希望当用户开始输入时 我的输入字段之一能够自动完成 下面是我的代码 它使用Jui Autocomplete 这是行不通的 当我打印我的数组时 我就像 Array 1 gt abc 2 gt xyz 4 gt pqr
  • 使(文本到图像)图像具有一定的宽度但无限的长度?

    我有下面的代码 可以用大量文本生成图像 我希望该图像的宽度为 700 像素 我还希望它保留字符串所具有的段落结构 该字符串来自 MySQL 数据库 我怎样才能实现这一点 font 2 width imagefontwidth font st
  • PHP LDAP 查询获取特定安全组的成员

    我正在努力让 LDAP 查询工作来为我提供安全组的成员 我们的活动目录结构设置为 DC domain DC co dc uk然后 我们有一个名为 公司用户 的 OU 其中有一个用于 IT 和标准的 OU 在这些中我们创建了用户 所以我被设置
  • 使用 file_get_content 发布数据

    我已经做了一些关于如何使用的研究file get content与帖子 我也读过this one https stackoverflow com questions 2445276 how to post data in php using
  • 使用 PHP 中的 GD 库在图像上绘图

    我创建了一个代码来生成随机图案图像 它创建一个具有给定宽度和高度的图像 并用 40x40 像素的小矩形填充它 这是我的代码
  • 通过身份验证保护 CodeIgniter 2 应用程序的正确方法是什么?

    I have Ion Auth http benedmunds com ion auth 正确安装并在我的服务器上运行 我也有默认的代码点火器2 新闻 教程在同一个 CI 安装中工作 我只是在玩 并对使用身份验证系统 封闭 或保护整个应用程
  • 为什么这评估为 true

    为什么这评估结果为真
  • 点击 %40 变为 %2540

    当单击包含 符号的链接时 该网址给我 40 这就是我想要的 但是一旦我点击它 一秒钟后它就在我点击后变成了 2540 单击是在电子邮件内 然后定向到网站 其中 40 更改为 2540 我怎样才能让它停止变化 它现在得到这样的参数 email
  • 使用 ImageMagick (PHP) 将 2 个图像并排合并为 1 个图像

    我认为这是一件容易的事 我有 2 张图片 JPG 我希望它们合并成一张图片 其中 2 张图片并排 所以我有图片 A 和图片 B 我想要图片 AB 并排 两个图像具有相同的宽度和高度 在本例中 宽度 200px 高度 300px 但是第二个图
  • 禁用 WooCommerce 手动/编辑订单的电子邮件通知

    需要 WooCommerce 专业知识 我需要禁用手动创建的订单的电子邮件通知 我必须使用处理状态 由于处理订单状态的自定义挂钩 我无法创建自定义状态 理想情况下 手动订单页面中可以勾选一个复选框 勾选后 它将禁止在每种状态下向客户发送电子

随机推荐

  • 如何在 SimCity 5 中实现建筑物在移动时摆动的物理效果?

    用纯文字很难描述 所以我录了一个GIF来演示 https public lightpic info image 2B1F 582465841 gif 我目前正在做一个项目 需要这样的效果 目前我已经用SpriteKit在iOS上完成了类似的
  • NGINX 透明 TCP 代理

    我有一个 ELK 堆栈 在两台 Logstash 主机前面 我设置了两个 NGINX 负载均衡器作为透明代理 UDP 流量正在发挥作用 TCP 与配置一起工作 stream upstream syslog server sapvmlogst
  • 如何使用 jQuery 模板设置日期/时间格式?

    我刚刚开始使用jQuery 模板作为我的 javascript 模板引擎 我的问题是 如何将日期 从 ASP NET Json ActionResult 返回 格式化为以下形式 Date 1288709830000 我尝试执行以下操作 fo
  • 优化Java中字符串集合的内存使用

    我有大量的名称 值对 大约 100k 我需要将它们存储在某种缓存 例如哈希映射 中 其中值是平均大小约为 30k 字节的字符串 现在我知道一个事实 即大量值具有完全相同的字符串数据 为了避免多次分配相同的字符串数据 我想以某种方式重用以前分
  • Android - ImageView 内的画布绘制线

    我有一个 ImageView 我想在其中画一条线 我已经做了以下操作 mImagenCampo ImageView findViewById R id imagen campo crearPunto mArea9M mPaloIzq v g
  • 如何在Android SQLite中使用TRIGGER

    我的数据库中有两个表 表一有姓名和房间号栏 表二有房间号和时间栏 现在 当删除或添加第一列中的房间号时 我的第二个表也应该更新 我认为这可以通过 TRIGGER 命令实现 但我不太确定如何使用它 一般来说我的创建数据库语句是这样的 priv
  • 获取年份中的季度开始日期和结束日期

    我正在使用 SQL Server 2008 我想获取一年中所有季度的开始日期和结束日期 例如 如果我在查询中传递 2013 那么输出应该像 StartDate EndDate QuarterNo 2013 04 01 00 00 00 00
  • 未使用 MetadataType 加载元数据

    我有一些问题 疑问元数据类型 我有 DLL 帮助程序项目 用于使用 LinqToSQL 从 MS SQL Server 访问数据 我还需要为生成的类 ClientInfoView 添加元数据 我是按照以下方式完成的 using System
  • 如何识别程序集是使用 .NET 4.5(而不是 .NET 4.0)编译的?

    我有一些构建代理通过 TeamCity 设置为我们构建 NET 代码 我开始怀疑 尽管有项目设置 它们是否仍在输出 NET 4 5 构建的程序集 我的怀疑来自于这样一个事实 我不知道 Windows 2012 Server 是否附带了开箱即
  • 在 ViewPager 内部设计 Horizo​​ntalScrollView 或使用片段:

    我需要设计以下屏幕 需要您的建议 解释 标题是静态 固定的 我不需要对它做任何事情 Yellow 这是有趣的部分 我需要设计一个ViewPager类似于能够向左 向右滚动最多 4 个屏幕的屏幕 Red 在每个屏幕中 我需要添加一个表格 网格
  • 更改选项卡时如何隐藏软键盘?

    编辑 看来我没有说清楚 我需要的是一种每当我替换所在片段时隐藏软键盘的方法 我该如何去做呢 让我保持简单 我在 Tab Fragment 1 2 中有一个 EditText 框 按下时它显然会打开软键盘 当选项卡更改时如何隐藏它 我在 on
  • Android,对话框中的SeekBar

    我想在我的应用程序中使用带有搜索栏的对话框 但我真的不知道该怎么做 因为我缺乏 Android 经验 因此 当您按下按钮时 应该出现一个带有搜索栏的对话框 用户可以输入一个值 然后按 确定 按钮 我现在的代码是developer andro
  • Class.getResource() 返回 null

    我试图在 JPanel 上显示图片 但我不断收到错误 java lang IllegalArgumentException 输入 null 我不明白发生了什么事 这是我正在使用的代码 public void actionPerformed
  • 如何将桌面图标设置为C# Windows窗体[重复]

    这个问题在这里已经有答案了 我已经调试了 C WinForm exe 将其复制到桌面并想将其分发给其他人 如何为此 exe 设置 ico 以便桌面图标自动出现在计算机上 该计算机也会下载它 而无需进行任何调整 在 Visual Studio
  • 根据列对二维 int 数组进行排序的过程

    我之前拥有的数组以及排序后我们想要的数组 Before Box Weight Priority 1 50 5 2 30 8 3 90 6 4 20 7 5 80 9 After Box Weight Priority 3 90 6 5 80
  • 我如何知道故障转储的 CLR 版本?

    我有一个 NET 应用程序崩溃的小型转储 有没有办法使用 Windbg 或其他工具了解故障机器 生成故障转储 的 CLR 版本 例如 mscorwks dll 的版本 在 WinDbg 中 最简单的方法是使用 eeversion命令 但如果
  • Callable 基类无效?

    有人可以解释为什么继承自非参数化和参数化Callable from typing import Callable from typing import NoReturn from typing import TypeVar T TypeVa
  • 将选项传递给 chrome 驱动程序 selenium

    我正在尝试禁用 chrome 控制台的输出 如果我通过 start maximized 选项 它就可以正常工作 我可能命令错误 DesiredCapabilities capabilities DesiredCapabilities chr
  • 无法更新到 com.google.gms:google-services:4.2.0

    启动时谷歌服务版本 是classpath com google gms google services 4 1 0 但是当我将其更改为4 2 0错误发生在Sync Project with Gradle files 我的顶级等级 Top l
  • PHP:通过 Parent::method() 与 $this->method() 从子类调用方法的差异

    假设我有一个家长班 class parentClass public function myMethod echo parent myMethod was called 和下面的子班 class childClass extends par