Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHPStorm-找不到内部对象';方法_Php_Class_Oop_Methods_Phpstorm - Fatal编程技术网

PHPStorm-找不到内部对象';方法

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();

我正在研究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杂注以使属性的类可解析

编辑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