0

可能重复:
我可以在 PHP 类中包含代码吗?
在数组中包含文件

我有这个 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",

我想将 ex.php 文件包含在“类”中的“公共静态 $__routes 数组”中

有点像

   <?php
   class Config {

   public static $__routes = array(

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

   include 'ex.php';

   );

   }

   ?>

请问我该怎么做?

4

2 回答 2

1

你不能,我已经在你的最后一个问题中解释了原因

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

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

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

class Config {

   public static $__routes = array(

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

   );

   // ...
}

Config::__routes += (include 'example.php');
于 2013-01-24T00:51:46.897 回答
0

那是行不通的。声明类属性时,您不能执行任何类型的评估。为什么不直接加入项目?

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

于 2013-01-24T00:41:58.523 回答