PHP类函数内部函数?

PHP类函数内部函数?,php,Php,我正在自学PHP语言。我主要关注最新的PHP OOP语言 我搜索一些“准备安装”的PHP软件,当我扫描一些参考资料以搜索和了解时,我看到了一行代码,其结构如下(不记得了,所以我将创建自己的): 所以我的问题是,我如何复制上面的代码?我不知道这行代码(我想是对象吧?) 大概是这样的: $newLogin->search($uid)->setLogin($dateToday); 像那样。我真的需要这样做,这样我才能组织我的编码结构。顺便说一下,谢谢 还有最后一个问题,这可能吗?您试图实

我正在自学PHP语言。我主要关注最新的PHP OOP语言

我搜索一些“准备安装”的PHP软件,当我扫描一些参考资料以搜索和了解时,我看到了一行代码,其结构如下(不记得了,所以我将创建自己的):

所以我的问题是,我如何复制上面的代码?我不知道这行代码(我想是对象吧?)

大概是这样的:

$newLogin->search($uid)->setLogin($dateToday);
像那样。我真的需要这样做,这样我才能组织我的编码结构。顺便说一下,谢谢


还有最后一个问题,这可能吗?

您试图实现的就是方法链接。您可以通过以下方式获得此信息:

<?php
class TestClass {
    private $val = '';

    public function test1($val) {
        $this->val = $val;
        return $this;
    }
    public function test2() {
        echo 'Hello '.$this->val;
    }
}

$test->test1('World')->test2(); // Hello World
您可以阅读更多内容

这是方法链接

见下面的代码:

class T {
    public function test() {
        // do something

        return $this;
    }
}

$x = new T;
$x->test()->test();

这里有一个相当直接的方法来看待它,使用

试一试:

注意,由于
字符串
类型提示,下面需要PHP7。去掉它,我相信它在5.6中应该可以正常工作

<?php

$myapp = new MyApp(new SettingsBag([
    'works' => false, 
    'random' => rand(),
]));

var_dump($myapp->settings()->get('random'));

var_dump($myapp->settings()->get('works'));

// Let's change it up...
$myapp->settings()->set('works', true);

// Now it should be true.
var_dump($myapp->settings()->get('works'));

这与“灵活的PHP URL”有什么关系?这是一个关于OOP.Oops的问题。让我换个标题。很抱歉。这并不是一个清晰、可回答的问题。我建议您浏览一下Symfony的网站,看看您试图在实践中学习的一些组件化技术。您所展示的似乎是“设置”对象上的标准getter和setter。如果您正在自学PHP并专注于它的OO部分,那么也许您应该先阅读一些关于它的内容。然后代码变得非常清晰。这就是我要找的。谢谢@Sebastian Brosch!太神了我会把这个记在笔记里。“方法链接”。这对我帮助很大。我现在想起来,实际上并没有看到方法链接。OP只是将结果注入到
$myapp
上的方法调用中。如果有什么不同的话,
$this->settings
是对通过
$myapp
获得的另一个对象的引用,但是我没有看到这样的例子:
$myapp->settings->setValue('a',1)->getValue('b')
<?php

$myapp = new MyApp(new SettingsBag([
    'works' => false, 
    'random' => rand(),
]));

var_dump($myapp->settings()->get('random'));

var_dump($myapp->settings()->get('works'));

// Let's change it up...
$myapp->settings()->set('works', true);

// Now it should be true.
var_dump($myapp->settings()->get('works'));
class MyApp {

    private $settings_bag = null;

    function __construct(SettingsBag $settings_bag) 
    {
        $this->settings_bag = $settings_bag;
    }

    public function settings()
    {
        return $this->settings_bag;
    }

}

class SettingsBag {

    private $settings = null;

    function __construct(array $settings = [])
    {
        $this->settings = $settings;
    }

    public function set(string $key, $value)
    {
        return $this->settings[$key] = $value;
    }

    public function get(string $key)
    {
        return $this->settings[$key];
    }

}