所以我正在重构我的代码来实现更多的面向对象编程.我设置了一个类来保存页面属性.

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

那我错过了什么?

推荐答案

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

由于您需要特定的对象类型,因此您也可以在违反逻辑时使用PHPs type-hinting featureDocs来获取错误:

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

此函数只接受第一个参数为PageAtrributes.

Php相关问答推荐

Woocommerce显示特定产品的自定义 checkout 字段

PHP和可选函数参数

在Laravel中输出SON时如何将透视表列移动到集合?

使用PHP 7.4在ZipArchive中设置目录mtime

无法使用PHP DomDocument找到IMG元素

将产品类别添加到WooCommerce产品附加信息

在PHP 8.2 Gloogle云引擎上加载大型php文件速度缓慢

如何使用MS Graph PHP SDK V2下载文件

使用与OpenSSL命令行兼容的AES-256-CTR为大型文件创建php代码OpenSSL加密

模仿GUZLE中的curl 工作脚本(分块数据和二进制上传一起)

Laravel 10中的Validator类

WooCommerce中特定付款方式的变更订单预留库存时间

在WooCommercestore 页面上显示库存产品属性的值

显示自定义 Laravel 9 公共属性的错误

Woocommerce API - 图像问题

无法在 Laravel 中实例化抽象类 ProductAbstract

PHP简单地将物品装在盒子里会导致未使用的空间,但还有剩余容量

$_SERVER 超全局变量在 PHP 中是否保证可写?

从 CSV 文件 seeder 数据库时的额外行

如何在 Laravel 中验证多个输入?