问题标签 [magic-function]
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 - 没有__get函数的php,你不能从某些实例中获取值?
自从我的技术书告诉我,我想知道这是不是真的,例如:
好吧,这对我有用,这本书说不是为了在课堂外使用它,它没有创建一个 __get 函数。我有点困惑。
php - Immediate 1-line magic method call on new PHP object
I'd like to immediately call a magic method (__call()
) on a newly constructed object. Example:
Ideal (but gets a parse error):
Working:
Is this possible? I know PHP 5.4 brought immediate 1-line object method calling (http://docs.php.net/manual/en/migration54.new-features.php) so I'm not sure why this isn't working.
php - 如何为对象定义通用方法/捕获所有方法?
在对象成员的相同概念上,我可以定义通用 __get 和 __set。
我如何为方法做同样的事情?
如果你明白我的意思,你非常欢迎编辑我的语言。
powershell - powershell 对象是否有“神奇功能”?
在 PHP 中,如果您需要,可以使用“魔术方法”。__toString()
例如,如果一段代码尝试回显对象,则该方法用于回显特定字符串。这是一个使用 PHP 的示例:
哪个会返回:
Powershell中是否有一个“神奇的功能”可以做到这一点?
python - 交互式 Python:尽管 line_profiler 已正确导入,但无法让 `%lprun` 工作
问题
大多数 iPython “魔术函数”对我来说都很好: %hist
, %time
,%prun
等。但是,我注意到%lprun
iPython 无法找到它,因为我最初安装了它。
尝试解决
然后我发现我应该安装line_profiler
模块。我已经安装了这个模块,但似乎仍然无法让魔法功能正常工作。如果我尝试调用%lprun
,iPython 仍然找不到该函数。如果我用全名(line_profiler.magic_lprun
)调用它,可以找到该函数,但我根本无法让它工作。下面是我所做的一个例子(这是从“Python for Data Analysis”一书中逐步完成的):
成功使用%prun
[在:]
正如预期的那样,我得到了一个很好的答案:
[出去:]
我可以做分析魔术功能%prun
:
[在:]
[出去:]
使用失败%lprun
但是当我尝试时%lprun
,我什么也得不到:
[在:]
[出去:]
如果我尝试使用其标准名称调用该函数,它也不起作用:
[在:]
[出去:]
但是该库已正确导入,或者至少它是这样说的:
[在:]
[出去:]
[在:]
[出去:]
似乎我应该配置一些额外的东西,以便可以识别我添加的这些新魔法功能。我无法通过网络搜索找到任何东西。
我将 Spyder 作为 IDE 运行(仍然使用 iPython 作为控制台),但我也直接使用 iPython 和 iPython notebook 进行了尝试。我没有任何形式的运气。
php - __call() 魔术函数在 PHP 中是如何工作的?
我有一个名为 $obj 的对象。我已经覆盖了__call
该类的函数,因此当我调用时$obj->setVariableName($value)
会发生这种情况:$obj->variableName = $value
. 我不知道$obj->setVariableName($value)
项目中何时以及如何调用。因此,在运行应用程序期间会发生这种情况:
当我编写额外的函数setVariable3
时,它就可以工作了。不知道setVariable3
是怎么调用的,是直接$obj->setVariable3
调用还是用类似的函数调用call_user_func_array
。
什么问题可能__call
不起作用setVariable3
?
更新:现在我知道这setVariable3
是从 a$form->bind($user)
和正在运行的$user->setVariable3('foo')
作品中调用的。(这是一个 ZF2+Doctrine 项目)
php - 将变量传递给 __wakeup()
我将某些对象存储在数据库中。数据库中的每个节点都携带一个序列化对象。节点可以有孩子,因此对象也可以有孩子。因此,我想$children
用包含其直接子级的数组填充对象中的属性。当对象被反序列化时$children
应该被填充。
为了避免从外部这样做,我想我宁愿让对象本身来做。但是,该对象不知道它属于哪个数据库条目。因此,当__wakeup()
被调用时,对象缺少加载其自己的相应数据库条目所需的信息。
看起来最好的方法是能够将变量传递给__wakeup()
,尽管我知道它unserialize()
没有提供这样的选项。
我无法找到有关此的任何信息。我正要得出结论,除了使用全局之外,这是不可能的,这不是我选择采取的路线。
是否可以?如果是,如何?
python - Python重载变量赋值
我有一个类定义
现在,当我更改self.content时,我希望self.checksum会自动计算。我想象中的东西会是
有什么神奇的功能吗?还是有任何事件驱动的方法?任何帮助,将不胜感激。
python - 为什么 len() 执行我班级的 __set__ ?
我已经在 Django 中实现了一个自定义模型字段。它是一个图像字段,除了直接分配文件外,还允许分配 URL 字符串以从中加载图像。
一般来说,该领域有效。但出于某种原因,Django 本身在内部为其分配了字符串值。每次使用该字段的模型查询集被过滤时,__set__
都会使用字符串调用,以便触发 except 子句中的 print 语句Error fetching upload/to/50e170bf-61b6-4670-90d1-0369a8f9bdb4.png
。
我可以缩小对django/db/models/query.py
Django 1.7c1 的调用范围。
为什么导致我的字段__set__
被执行的行?我可以验证输入值是一个有效的 URL 来解决这个问题,但我想先知道原因。
php - PHP:无法定位正在使用的函数(似乎没有定义)
我在看别人的代码。有类调用诸如GetSku()
,WriteOrder($order)
等函数,但我无法找到这些函数的位置。我已经检查过……</p>
- 其他脚本或类包含:未定义显式或魔术函数 (
__call
) grep -rHn "n *GetSku" /path/to/codebase
: 什么都不返回- Sublime 的 cTags: 没有找到
- 原开发者知识库:我发邮件请求他返回错误
这些神秘的功能,字面意思就是……</p>
什么可以定义并且它们起作用?以某种方式自定义魔术功能?某种动态功能?我像一只拿着 iPhone 的猴子一样挠头。