链接方法 PHP

发布于 2024-09-12 10:34:28 字数 144 浏览 8 评论 0原文

<?php
$sth = Framework::blah()->any_key['any_key_2'];
?>

你好,我想在 blah() 中获取“any_key”和“any_key_2”,我该怎么做?

<?php
$sth = Framework::blah()->any_key['any_key_2'];
?>

Hello, I want to get 'any_key' and 'any_key_2' in blah(), how I do that?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

依 靠 2024-09-19 10:34:28

您使用 Framework::blah()->any_key['any_key_2']; 所做的是:

静态调用 中的方法 blah()框架类。该方法调用必须返回一个对象,您可以通过某种方式从中获取属性 any_keyany_key 的值必须是一个数组或实现 ArrayAccess 的东西。

class Framework
{
    public static function blah()
    {
        return new ArrayObject(
            array('any_key' => array(
                'any_key_2' => 'blablablah')
            ), ArrayObject::ARRAY_AS_PROPS);
    }
}

class Framework {

    public $any_key = array(
        'any_key_2' => 'blahblahblah'
    );

    public static function blah()
    {
        return new self;
    }
}

class Framework
{
    public static function blah()
    {
        $class = new StdClass;
        $class->any_key = new Foo;
        return $class;
    }
}

class Foo implements ArrayAccess
{
    protected $any_key_2 = 'blahblahblah';
    public function offsetGet ($offset){
        return $this->$offset;
    }
    public function offsetSet ($offset, $value){}
    public function offsetUnset ($offset){}
    public function offsetExists ($offset){}
}

What you are doing with Framework::blah()->any_key['any_key_2']; is this:

Statically call the method blah() in the Framework class. The method call has to return an object from which you can get the property any_key somehow. The value of any_key has to be an array or something that implements ArrayAccess.

class Framework
{
    public static function blah()
    {
        return new ArrayObject(
            array('any_key' => array(
                'any_key_2' => 'blablablah')
            ), ArrayObject::ARRAY_AS_PROPS);
    }
}

or

class Framework {

    public $any_key = array(
        'any_key_2' => 'blahblahblah'
    );

    public static function blah()
    {
        return new self;
    }
}

or

class Framework
{
    public static function blah()
    {
        $class = new StdClass;
        $class->any_key = new Foo;
        return $class;
    }
}

class Foo implements ArrayAccess
{
    protected $any_key_2 = 'blahblahblah';
    public function offsetGet ($offset){
        return $this->$offset;
    }
    public function offsetSet ($offset, $value){}
    public function offsetUnset ($offset){}
    public function offsetExists ($offset){}
}
瀞厅☆埖开 2024-09-19 10:34:28

这是不可能的,否则您需要以某种方式将它们作为参数传递给 blah

方法链接中或实现Fluent 接口 是在每个方法中返回对象本身。

That is not possible or you would need to pass these as a parameter to blah in some way.

The key concept that is used in method chaining or when implementing a fluent interface is to return the object itself in every method.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文