PHPStorm - 找不到内部物体'方法

时间:2015-04-22 01:16:23

标签: php class oop methods phpstorm

我正在研究PHPStorm并将PHP项目从程序代码更改为OOP,但是,当更改为OOP时,PHP似乎没有找到对象的方法,这里是一张图片

problem

我该如何解决这个问题?或者我应该忽略它?

1 个答案:

答案 0 :(得分:3)

那是因为你应该使用

/**
 * @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编译指示以使属性的类可解析。

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

存在db属性
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