gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-31 21:18:16 25 4
gpt4 key购买 nike

我唯一的面向对象编程经验来自 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com