如果我不对方法使用 static 关键字,我仍然可以像 php 7.4 中的静态方法一样调用此方法。有谁知道为什么?

if I don't use static keyword with a method still I can call this method like a static method in php 7.4. does anyone know why?

提问人:khalil ahmad 提问时间:10/20/2022 最后编辑:Alive to die - Anantkhalil ahmad 更新时间:10/20/2022 访问量:62

问:

正如我所知道的,我们创建了静态方法,以便在类之外调用它们,而无需实例化它。因此,我们在方法中使用关键字 static,我们可以在作用域解析运算符 '::' 的帮助下调用它们。但令人困惑的是,如果我不将关键字 static 与方法的定义一起使用,我仍然可以将其称为静态方法,而无需实例化类。谁能告诉我这里发生了什么?

php oop 方法 static static-methods

评论

0赞 Alive to die - Anant 10/20/2022
请分享您正在执行的代码,因为您所说的是行不通的: 3v4l.org/bF6VP3v4l.org/pHbpk
0赞 CBroe 10/20/2022
@Anant-Alivetodie 它仅对 7.4.x 版本发出弃用警告,所以也许 OP 只是抑制了这些版本,因此没有看到任何问题?只要所讨论的方法不使用关键字,它实际上可能都按预期工作......但依靠这一点当然是不可推荐的,我认为我们同意这一点。$this
0赞 Alive to die - Anant 10/20/2022
@CBroe是的,同意,即使它发生在 7.4x 版本中,但它给出了一个明确的警告,以及基本思想,就是不要依赖它,因为 Oops 的概念被违反了。
0赞 khalil ahmad 10/20/2022
<?php class MehodTest { public function check(){ echo 'check is Called'; } } //confusion MehodTest::check(); ?> @Anant-Alivetodie 我正在执行这段代码。
0赞 Alive to die - Anant 10/21/2022
@khalilahmad 3v4l.org/Sbbpf..如果运行它,您将在 8 个版本中收到致命错误,该代码在执行时会显示 7 个版本的弃用警告。在旧版本中,您将直接收到严格的标准警告或解析错误。因此,基本思想是解决代码中所有类型的错误,即使它是对未定义索引错误的警告。因此,当你最终这样做时,你必须遵守规则。超越警告等错误并不是一个好主意

答: 暂无答案