问题标签 [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.

0 投票
2 回答
7798 浏览

php - Yii 控制一个控制器下所有动作的神奇方法

突击队需要你的帮助。

我在 Yii 中有一个控制器:

我需要 Yii CController 下的一些魔术方法来控制 /page || 下的所有子请求 页面控制器。

Yii 有可能吗?

谢谢!

0 投票
3 回答
1547 浏览

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,但我仍然对属性与渲染块相关联的位置感到有些困惑。

我想我需要一个图表来保持这个纠结的网络在我的脑海里!

谢谢,
乔纳森

0 投票
2 回答
2566 浏览

php - 可以测试变量是否在 PHP 中是静态的?

是否可以测试变量是否在 PHP 中是静态的?我正在尝试创建一个__get还查看静态变量的魔术方法。我发现property_exists()当变量也是静态时返回 true。但我需要使用::而不是->我期望的?

0 投票
2 回答
104 浏览

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 的人生活得更轻松 :)

谢谢

0 投票
7 回答
1474 浏览

php - 除了代码更少之外,使用 __get/__set 代替传统的 getter/setter 方法是否有优势?

来自 Java,我只有几次假期访问 PHP。看看神奇的 get 和 set 方法,我的(受 Java 影响的)肚子开始疼:看起来你好像在直接访问属性(当然,你实际上是在使用 __get 和 __set)。

所以 - 除了你必须编写的代码更少之外,使用魔法 getter 和 setter 方法而不是传统的 getX()/setX() 方法有什么好处吗?我应该在编码 PHP 时开始使用它们吗?

谢谢,最好的!

0 投票
3 回答
3793 浏览

python - 为什么 Python 没有内置混合 getattr + __getitem__?

我有接受字典或其他对象的方法以及从这些对象中获取的“字段”的名称。如果对象是 dict,则该方法用于__getitem__检索命名键,否则它用于getattr检索命名属性。这在 Web 模板语言中很常见。例如,在Chameleon模板中,您可能有:

如果您foo以 dict 之类的形式传入{'keyname':'bar'},则foo.keyname获取“keyname”键以获取“bar”。Iffoo是一个类的实例,例如:

然后foo.keynamekeyname属性中获取值。Chameleon 本身实现了该功能(在chameleon.py26模块中),如下所示:

我已经在自己的包中实现了它,例如:

问题是,这是一个很常见的模式。我已经在很多模块中看到过这种方法或与之非常相似的方法。那么为什么在语言的核心中没有类似的东西,或者至少在一个核心模块中呢?如果做不到这一点,是否有明确的方式来说明应该如何编写?

0 投票
3 回答
1406 浏览

php - PHP __get __set 方法

使用这些功能有什么意义。

如果我可以使用

为什么我会费心将“吠叫”声明为protected?这种情况下的__get()__set()方法是否有效地公开了“吠叫”?

0 投票
3 回答
413 浏览

php - PHP __callStatic & 无效的方法名称字符

__callStatic()关于PHP 的快速问题;

预期输出:

实际输出:

这种语法是不允许的,也不能用 实现功能__callStatic()

注意:试图摆脱没有临时变量。以下将起作用:

但我试图避免这种情况。

0 投票
4 回答
58951 浏览

python - 使 python 用户定义的类可排序、可散列

在 python 中使用户定义的类可排序和/或可散列时需要覆盖/实现哪些方法?

有哪些注意事项?

dir({})在我的解释器中输入以获取内置字典的方法列表。其中,我假设我需要一些实现一些子集

与 Python2 相比,必须为 Python3 实现哪些方法有区别吗?

0 投票
1 回答
96 浏览

php - 对象归还财产?

我有一个名为 Type 的类:

其中有一个名为的属性$value

我希望当我尝试使用函数时,当我传递对象时,$obj->value将传递 的值。例如:

我已经尝试了很多东西,并且到处搜索,但我似乎找不到这个。甚至可能吗?

提前致谢。:)

编辑:也许你误解了(或缩小了)我的问题。我希望它适用于所有值类型,而不仅仅是字符串类型,包括int floatboolean