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
我正在研究 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