小编S. *_*sen的帖子

在抽象的PHP类中返回类型“ self”

PHP 7.1

我目前正在尝试制作一个抽象类,以提供和定义并部分实现其子类的功能。

在这里,我使用以下构造:

abstract class Parent {

    public static function fromDB(string $name = '') {
        $instance = new static();
        if (!empty($name)) {
            $instance->setName($name)->read();
        }
        return $instance;
    }

    public abstract function read();

    public abstract function setName(string $name): self;

}
Run Code Online (Sandbox Code Playgroud)

在这里PHP似乎理解setName($name)返回类型为Object的Object Parent,但是PhpStorm指示read()不能在结果上调用,这将是预期的结果。

错误消息:在主题类中找不到引用的方法。

我不确定这是否是PHP或PhpStorm中的错误,或更可能是我不了解自己在做什么...

我已经阅读了“后期静态绑定”和以下部分讨论此问题的问题,但我不知道如何解决此问题:

感谢您的时间和帮助。


编辑:如下所示,我试图在子类中实现:

public function setName(string $name = null): user {...}
Run Code Online (Sandbox Code Playgroud)

这显然不适用于selfreturn,但(IMO应该)使用static,这是被禁止的。

php inheritance late-static-binding phpstorm

5
推荐指数
2
解决办法
2614
查看次数

有没有办法暂时返回命令提示符

如何允许用户“暂停当前管道并返回到命令提示符”,然后在 powershell 脚本中恢复?

我在一篇有关 Powershell 中的用户交互的博客文章中偶然发现了这一行

$suspend = New-Object System.Management.Automation.Host.ChoiceDescription "&Suspend", "Pause the current pipeline and return to the command prompt. Type ""exit"" to resume the pipeline."
Run Code Online (Sandbox Code Playgroud)

这是提示中的一个模拟选项,模仿本机命令(Remove-Item)的外观。你瞧:该命令实际上实现了该行为。进行了快速的 Google 搜索,我没有在脚本中找到实现。

powershell user-interaction command-line-interface

5
推荐指数
1
解决办法
272
查看次数