【问题标题】:Type Casting of class functions in PHPPHP中类函数的类型转换
【发布时间】:2017-05-17 13:42:09
【问题描述】:

我正在使用 Symfony 和 Doctrine,我需要比较来自 JSON 的对象是否与数据库中的对象具有相同的属性。

所以我做的一切都是正确的,但由于我是 PHP 新手,我无法访问对象的属性,因为我不知道如何将上一行转换为 Product。

$oldProduct = new Product();
$oldProduct = $repo->findBy( array('nom' => $product->getNom()));
$oldProduct->

我尝试添加

$oldProduct = Product::$repo->findBy( array('nom' => $product->getNom()));

但这不起作用

我确定它已经被回答了,但是我找不到关键字来得到类似的问题。

提前致谢

【问题讨论】:

  • 我不太明白你的问题。检查值与类型转换有什么关系?
  • 好吧,我认为自动完成不显示会在编译时给我一个错误,但事实并非如此。

标签: php symfony casting


【解决方案1】:

您可以通过添加强制类型转换:

$oldProduct = $repo->findBy(array('nom' => $product->getNom()));
/* @var Product $oldProduct */
$oldProduct->myAutoCompletedFunction...

或者:

$oldProduct = $repo->findBy(array('nom' => $product->getNom()));
if (!$oldProduct instanceof Product) {
    throw new \LogicException('Old product not found.');
}
$oldProduct->myAutoCompletedFunction...

第二个版本更好,因为它不会对静态分析器发出警告。

PS:请注意,您可以将包含@var 注释的块放在第一行的末尾,而不是单独一行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-12
    • 2014-04-10
    • 2012-08-05
    • 1970-01-01
    • 1970-01-01
    • 2015-08-21
    • 1970-01-01
    相关资源
    最近更新 更多