可能重复:
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';
);
}
?>
请问我该怎么做?
答案 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)
那不行。声明类属性时,不能执行任何类型的求值。为什么不加入这些项目?
如果您只是必须在另一个文件中配置一些路由,那么我建议将此属性设置为受保护或私有,并使调用者使用静态方法来获取此信息。在这个静态方法中,您可以将静态属性数组中定义的路由与包含文件中的数组(不仅仅是您显示的数组段)中定义的路由连接起来,然后返回此合并数组。