【发布时间】:2015-02-02 10:44:51
【问题描述】:
我有一个容器类:
class ContainerClass {
var $subobj;
var $myName;
function __construct($val, $name)
{
$this->myName = $name;
$this->subobj = new ItemClass ($val);
}
function getItem()
{
return ($this->subobj);
}
}
还有一个班级:
class ItemClass {
var $value;
function __construct($val)
{
$this->value = $val;
}
}
这两个类是一个假设库的成员,只需使用include 调用即可在许多项目中使用。
在我的项目中,我需要做一些具体的展示,所以对于每个项目,我想在不修改库源代码的情况下,添加这样的方法(带有项目特定的内容) :
项目 1
对于ContainerClass:
function getDisplay () {
return ($myName . " : " . $this->subobj->getDisplay());
}
对于ItemClass:
function getDisplay () {
return (/* some display */ $this->value);
}
function getDisplayAlone () {
return (/* some display */"<DIV>" . $this->value . "</DIV>");
}
项目 2
对于容器类:
function getDisplay () {
if ($this->value == 5) return ($myName . " : " . $this->subobj->getDisplay());
return ("No luck !");
}
对于ItemClass:
function getDisplay () {
return (/* some display */"Go to hell !");
}
function getDisplayAlone () {
return (/* some display */"<DIV>What's up doc ?</DIV>");
}
并且能够从每个项目的主 php 文件中调用这些:
include "mylibrary.php";
$obj = new ContainerClass (10, "Me");
$obj->getDisplay();
$obj->getItem()->getDisplayAlone();
我发现了许多向类和对象添加方法的技巧和窍门,但它们要么不适用于 php5,要么不允许在方法中使用 $this,要么根本不起作用。
有人可以帮我实现吗?
【问题讨论】:
标签: php class dynamic methods dynamic-programming