Php 设计,重复代码-需要一些建议吗
我会尽可能清楚地解释我的情况 我正在建立一个框架。其系统包含以下目录:Php 设计,重复代码-需要一些建议吗,php,architecture,Php,Architecture,我会尽可能清楚地解释我的情况 我正在建立一个框架。其系统包含以下目录: 1) 核心-路由、主类(自动加载、配置、常量)、请求 2) 助手 3) 图书馆 在index.php中,我设置了所有最重要的配置变量,例如基本url或索引文件。我把它们放在“主类”里面 这些属性是私有的,因为我不希望任何人在请求流期间更改它们 因此,访问这些变量的唯一途径是从“主类”方法 现在,这些私有变量之一是$\u base\u url 我希望用户能够从更好的地方访问base_url,比如url类(在helper目录中
1) 核心-路由、主类(自动加载、配置、常量)、请求
2) 助手
3) 图书馆 在index.php中,我设置了所有最重要的配置变量,例如基本url或索引文件。我把它们放在“主类”里面 这些属性是私有的,因为我不希望任何人在请求流期间更改它们 因此,访问这些变量的唯一途径是从“主类”方法
现在,这些私有变量之一是
$\u base\u url
我希望用户能够从更好的地方访问base_url,比如url类(在helper目录中)
为了实现这一点,我必须创建两个方法——在“main类”中获取_base_url(),在url类中获取_base_url(),这两个方法的作用如下:
class Url {
public static function get_base_url() {
return Main_Class::get_base_url();
}
}
<?php class Variables {
static $_base_url = "http://base_url";
} ?>
我的问题是-我有几个这样的变量,我想从不同的类调用它们
我会有很多重复的代码
我看到的唯一解决方案就是直接在不同的类中设置这些变量,但我希望它们集中在主类中
我应该如何处理这个问题?您可以创建另一个名为variables(或任何您喜欢的)的类,然后将静态变量与该类一起使用,以便能够来回调用它们。大概是这样的:
class Url {
public static function get_base_url() {
return Main_Class::get_base_url();
}
}
<?php class Variables {
static $_base_url = "http://base_url";
} ?>
同样,这取决于你想要完成什么。如果希望变量的行为更像设置,或者只是希望在实例中包含这些变量 为什么需要从类名调用变量,如果类扩展了main类,则使用parent::get_base_url() 类不扩展MainClass。这可以解决我的问题,但我看不到helpers/library和主类之间的联系,因此没有任何继承。呃,继承与变量的集中类……在我的情况下,它们中的一个比另一个更好,还是我应该掷硬币呢PIt实际上取决于你想做什么。继承将允许每个实例具有不同的值。集中式变量类将确保无论哪个对象访问变量,它都只有一个值。