问题标签 [late-static-binding]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
4689 浏览

php - 未定义的类常量'self::STRING'

几天来我一直在为一个完全奇怪的错误而苦苦挣扎:这是场景(请耐心等待):

我有一个“框架”类,我称之为 F。我有一些扩展 F 的简单类,其中一个我称之为 P。

所以我所拥有的是:

当我打电话时,P::Consultar();我得到这个对我来说毫无意义的错误:

Fatal error: Undefined class constant 'self::STRING' in [...]/F.inc.php on line X

其中 X 是 _Tabela() 方法的主体。

因此,我尝试更改变量名称($_tabela)。我尝试通过 get_call_class() 保存类名:

但是得到了同样的错误。

另外,错误消息完全没用,我不是要访问类常量,而是要访问类静态属性!

谷歌搜索错误消息也没有给我任何有用的结果。

编辑:谢谢大家的回答!我发现了问题,它与我正在查看的代码无关。原来P类的定义有错误,所以当我尝试调用static::Consultar时,PHP解析了这个类并抱怨错误!

0 投票
1 回答
106 浏览

php - 后期静态绑定| 无需使用 `static` 关键字修改父类

我有以下父子类。


结果与预期一致,因为 php5.3 支持静态后期绑定,并带有已保留的关键字static

但问题是,我没有对 Parent 类的写访问权限,因此我不能static在调用时使用methode_one,因此它没有执行后期静态绑定。

有什么方法可以访问覆盖方法吗?

父类是一个定义的库,我不能修改它。

出路是修改父类或完全放弃这个想法,但你能提出其他选择吗?

0 投票
2 回答
208 浏览

php - 防止后期静态绑定与来自父函数的静态变量访问

给定以下类层次结构:

生成的输出是以下错误消息:
Fatal error: Cannot access property ChildClass::$_test
有没有办法防止后期静态绑定发生?由于我正在调用未覆盖的父类的函数,因此我觉得应该允许我执行上述操作。

0 投票
3 回答
65 浏览

php - 要求澄清 PHP 中的 OOP 程序

我正在尝试用 PHP 编写以下代码

它不应该返回I am B吗?在oop PHP中,孩子不会覆盖父母吗?谢谢你的澄清。

== 编辑 ==

另外我的问题是静态和实例之间有什么区别,因为在实例中它可以工作:

0 投票
3 回答
4885 浏览

php - 查看父类的子类中是否存在静态属性(后期静态绑定)?

父类中的代码:

这在子类中定义了 $_aReadOnlyDatabaseTables 时有效,但在 $_aReadOnlyDatabaseTables 不存在时会引发错误。我需要先检查这个属性是否存在。

我认为它应该是这样的:

但这会引发语法错误,unexpected ',', expecting T_PAAMAYIM_NEKUDOTAYIM. 使用$this代替static也不起作用,它总是评估为假。

什么是正确的语法?

0 投票
1 回答
130 浏览

php - PHP 后期静态绑定无法正常工作

在 PHP 中编码和使用后期静态绑定时,我发现了一些奇怪的行为。在其父类中创建的子对象static()可以访问其父类的私有方法。

这是一个例子:

输出:

这是正确的行为吗?

0 投票
1 回答
115 浏览

php - 哪个孙子叫我?

说我有这门课

现在,我从 Grandson 类中调用函数,如下所示:

我怎么知道是谁打来的?

0 投票
3 回答
258 浏览

php - PHP Late Static Binding 引用调用类

我有一个正在调用的静态函数,它给出了一个奇怪的错误。下面是一个php代码示例:

此代码导致以下错误:

但是更改static::self::使代码按预期运行。我的印象是在这种情况下使用static::应该有效。

为什么使用会发生此错误static

0 投票
0 回答
101 浏览

php - PHP C 扩展,利用后期静态绑定

我试图弄清楚如何在 PHP C 扩展中使用后期静态绑定,

例如,我想重新创建这个方法:

这怎么可能使用 Zend 引擎?

编辑:

我终于得到了答案(来自http://www.kchodorow.com/blog/2011/08/11/php-extensions-made-eldrich-classes/),在我的创建方法中我有这个:

:) 谢谢。

0 投票
1 回答
101 浏览

php - 继承和 LSB 的 PHP 问题

我遇到以下问题:

简而言之A,定义了一种打印静态消息的方法$_greetings。此消息将使用A::set( classname )它来设置,它也接受包含静态参数的类的名称$_greetings。然后是两个孩子,他们定义了自己的方法say()来使用继承的 static 打招呼hi()。我希望输出是:

但相反,我得到:

我想了解为什么...!?非常感谢那些愿意花时间理解问题的人:)