PHP-php 如何继承指定类

发布于 2016-11-10 14:33:51 字数 124 浏览 1252 评论 4

本人写了一个框架,为了灵活性,想继承制定类,
比如:

class A extends $Controller{
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

晚风撩人 2017-07-15 13:26:00

CI 框架中就采用楼上的做法

夜无邪 2017-06-12 00:14:10

php 不支持动态继承 ... 哪怕是 trait 也要在定义类的时候写死 ...

如果你非要实现这个功能只能找替代的办法 ... 简略的写了一下 ... 如下 ...

 <?php
$foo = new foo( new bar );
echo $foo->sayhi();

class DynamicExtends {

private $object;

protected function setParent( $object ) {

$this->object = $object;

return;
}

public function __call( $name, $parameter ) {

return isset( $this->object ) ?
$this->object->$name( $parameter ) : null;

}

}

class foo extends DynamicExtends {

public function __construct( $object ) {

$this->setParent( $object );

}

}

class bar {

public function sayhi() {

return 'Hi Sunyanzi';

}

}

灵芸 2017-04-17 05:45:46

 <?php
class A {
function show() {
echo "this is A";
}
}

class B {
function show() {
echo "this is B";
}
}

// $class = "A";
$class = "B";
eval("class C extends $class {}");

$c = new C();

$c->show();

泛泛之交 2017-01-08 02:39:58

最符合你的方法是使用runkit_class_adopt该函数(需要安装runkit扩展 - beta),该函数可以动态的修改一个类的定义。

Sunyanzi使用组合加模式方法的方式很好,lazyboy使用eval也很好,我另外提供一种蛋疼的方法:

 <?php
class A {
public $a = 1;
}

class B {
public $a = 2;
}

function test($a) {
if ($a) {
class C extends A {
public $c = 3;
}
}
else {
class C extends B {
public $c = 3;
}
}
}

test(false); //test(true);
$c = new C;
var_dump($c);

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文