首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP魔术方法的实际应用- __get、__set和__call

PHP魔术方法的实际应用- __get、__set和__call
EN

Stack Overflow用户
提问于 2011-05-12 22:46:23
回答 6查看 4.3K关注 0票数 13

我通常尽量避免使用PHP的魔术方法,因为它们似乎混淆了对象的公共接口。也就是说,它们似乎越来越多地被使用,至少在我读过的代码中是这样,所以我不得不问:在什么时候使用它们有什么共识吗?使用这三种神奇方法有什么共同的模式吗?

EN

Stack Overflow用户

发布于 2011-05-12 23:19:14

一种常见的模式是为客户端提供单个句柄,并根据命名约定或配置将调用代理到封装的对象或单例。

代码语言:javascript
复制
class db
{
    static private $instance = null;

    static public function getInstance()
    {
        if( self::$instance == NULL )
            self::$instance = new db;

        return self::$instance;
    }

    function fetch()
    {
        echo "I'm fetching\n";
    }
}

class dataHandler
{
    function __call($name, $argv)
    {
        if( substr($name, 0, 4) == 'data' )
        {
            $fn = substr($name, 4);
            db::getInstance()->$fn($argv);
        }
    }
}

$dh = new dataHandler;
$dh->datafetch('foo', 'bar');

可以使用相同的原则来驱动相同功能的不同后端,而不必更改驱动程序。

票数 0
EN
查看全部 6 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5979830

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档