问题标签 [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 - PHP后期静态绑定引用
情况
在我正在构建的这个网络应用程序中,有一个“引导”序列,它定义(通过常量)并启动一个扩展控制器。目前,控制器通过一系列静态变量跟踪将在后期渲染阶段部署的资产(脚本文件、css 等)。我将在这里简化代码,将其视为伪 PHP。
流动
好的,鉴于上述情况,有一个引导程序最终会调用 User_Controller。例如,我只是简单地定义了它们,让您知道脚本将遵循什么状态。
你最终得到的是具有 4 个条目的aryScriptFiles数组,这很好用。
问题
在继续阅读之前,请注意我不想使用魔法方法、全局变量或必须将控制器名称的引用传递给 Helper 函数。
我想尝试删除帮助文件中将当前控制器名称从常量中提取到变量的行。
如果我只是尝试使用以下内容,则通过 Helper 添加的脚本文件是原始Controller 数组的一部分,而不是 Home 控制器。
问题
请我从 SO 社区获得一些意见,您认为解决此问题的最佳方法是考虑到控制器名称会有所不同吗?我在这个练习中的主要目标是:
- 保持视图文件非常简单
- 保持 Helper 文件简单。
- 避免向 Home_Controller 添加任何不必要的代码
我目前认为最好的选择之一是将“资产”托管在一个单独的班级中,只是想知道这是否可能。
谢谢阅读。
php - 哪个更好,用常量还是方法?(继承、静态、Php 或任何 OOP)
一个基类:
它的两个类:
.
那是一种解决方案。它可以重写为:
.
.
哪个版本更好,为什么?
编辑:
我投票给第二个:更短。但有趣的是,它怎么能用 Java 来完成,其中没有常量的后期静态绑定
php - static:: vs. self:: - 有什么缺点吗?
在这个 StackOverflow 问题中,我了解到(在 PHP 中)self::
不支持继承。static::
在类中定义一堆常量时,如果您想在子类中覆盖这些常量以更改默认“行为”,则有必要使用static::
以便父类上引用常量的方法尊重“覆盖”。
自从我提出那个原始问题以来的 2 年里,我已经开始static::
广泛使用,以至于我很少使用,self::
因为self::
这似乎会限制使用常量的类的可扩展性,而static::
没有这个限制。
即使我目前不打算在子类中覆盖一个常量,我最终也会使用static::
,以防万一 - 所以我以后不必做一堆搜索和替换,如果结果证明我将要扩展类并覆盖常量。
但是,在其他人的代码中,我很少看到static::
. 直到 2012 年,我什至都不知道它的存在。那么,为什么在理所当然地使用static::
代替不是一种普遍的做法呢?self::
那么,我的问题是:static::
与self::
? 我在这里使用粗暴的反模式是否有罪?
php - 从抽象父类php取消设置子对象静态变量
我正在使用 Laravel,它是验证器。
我的控制器中有以下代码:
UserCreateValidator 扩展了一个父 Validator 类:
这是基本的 Validator 类:
static::$rules[$key]
in的取消设置ResellerController
不起作用。
我可以在XDEBUG会话中(在执行此行之后)看到as 属性static::$rules['company']
中仍然存在。UserCreateValidator
我认为后期静态绑定应该解决这个问题?怎么了?
php - perl 中的后期静态绑定
是否有任何语法可以在 perl 中指示“后期静态绑定”?在php中,有。 http://php.net/manual/en/language.oop5.late-static-bindings.php
我只是在为 perl 寻找它们。
php - 如何在继承类中延迟静态绑定与 PHP 的变量变量
问题是,假设我们有三个类 A、B 和 C。B 和 C 继承自 A。
由于任何原因,B和C中的id名称不同。B 是 id_B,C 是 id_C。类 A 是一种接口,所以它只知道继承的类 B 和 C 应该有一个变量 $id。A 想将 $id 更新为 1。我想要尝试将 $id_B 和 $id_C 更新为 1。我尝试了几种方法,例如设置如下变量:
但它不起作用。那么有人可以帮我解决这个设计吗?
append - 在sql查询中附加静态变量
我试图在插入过程中使用后期静态绑定概念,但是在编写此语句时出现语法错误:我正在使用 php 版本 5.3.8
late-static-binding - 将后期静态绑定变量与另一个类一起使用
我创建了一个用于编写 sql 查询的类,在该类中我使用了后期静态绑定概念,并且我试图在不同的类中调用它的 insert 方法来插入值,这里是 sqlQuery 类
这是我的第二个类文件,我在其中使用第一类中的插入方法我正在尝试做的事情,使用后期静态绑定从此类中获取表名和列......请帮助我该怎么做......这是我的二等文件
php - 复制后期静态绑定的函数
我试图了解后期静态绑定,并通过阅读几个堆栈溢出问题和手册,除了我不明白为什么,在我找到的所有示例(包括手册)中,方法直接呼应类名在子类中重复。
我的理解是,从另一个类扩展而来的类继承了其父类的所有方法和属性。因此,为什么在后期静态绑定的PHP手册示例中重复了who()方法。我意识到没有它,父类会得到回应,但无法理解为什么。
请参阅手册中的代码...
为什么需要重写 who() 方法,我认为它必须是相同的?提前致谢。
php - trait 中的 static::$property 返回绑定到 trait 而不是类的数据
我想知道static
关键字在特征中返回什么?似乎它被绑定到特征而不是使用它的类。例如:
我可以让它eval()
在method()
方法中使用一些讨厌的东西:
现在它只是将它与它匹配,\My\Namespaced\Class::$returned
但它也很奇怪,因为它检查一个静态属性,$returned
,它是在 trait 开始时定义的,并正确绑定到使用它的类。那为什么不static::$returned
工作呢?
PHP 版本是 5.6.10。