作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我唯一的面向对象编程经验来自 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
关键字声明您的属性,请使用 public
、private
或 protected 定义其可访问性
。
然后当你想访问子类的属性或方法时,你只需要使用$this
关键字。例如 $this->title
, $this->setTitle('title')
当您将属性或方法定义为静态时,还有 static
关键字,您使用 ::
运算符调用它。例如,如果您有 public static $title
,那么您可以使用 pagebase::$title
希望它能消除一些困惑。
关于php - 我如何在 PHP 中访问类实例的父级?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3643813/
我是一名优秀的程序员,十分优秀!