PHPStorm-找不到内部对象';方法
我正在研究PHPStorm,并将一个PHP项目从过程代码更改为OOP,然而,当更改为OOP时,PHP似乎找不到对象的方法,下面是一张图片PHPStorm-找不到内部对象';方法,php,class,oop,methods,phpstorm,Php,Class,Oop,Methods,Phpstorm,我正在研究PHPStorm,并将一个PHP项目从过程代码更改为OOP,然而,当更改为OOP时,PHP似乎找不到对象的方法,下面是一张图片 我如何解决这个问题?或者我应该忽略它吗?那是因为你应该使用 /** * @var RegistrationDB */ var $db; /** * @var Notifier */ var $notifier; function __construct() { $this->db = new RegistrationDB();
我如何解决这个问题?或者我应该忽略它吗?那是因为你应该使用
/**
* @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$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
不管怎样,重新启动phpstorm似乎能奏效。无论如何,谢谢你,伙计,+1编辑:你能解释一下“$this->$something”和“$this->something”之间的区别吗?好吧,不管是什么解决了这个问题。仍然要注意$this->$something,您可能会在运行时遇到一些非常奇怪的运行时错误。当引用用变量声明的属性时,更喜欢$this->某个东西。我还编辑了我的答案,使类非常明确。@DarkW。。。添加了正确引用对象属性的具体示例。
> 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