问题标签 [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.
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解析了这个类并抱怨错误!
php - 后期静态绑定| 无需使用 `static` 关键字修改父类
我有以下父子类。
结果与预期一致,因为 php5.3 支持静态后期绑定,并带有已保留的关键字static
。
但问题是,我没有对 Parent 类的写访问权限,因此我不能static
在调用时使用methode_one
,因此它没有执行后期静态绑定。
有什么方法可以访问覆盖方法吗?
父类是一个定义的库,我不能修改它。
出路是修改父类或完全放弃这个想法,但你能提出其他选择吗?
php - 防止后期静态绑定与来自父函数的静态变量访问
给定以下类层次结构:
生成的输出是以下错误消息:
Fatal error: Cannot access property ChildClass::$_test
有没有办法防止后期静态绑定发生?由于我正在调用未覆盖的父类的函数,因此我觉得应该允许我执行上述操作。
php - 要求澄清 PHP 中的 OOP 程序
我正在尝试用 PHP 编写以下代码
它不应该返回I am B
吗?在oop PHP中,孩子不会覆盖父母吗?谢谢你的澄清。
== 编辑 ==
另外我的问题是静态和实例之间有什么区别,因为在实例中它可以工作:
php - 查看父类的子类中是否存在静态属性(后期静态绑定)?
父类中的代码:
这在子类中定义了 $_aReadOnlyDatabaseTables 时有效,但在 $_aReadOnlyDatabaseTables 不存在时会引发错误。我需要先检查这个属性是否存在。
我认为它应该是这样的:
但这会引发语法错误,unexpected ',', expecting T_PAAMAYIM_NEKUDOTAYIM
. 使用$this
代替static
也不起作用,它总是评估为假。
什么是正确的语法?
php - PHP 后期静态绑定无法正常工作
在 PHP 中编码和使用后期静态绑定时,我发现了一些奇怪的行为。在其父类中创建的子对象static()
可以访问其父类的私有方法。
这是一个例子:
输出:
这是正确的行为吗?
php - 哪个孙子叫我?
说我有这门课
现在,我从 Grandson 类中调用函数,如下所示:
我怎么知道是谁打来的?
php - PHP Late Static Binding 引用调用类
我有一个正在调用的静态函数,它给出了一个奇怪的错误。下面是一个php代码示例:
此代码导致以下错误:
但是更改static::
为self::
使代码按预期运行。我的印象是在这种情况下使用static::
应该有效。
为什么使用会发生此错误static
?
php - PHP C 扩展,利用后期静态绑定
我试图弄清楚如何在 PHP C 扩展中使用后期静态绑定,
例如,我想重新创建这个方法:
这怎么可能使用 Zend 引擎?
编辑:
我终于得到了答案(来自http://www.kchodorow.com/blog/2011/08/11/php-extensions-made-eldrich-classes/),在我的创建方法中我有这个:
:) 谢谢。
php - 继承和 LSB 的 PHP 问题
我遇到以下问题:
简而言之A
,定义了一种打印静态消息的方法$_greetings
。此消息将使用A::set( classname )
它来设置,它也接受包含静态参数的类的名称$_greetings
。然后是两个孩子,他们定义了自己的方法say()
来使用继承的 static 打招呼hi()
。我希望输出是:
但相反,我得到:
我想了解为什么...!?非常感谢那些愿意花时间理解问题的人:)