小编hve*_*ous的帖子

Doctrine php7 +类型提示,代理声明错误

我经常遇到这个奇怪的错误

  Warning: Declaration of Proxies\__CG__\AppBundle\Entity\MyEntity::setName(string $name): 
  AppBundle\Entity\MyEntity should be compatible with AppBundle\Entity\MyEntity::setName(?string $name): 
  AppBundle\Entity\MyEntity
Run Code Online (Sandbox Code Playgroud)

为什么发生这种情况?为什么我没有

public function setName(?string $name): self
{
    $this->name = $name;

    return $this;
}
Run Code Online (Sandbox Code Playgroud)

作为我的二传手?如果我删除'?',它可以工作,但我确实需要它用于其他目的

symfony doctrine-orm php-7 php-7.1

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

PHP 中 readline 与 fread/fgets 的区别

我以前一直readline在控制台命令中使用,但今天我遇到了freadfgets函数,我的问题是:使用这两种方法有什么区别:

// first
$inputLine = readline();

// second
$inputLine = fgets(STDIN);
Run Code Online (Sandbox Code Playgroud)

他们的做法几乎相同,不是吗?

php io fgets readline fread

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

在析构函数方法中抛出异常

我找不到可靠的来源,以确保我能够在内部抛出异常__destruct().

这就是php文档所说的

尝试从析构函数中抛出异常(在脚本终止时调用)会导致致命错误.

但是当我测试它时

class A 
{
    public function __destruct()
    {
       throw new \Exception();
    }
}

try {
    $a = new A();

} catch(\Exception $x) {
    var_dump($x);
}
Run Code Online (Sandbox Code Playgroud)

看来这不是真的.我通常抛出并捕获异常.那么,为什么文档得到这条线?

马克·贝克回答后编辑:

它实际上工作,异常可以抛出并从析构函数中捕获.我仍然不确定为什么文档存在.

php destructor exception

3
推荐指数
1
解决办法
289
查看次数

php 对象类型的类型提示

我在文档中没有找到有关此内容的信息,但它的存在似乎合乎逻辑。如何为返回类型值创建类型提示object?(我说的是任何对象,而不是例如某个对象\DateTime等)

function getParticipant(): ?object
{
   //...
  $x = new Cat(); 
  return $x;
}
Run Code Online (Sandbox Code Playgroud)

它不起作用,真正不公平的是,这print getType($x)会导致object。所以我们有一个object类型,但不能严格地说我们将返回一个object?

你可能会说这真的没有必要,我可以直接写: Cat,但是当我覆盖* @return object|null */他的 PHPDoc 中的方法时,这不是我需要的。

php type-hinting php-7.1

2
推荐指数
1
解决办法
2755
查看次数

shebang被认为是评论的特例吗?

如果我们在语法上指定shell脚本的各个部分,那么shebang应该放在哪里,这是注释的特殊情况吗?

bash shell shebang

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