在类中包含数组中的文件

时间:2013-01-24 00:35:39

标签: php arrays class include

  

可能重复:
  Can I include code into a PHP class?
  Include file in array

我有这个PHP代码

   <?php
   class Config {

   public static $__routes = array(

   "Home"                    => "index.php",
   "Support"                 => "support.php",
   "Ads"                     => "ads.php",

   );

   }

   ?>

我有像这样的ex.php文件

"Upgrade"                 => "upgrade.php",
"Faq"                     => "faq.php",
"Tos"                     => "tos.php",

我想在&#34; public static $ __ routes array&#34;中包含ex.php文件。在&#34; class&#34;

有点像

   <?php
   class Config {

   public static $__routes = array(

   "Home"                    => "index.php",
   "Support"                 => "support.php",
   "Ads"                     => "ads.php",

   include 'ex.php';

   );

   }

   ?>

请问我该怎么做?

2 个答案:

答案 0 :(得分:1)

你不能,我已经在last question中解释了为什么

  

每个文件本身必须是有效的PHP代码,因为仅包含   在运行时发生(即,当达到这个确切的代码行时),而不是   在解析时(即文件加载时)

现在有什么不同,替代解决方案不起作用,因为你不能用表达式(即A + B)初始化类属性,只能用文字(标量值和标量值数组)

由于属性是静态的,你甚至不能使用构造函数,你必须在类之外分配它:

class Config {

   public static $__routes = array(

       "Home"                    => "index.php",
       "Support"                 => "support.php",
       "Ads"                     => "ads.php",

   );

   // ...
}

Config::__routes += (include 'example.php');

答案 1 :(得分:0)

那不行。声明类属性时,不能执行任何类型的求值。为什么不加入这些项目?

如果您只是必须在另一个文件中配置一些路由,那么我建议将此属性设置为受保护或私有,并使调用者使用静态方法来获取此信息。在这个静态方法中,您可以将静态属性数组中定义的路由与包含文件中的数组(不仅仅是您显示的数组段)中定义的路由连接起来,然后返回此合并数组。