为了账号安全,请及时绑定邮箱和手机立即绑定

调用非对象上的成员函数

调用非对象上的成员函数

PHP
心有法竹 2019-05-30 10:59:15
调用非对象上的成员函数因此,我正在重构我的代码以实现更多的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;     }}稍后,我调用set_page_title()函数,如下所示function page_properties($objPortal) {         $objPage->set_page_title($myrow['title']);}当我收到错误消息时:调用非对象上的成员函数set_page_title()那我错过了什么?
查看完整描述

4 回答

?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

这意味着$objPage不是对象的实例。我们能看到您用来初始化变量的代码吗?

正如您所期望的特定对象类型一样,您也可以使用pps类型提示功能博士若要获取逻辑被违反时的错误,请执行以下操作:

function page_properties(PageAtrributes $objPortal) {    
    ...
    $objPage->set_page_title($myrow['title']);}

此功能只接受PageAtrributes对于第一个参数。


查看完整回答
反对 回复 2019-05-30
?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

有一种容易产生此错误的方法:

    $joe = null;
    $joe->anything();

将呈现错误:

致命错误:调用成员函数anything()关于第23行/Applications/XAMPP/xamppfiles/htdocs/casMail/dao/server.php中的非对象

如果PHP只会说,

致命错误:没有定义Joe的调用,因为(A)Joe为NULL或(B)Joe没有定义anything()在线<#>。

通常你要构建你的班级$joe在构造函数或


查看完整回答
反对 回复 2019-05-30
?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

任一$objPage不是实例变量,也不是您正在覆盖的实例变量。$objPage不是类的实例PageAttributes.


查看完整回答
反对 回复 2019-05-30
  • 4 回答
  • 0 关注
  • 810 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信