gpt4 book ai didi

php - 限制哪些类可以扩展另一个类

转载 作者:可可西里 更新时间:2023-11-01 00:17:14 25 4
gpt4 key购买 nike

我目前正在编写一个包含一些抽象类的解决方案。其中一个应该只从其他几个类中扩展,因为从其他地方使用它可能会导致一些困惑。所以我想做的是限制哪些类可以扩展这个类。

因此,如果我有一个名为 ImportantStuff 的抽象类,我想说只有 A 类和 B 类能够扩展它,而任何其他类都不能。

您可能想知道为什么我会想要做这样的事情。好吧,代码是为工作而编写的,所以以后会有很多其他程序员使用它,所以我想向那些人说清楚,这个类不打算在任何其他地方使用。是的,我知道我可以将它写在类描述中并且我已经做到了,但我想通过阻止它来使其 100% 清楚,因为并非所有程序员都擅长阅读评论:) 另外我很好奇它是否可以在一个很好的时尚,因为我在网上找不到好的答案。

所以我的问题是:实现这一目标的最佳方法是什么?我想我可以发送一个 key 或在构造函数中处理的东西,但是有没有更简洁的方法来做到这一点?

最佳答案

嗯,使构造函数最终化(但添加一个 init 函数)并检查当前构造了哪个类,这是可能的,但至少需要 php 5.3

    abstract class bigOne{
private $_allowedClasses = array('smallOne');

final public function __construct() {
if(!in_array(get_called_class(), $this->_allowedClasses)){
throw new Exception('can not extend to Class: ' . get_called_class());
}
$this->init();
}

abstract public function init();
}

class smallOne extends bigOne{
public function init(){

}
}

class badOne extends bigOne{
public function init(){

}
}

$oSmallOne = new smallOne();
$obadOne = new badOne();

关于php - 限制哪些类可以扩展另一个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4602093/

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