问题标签 [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 投票
4 回答
11526 浏览

php - 魔术方法是 PHP 中的最佳实践吗?

魔术方法是 PHP 中的最佳实践吗?

0 投票
2 回答
899 浏览

php - 魔术方法 + 反射 API = 无法调查类属性。为什么?

如果我使用魔术方法。使用反射 API 时,我无法调查类属性。为什么会这样?

编辑

什么是反射 API?请不要参考我php.net我不明白..请用你的话指导我

0 投票
1 回答
187 浏览

php - 在类外使用 php 的魔法方法

是否可以在定义的类之外使用 PHP 魔术方法(特别是 __get())?

我想在配置文件中使用它来快速加载。配置文件有一个数组,$config,有很多键。因此,我想重写 __get() 以返回数组中的键。

0 投票
1 回答
1258 浏览

php - 如何使 PHP 的 Magic __set 像自然变量一样工作?

基本上,我想做的是创建一个名为 Variables 的类,它使用会话来存储其中的所有内容,使我能够快速获取和存储需要在整个站点中使用的数据,而无需直接使用会话。

现在,我的代码如下所示:

但是,当我尝试像使用自然变量一样使用它时,例如......

我最终得到“o”而不是“Moo”,因为它将测试设置为“Moo”,完全忽略了数组。我知道我可以通过做来解决它

但我希望能够像使用自然变量一样使用它。这可能吗?

0 投票
5 回答
7017 浏览

php - php 5.1.6 魔术 __toString 方法

在 codeigniter 中,我尝试使用这个插件,这需要我在我的模型中实现一个 toString 方法。我的 toString 方法只是做

在我使用 php 5.3 的本地机器上,一切正常,但在使用 php 5.1.6 的生产服务器上,它显示“Object id#48”,该对象的 name 属性的值应该出现在哪里......我发现了一些关于这里的问题,但我仍然不明白......我该如何解决这个问题?

0 投票
2 回答
818 浏览

python - Python中的魔术方法

我对 Python 有点陌生,我想知道是否有一种方法可以在 PHP 中创建类似魔法方法的东西(http://www.php.net/manual/en/language.oop5.overloading.php#language。 oop5.overloading.methods )

我的目标是简化模型中子类的访问。我基本上有一个有 n 个子类的父类。这些类具有三个值,语言键、翻译键和翻译值。描述了一种通用的翻译处理。父类可以有不同翻译键的翻译,每个翻译键都用不同的语言。例如,键“title”可以翻译成德语和英语,键“description”也可以(等等)

我不想获取子类并通过设置值进行过滤(至少我想要但不是明确地,魔术方法背后的具体实现会这样做)。我想打电话

用于获得德语(de)标题的翻译。

所以必须有一个神奇的方法,它采用被调用方法的名称及其参数(如在 PHP 中)。就我对 Python 的研究而言,这只能通过简单的属性(__getattr__,__setattr__)或直接在类(__getitem__,__setitem__)中设置/获取,这两者都不符合我的需求。

也许有一个解决方案?请帮忙!提前致谢!

0 投票
3 回答
2873 浏览

ruby - Ruby 中的魔法方法?

红宝石爱好者!我正在尝试用 ruby​​ 编写 DSL,我希望能够创建一些魔术方法(不确定这是我想要的最准确的术语)。

我希望能够执行以下操作:

并让它解析为真或假。

本质上,我如何定义函数“包含”,以便它接受一个数组a和一个变量b并执行a.contains?(b),但没有所有相关的 ruby​​ 特定语法?

0 投票
2 回答
108 浏览

php - 在 PHP 中合并类成员

我最近看到Matthew Weier O'Phinney(ZF 项目负责人)的一篇文章,其中包含与此类似的示例代码:

注意传统上四个不同的成员变量是如何合并到一个数组中的。我可以看到干净的构造函数(只有一个参数)的好处,但我怀疑 IDE 是否能够很好地在$_data数组上进行自动完成。

我能想到的另一种选择是使用魔术方法来创建一个带有单个参数四个成员的构造函数。

第二个代码块似乎更好......但是我怀疑我能写出比 O'Phinney 先生更好的代码。处理类成员的最佳方式是什么,同时仍保持与构造函数的干净接口?

0 投票
1 回答
563 浏览

php - 在 Magento 中找不到事件观察器类的函数定义

对于任何看过/使用过 Magento 的人,请告诉我在哪里可以找到目录产品的保存操作的 Event Observer 类的以下 3 个函数定义:-

  1. setBundleOptionsData()
  2. setBundleSelectionsData()
  3. setCanSaveBundleSelections()

请原谅我问了这么愚蠢的问题,但我真的很无奈。任何帮助是极大的赞赏。

最糟糕的是,以上 3 种方法以一种很好的方式用于产品对象,并且它们也可以正常工作。但是它们的定义在哪里?

编辑:-
好的,我可以理解这些是由“Varien_Object”使用的,这些是使用魔术方法概念的简单设置器函数。但是有人可以告诉编码流程是什么,当程序计数器到达这样的功能时,在这种情况下是在事件观察者类中?

0 投票
4 回答
160 浏览

php - 实例化类是否有等效的 __get 魔术方法?

看看是否有任何方法可以实现__get()魔术方法的那种功能,但是在尝试实例化一个新类时。

我的目标是拥有

$foo = new Cat();

最终导致创建一个通用对象,即

new Mammal('Cat');

$foo将是 class 的一个实例,Mammal被调用的类名 ( 'Cat') 作为参数传递给Mammal的构造函数。


注意:对于那些熟悉 Lithium 或 CakePHP 的人,我想到的最终目的是避免必须为每个不同的数据库表定义一大堆类。如果我这样做了,大多数都只是空的,基本的 CRUD 操作就足够了。另外,所有这些包含和类定义对于开销来说都不是很好。我的想法是使用单个“模型”类来处理大多数通用函数,如果我需要为特定数据库表提供更高级的功能,我总是可以创建子类。