gpt4 book ai didi

php - 我什么时候/应该在 PHP 中使用 __construct()、__get()、__set() 和 __call()?

转载 作者:可可西里 更新时间:2023-10-31 22:43:31 24 4
gpt4 key购买 nike

A similar question discusses __construct ,但我将其保留在我的标题中,以供搜索找到此内容的人使用。

显然,__get 和 __set 接受一个参数,该参数是正在获取或设置的变量。但是,您必须知道变量名称(例如,知道此人的年龄是 $age 而不是 $myAge)。因此,如果您必须知道变量名,我不明白这一点,尤其是当您使用您不熟悉的代码(例如库)时。

我找到了一些解释 __get() 的页面, __set() , 和 __call() ,但我仍然不明白为什么或什么时候它们有用。

最佳答案

This page可能会有用。 (请注意,您说的是不正确的 - __set() 将变量名称和值作为参数。__get() 仅采用变量名称).

__get()__set() 在您希望提供对变量的通用访问的库函数中很有用。例如,在 ActiveRecord 类中,您可能希望人们能够将数据库字段作为对象属性进行访问。例如,在 Kohana PHP 框架中,您可能会使用:

$user = ORM::factory('user', 1);
$email = $user->email_address;

这是通过使用 __get()__set() 完成的。

使用 __call() 可以完成类似的事情,即您可以检测何时有人调用 getProperty() 和 setProperty() 并进行相应处理。

关于php - 我什么时候/应该在 PHP 中使用 __construct()、__get()、__set() 和 __call()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/250616/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com