我正在研究PHPStorm并将PHP项目从程序代码更改为OOP,但是,当更改为OOP时,PHP似乎没有找到对象的方法,这里是一张图片
我该如何解决这个问题?或者我应该忽略它?
答案 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