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