php - 我如何在 PHP 中访问类实例的父级?

标签 php inheritance function oop instance

我唯一的面向对象编程经验来自 C#,因此 PHP 向我抛出一些曲线球,我需要一些帮助。

我有一个用于所有页面的类,如果您愿意,可以称为“pagebase”。它处理最低级别的 html 结构。该类由其他几个类继承。这些类是站点具有的不同页面类型。现在:我在从继承它的类的实例中设置“页面库”中的变量时遇到问题。在 C# 中,这没有问题,因为类实例的行为就好像它是继承的类一样。

这是我所得到的表示:

页面库.php

<?php
    class pagebase
    {
        var $title = "No title";
        var $body = "<center>No content</center>";

        function setTitle($value) {
            $this->title = $value;
        }

        function setBody($value) {
            $this->title = $value;
        }

        function updateHTML()
        {
            ...
        }

        function drawPage()
        {
            $this->updateHTML();
            echo $this->html;
        }
    }
?>

std_page.php

<?php
    include("includes/pagebase.php");

    class std_page extends pagebase
    {
        function std_page()
        {
            ...
        }

        function updateHTML()
        {
            parent::setBody(
                "
                    <div id=\"main_wrapper\">
                        The page goes here!
                    </div>
                "
            );
        }

        function drawPage()
        {
            $this->updateHTML();
            parent::drawPage();
        }
    }
?>

索引.php

<?php
    include "includes/std_page.php";

    $page = new std_page;
    $page->setTitle("Avesta");

    $page->drawPage();
?>

除此之外,这里最大的问题是什么都行不通。 pagebase 中的值没有改变,即使我没有收到任何错误指示函数未找到或以任何形式、方式或形式运行。

有人请告诉我我做错了什么 - 谢谢

最佳答案

首先,永远不要使用 var 关键字声明您的属性,请使用 publicprivateprotected 定义其可访问性

然后当你想访问子类的属性或方法时,你只需要使用$this关键字。例如 $this->title, $this->setTitle('title')

当您将属性或方法定义为静态时,还有 static 关键字,您使用 :: 运算符调用它。例如,如果您有 public static $title,那么您可以使用 pagebase::$title

访问它

希望它能消除一些困惑。

关于php - 我如何在 PHP 中访问类实例的父级?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3643813/

相关文章:

javascript - 使用 AJAX 将文件名插入数据库

php - 如何使用 laravel Eloquent 地从数组数据更新 sql 中的多行

python - 派生类 __init__ 中的参数多于基类 __init__

C++ 重载解析、用户定义转换和函数模板

function - GHC API : Find all functions (and their types) in scope

php - is_null($var) 和 ($var === null) 有什么区别?

PHP:set_time_limit() 似乎没有任何效果

c++ - 使用引用实现状态模式

C++:虚拟指针的原型(prototype)

python - 如何在不阅读函数代码的情况下检查函数可以接受的可接受参数?