Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 设计,重复代码-需要一些建议吗_Php_Architecture - Fatal编程技术网

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实际上取决于你想做什么。继承将允许每个实例具有不同的值。集中式变量类将确保无论哪个对象访问变量,它都只有一个值。