所以我正在重构我的代码来实现更多的OOP.我设置了一个类来保存页面属性.
class PageAtrributes
{
private $db_connection;
private $page_title;
public function __construct($db_connection)
{
$this->db_connection = $db_connection;
$this->page_title = '';
}
public function get_page_title()
{
return $this->page_title;
}
public function set_page_title($page_title)
{
$this->page_title = $page_title;
}
}
Run Code Online (Sandbox Code Playgroud)
稍后我会调用set_page_title()函数
function page_properties($objPortal) {
$objPage->set_page_title($myrow['title']);
}
Run Code Online (Sandbox Code Playgroud)
当我这样做时,我收到错误消息:
在非对象上调用成员函数set_page_title()
那我错过了什么?
All*_*nde 44
这意味着它$objPage
不是对象的实例.我们能看到用于初始化变量的代码吗?
正如您所期望的特定对象类型,您还可以使用PHP类型提示功能文档来在违反逻辑时获取错误:
function page_properties(PageAtrributes $objPortal) {
...
$objPage->set_page_title($myrow['title']);
}
Run Code Online (Sandbox Code Playgroud)
此功能仅接受PageAtrributes
第一个参数.
Dav*_*rry 36
有一种简单的方法可以产生这个错误:
$joe = null;
$joe->anything();
Run Code Online (Sandbox Code Playgroud)
将呈现错误:
致命错误:
anything()
在第23行的/Applications/XAMPP/xamppfiles/htdocs/casMail/dao/server.php中调用非对象的成员函数
如果PHP会说,那会好很多,
致命错误:未定义来自Joe的调用,因为(a)joe为null或(b)joe未
anything()
在行中定义<##>.
通常,您构建了类,因此$joe
未在构造函数中定义或
归档时间: |
|
查看次数: |
363799 次 |
最近记录: |