问题标签 [magic-methods]
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 - Yii 控制一个控制器下所有动作的神奇方法
突击队需要你的帮助。
我在 Yii 中有一个控制器:
我需要 Yii CController 下的一些魔术方法来控制 /page || 下的所有子请求 页面控制器。
Yii 有可能吗?
谢谢!
php - 图片库表单如何在 Magento Admin 中填充
我可以看到Mage_Adminhtml_Block_Catalog_Product_Helper_Form_Gallery_Content::getImagesJson()
并app\design\adminhtml\default\default\template\catalog\product\helper\gallery.phtml
负责通过Product.Gallery
原型类将图像数据放入浏览器。
但是,我无法追踪图像集合在Mage_Adminhtml_Block_Catalog_Product_Helper_Form_Gallery_Content
块上的设置位置。我假设它是通过控制器或布局中某处的魔法设置器,但我无法追踪它。
Mage_Adminhtml_Block_Catalog_Product_Helper_Form_Gallery_Content::getImagesJson()
拥有
所以有些东西正在填充该element
块的属性。
Mage_Adminhtml_Block_Catalog_Product_Helper_Form_Gallery_Content
似乎被实例化了,Mage_Adminhtml_Block_Catalog_Product_Helper_Form_Gallery::getContentHtml()
但这并没有在块上设置任何属性。
我可以看到它使用与 Javascript 正在寻找Mage_Catalog_Model_Product_Attribute_Backend_Media::afterLoad()
的结构相匹配的数组填充属性Product.Gallery
,但我仍然对属性与渲染块相关联的位置感到有些困惑。
我想我需要一个图表来保持这个纠结的网络在我的脑海里!
谢谢,
乔纳森
php - 可以测试变量是否在 PHP 中是静态的?
是否可以测试变量是否在 PHP 中是静态的?我正在尝试创建一个__get
还查看静态变量的魔术方法。我发现property_exists()
当变量也是静态时返回 true。但我需要使用::
而不是->
我期望的?
php - 魔术 __call 方法的字符串匹配
我有一组名为的方法getThing($what, $extra_args)
(get总是出现在名称中)
...除了正常的称呼方式外,我还希望能够像这样称呼他们:
getWhatThing()
=>return getThing($what, $extra_args);
WhatThing()
=>echo getThing($what, $extra_args);
Thing('what')
=>echo getThing('what', $extra_args);
如果所有这些都失败抛出方法不存在错误......
我怎样才能从内部做到这一点__call()
?我知道我应该避免使用魔法方法,但我想让那些将使用我的 API 的人生活得更轻松 :)
谢谢
php - 除了代码更少之外,使用 __get/__set 代替传统的 getter/setter 方法是否有优势?
来自 Java,我只有几次假期访问 PHP。看看神奇的 get 和 set 方法,我的(受 Java 影响的)肚子开始疼:看起来你好像在直接访问属性(当然,你实际上是在使用 __get 和 __set)。
所以 - 除了你必须编写的代码更少之外,使用魔法 getter 和 setter 方法而不是传统的 getX()/setX() 方法有什么好处吗?我应该在编码 PHP 时开始使用它们吗?
谢谢,最好的!
python - 为什么 Python 没有内置混合 getattr + __getitem__?
我有接受字典或其他对象的方法以及从这些对象中获取的“字段”的名称。如果对象是 dict,则该方法用于__getitem__
检索命名键,否则它用于getattr
检索命名属性。这在 Web 模板语言中很常见。例如,在Chameleon模板中,您可能有:
如果您foo
以 dict 之类的形式传入{'keyname':'bar'}
,则foo.keyname
获取“keyname”键以获取“bar”。Iffoo
是一个类的实例,例如:
然后foo.keyname
从keyname
属性中获取值。Chameleon 本身实现了该功能(在chameleon.py26
模块中),如下所示:
我已经在自己的包中实现了它,例如:
问题是,这是一个很常见的模式。我已经在很多模块中看到过这种方法或与之非常相似的方法。那么为什么在语言的核心中没有类似的东西,或者至少在一个核心模块中呢?如果做不到这一点,是否有明确的方式来说明应该如何编写?
php - PHP __get __set 方法
使用这些功能有什么意义。
如果我可以使用
为什么我会费心将“吠叫”声明为protected
?这种情况下的__get()
和__set()
方法是否有效地公开了“吠叫”?
php - PHP __callStatic & 无效的方法名称字符
__callStatic()
关于PHP 的快速问题;
预期输出:
实际输出:
这种语法是不允许的,也不能用 实现功能__callStatic()
?
注意:试图摆脱没有临时变量。以下将起作用:
但我试图避免这种情况。
python - 使 python 用户定义的类可排序、可散列
在 python 中使用户定义的类可排序和/或可散列时需要覆盖/实现哪些方法?
有哪些注意事项?
我dir({})
在我的解释器中输入以获取内置字典的方法列表。其中,我假设我需要一些实现一些子集
与 Python2 相比,必须为 Python3 实现哪些方法有区别吗?
php - 对象归还财产?
我有一个名为 Type 的类:
其中有一个名为的属性$value
:
我希望当我尝试使用函数时,当我传递对象时,$obj->value
将传递 的值。例如:
我已经尝试了很多东西,并且到处搜索,但我似乎找不到这个。甚至可能吗?
提前致谢。:)
编辑:也许你误解了(或缩小了)我的问题。我希望它适用于所有值类型,而不仅仅是字符串类型,包括int
float
和boolean