PHPStorm - 没有找到内部对象的方法

PHPStorm - not finding inner objects' methods

我正在研究 PHPStorm 并将一个 PHP 项目从过程代码更改为 OOP,但是,当更改为 OOP 时 PHP 似乎找不到对象'方法,上图

我该如何解决这个问题?还是我应该忽略它?

那是因为你应该使用

/**
 * @var RegistrationDB 
 */
var $db;
/**
 * @var Notifier 
 */
var $notifier;

function __construct() {
    $this->db = new RegistrationDB();
    $this->notifier = new Notifier();
}

在构造函数中,

if (!$this->db->hasUser($email)) ... 

当您尝试引用 属性(由 var $db 支持)时。

编辑:添加了 phpdoc pragmas 以呈现 属性 的 class 可解析。

编辑 2:在 php OOP 中,对象的属性由 var 声明。因此,var $db; 意味着 db 属性 存在于 classes 的实例对象

var $db; in class Foo

...

$a = new Foo();
$a->db;  // correct
$a->$db; // very probable runtime error

例如,来自我当前的一个项目:

$clinic = \DAO\clinics::insert( true , 'Funky Clinic inc' , new DateTime('now'));
$clinic->active = true;
$logger->info($clinic);
$clinic->$active = false;  // <- this is line 20 from the stack trace

第三行会将对象正确记录到我的日志文件中,而第 4 行会在控制台中出现以下错误:

> php TestPatient.php 
PHP Fatal error:  Cannot access empty property in /Users/yvesleborg/devel/Shiva/MyClient/HisProject/DAO/SQL/v1.0/TestPatient.php on line 20
PHP Stack trace:
PHP   1. {main}()     /Users/yvesleborg/devel/Shiva/MyClient/HisProject/DAO/SQL/v1.0/TestPatient.php:0